GNU/Linux >> Linux の 問題 >  >> Linux

nmonを使用したLinuxシステムパフォーマンスのトラブルシューティングと監視

ナイジェルのモニター(nmon )は、元々IBMによってAIXオペレーティングシステム用に開発され、後にいくつかのCPUアーキテクチャ上のLinux用に移植されたシステムパフォーマンス監視ツールです。

nmonの主な利点 つまり、CPU使用率、メモリ、ディスクビジー、ネットワーク使用率など、システムのさまざまな側面を1つの簡潔なビューで監視できます。 nmonなし 、topなどの専用の監視ツールを使用する必要があります プロセスの場合、iostat ディスクの場合、およびifstat ネットワークがさまざまなリソースを監視するため。それぞれが異なる方法でデータを表示します。

nmonを使用しました 約10年前にAIXシステム管理者として初めて。 nmonを使用する 、最初はネットワークのボトルネックのように見えた問題など、見つけにくい問題のトラブルシューティングを行うことができました。 nmonを使用して複数のリソースを同時に検査する 、開いているファイルが多すぎるために発生したアプリケーションの問題であることがわかりました。

システムをインタラクティブに監視するだけでなく、nmonを使用することもできます。 バッチモードで、分析のためにパフォーマンスデータを収集して保存します。 nmonの詳細については Linuxの場合は、プロジェクトの公式ページを参照してください。

この記事では、この強力な監視ツールについて説明します。インストールすることから始めます。

nmonのインストール

nmon 多くのLinuxディストリビューションのデフォルトリポジトリで利用できます。たとえば、DNFを使用してFedora 35にインストールします:

$ sudo dnf -y install nmon

Red Hat Enterprise LinuxまたはCentOSの場合、nmon エンタープライズLinux(EPEL)リポジトリの追加パッケージで利用できます。

nmonをインストールするには 、最初にEPELを有効にします:

$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

$ sudo dnf repolist

次に、nmonをインストールします dnfを使用する :

$ sudo dnf -y install nmon

これで、nmonがインストールされました。 、システムの監視に使用してください。

nmonをインタラクティブに使用する

アプリケーションをインストールしたら、nmonを実行して、システムをインタラクティブに監視できます。 。システム情報と小さなヘルプメニューを含む初期画面が表示され、さまざまなメトリックを切り替えるために押すことができるキーが表示されます。

$ nmon

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:04:27────┐
│                                                                 │
│------------------------------                                   │
│ _ __  _ __ ___   ___  _ __    For help type H or ...            │
│| '_ \| '_ ` _ \ / _ \| '_ \    nmon -?  - hint                  │
│| | | | | | | | | (_) | | | |   nmon -h  - full details          │
│|_| |_|_| |_| |_|\___/|_| |_|                                    │
│                               To stop nmon type q to Quit       │
│------------------------------                                   │
│                                                                 │
│Fedora release 35 (Thirty Five) VERSION="35 (Thirty Five)"       │
│Vendor=AuthenticAMD Model=AMD EPYC-Milan Processor               │
│MHz=1911.004 bogomips=3822.00     lscpu:CPU=4 Little Endian      │
│ProcessorChips=4 PhysicalCores=1        Sockets=4 Cores=1 Thrds=1│
│                 VirtualCPUs =4         MHz=0 max=0 min=0        │
│                                                                 │
│Use these keys to toggle statistics on/off:                      │
│  c = CPU         l = CPU Long-term     - = Faster screen updates│
│  C = " WideView  U = Utilisation       + = Slower screen updates│
│  m = Memory      V = Virtual memory    j = File Systems         │
│  d = Disks       n = Network           . = only busy disks/procs│
│  r = Resource    N = NFS               h = more options         │
│  k = Kernel      t = Top-processes     q = Quit                 │
│─────────────────────────────────────────────────────────────────│

たとえば、 Cを押します CPU使用率の表示を切り替えます:

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:05:58─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0          |25   |50 |75   100|   │
│  1   3.6  17.2   0.0  79.2|Ussssssss>                    |   │
│  2   2.1   6.2   0.0  91.7|Usss    >                     |   │
│  3   0.0   1.1   0.0  98.9| >                            |   │
│  4   6.1  17.2   0.0   0.5|UUUssssssss>                  |   │
│---------------------------+---------------------------------+│
│Avg   3.0  10.3   0.0  86.7|Usssss>                       |   │
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│

Nを押す ネットワーク表示を切り替えて、CPU表示の下に自動的にスタックします:

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:17:01─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0         |25    |50  |75  100|   │
│  1   2.6  10.3   0.0  87.1|Usssss     >                  |   │
│  2   0.0   2.2   0.0  97.8|s           >                 |   │
│  3   6.5  11.0   0.0  82.5|UUUsssss>                     |   │
│  4   0.0   0.5   0.0  99.5|               >              |   │
│---------------------------+---------------------------------+│
│Avg   2.4   5.9   0.0  91.6|Uss     >                     |   │
│---------------------------+---------------------------------+│
│ Network I/O ─────────────────────────────────────────────────│
│I/F Name Recv=KB/s Trans=KB/s p_in p_out in_sz out_sz Peak->..│
│      lo      0.0       0.0       0.0    0.0     0.0    0.0...│
│  enp1s0      0.0       0.0       0.5    0.0    52.0    0.0...│
│  enp7s0    218.6    5923.4    3335.5 9989.68   67.1  607.2...│
│ Network Error Counters ──────────────────────────────────────│
│I/F Name iErrors iDrop iOverrun iFrame oErrors   oDrop oOver..│
│      lo       0       0       0       0       0       0   ...│
│  enp1s0       0   34419       0       0       0       0   ...│
│  enp7s0       0   34419       0       0       0       0   ...│
│──────────────────────────────────────────────────────────────│

他のキーを押し続けて、同じビューに追加のメトリックをスタックします。たとえば、 Dを使用します ディスクI/Oの場合、 M メモリ用、および T トッププロセス向け。

新しいモニターをスタックするだけでなく、ドットキーまたはピリオドキー(。)を押して、ビジー状態のCPUとディスク、および +のみを表示することもできます。 および- 画面の更新時間を増減します。 Hを使用する ヘルプを表示します。

さまざまなモニターと指標をいつでも有効または無効にできるため、nmon は、システムの動作を理解するのに役立つ非常に柔軟なツールです。また、さまざまなメトリックを同時に表示し、システムの全体像を提供し、問題を理解する能力を向上させることにより、問題のトラブルシューティングにも役立ちます。

完了したら、 Qを押します 監視セッションを終了して終了します。

パフォーマンスデータを収集する

システムの全体的でインタラクティブなビューを提供することに加えて、nmonを実行することもできます。 バッチモードで、事後分析のためにシステムから長期間のパフォーマンスデータを収集します。

この機能を使用すると、インタラクティブモードで提供されるリアルタイムのメトリックに加えて、システムが長期間にわたってどのように動作するかを理解できます。これは、キャパシティプランニングと、ライブで把握するのが難しい散発的な問題のトラブルシューティングを可能にする強力な機能です。

nmonを実行するには バッチで、フラグ-fを使用します アプリケーションを起動するとき。これは、提供される最初のパラメーターである必要があります。デフォルトでは、nmon 1日5分ごとにデータを収集します。パラメータ-sを指定することにより、これらのデフォルト値を変更できます。 収集間隔と-c スナップショットの数。

たとえば、nmonを有効にするには バッチモードでは、トッププロセスのキャプチャを含む1時間、毎分データを収集します-t 、次のコマンドを実行します:

$ nmon -f -s60 -c60 -t

このコマンドを実行すると、アプリケーションがバックグラウンドで実行されるため、ターミナルプロンプトがすぐに戻ります。 psを使用して実行されていることを確認できます :

$ ps -ef | grep nmon
ricardo 1849 1 0 12:27 pts/0 00:00:00 nmon -f -s60 -c60 -t

バッチモードでは、nmon 拡張子が.nmonのコンマ区切り値(CSV)形式を使用して、収集されたデータを保存します 現在のディレクトリ:

$ ls -l
total 36
-rw-r--r--. 1 ricardo ricardo 36395 Feb 13 12:28 f35ks01_220213_1227.nmon

これはCSVファイルであるため、他のLinuxテキスト操作コマンドラインツールを使用して処理するか、スプレッドシートソフトウェアを使用して開いてさらに分析することができます。

$ head f35ks01_220213_1227.nmon
AAA,progname,nmon
AAA,command,nmon -f -s60 -c60 -t
AAA,version,16k
AAA,disks_per_line,150
AAA,max_disks,256,set by -d option
AAA,disks,10,
AAA,host,f35ks01
AAA,user,ricardo
AAA,OS,Linux,5.16.8-200.fc35.x86_64,#1 SMP PREEMPT Tue Feb 8 20:58:59 UTC 2022,x86_64
AAA,runname,f35ks01

これらのメソッドに加えて、nmon 開発チームは、このデータをWebブラウザを使用して視覚化できるグラフに変換するためのスクリプトを提供します。次にそれを行う方法を見ていきます。

[タスクを実行する方法が十数個なければ、Linuxではありません。ソフトウェアをインストールするさまざまな方法については、Linuxにアプリケーションをインストールするためのこのガイドをダウンロードしてください。 ]

グラフを生成する

CSVは、スプレッドシートプロセッサソフトウェアなどのさまざまなアプリケーションを使用して、このデータをエクスポート、分析、および表示できる柔軟な形式です。 nmon 開発者はnmonchartを作成しました 少し簡単にします。このシェルスクリプトは、Google Charts JavaScriptを使用してこのデータをHTMLに変換し、グラフィカル環境でデータを視覚化して操作します。

nmoncartを使用するには 、nmonからダウンロードします ホームページ:

$ curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar

次に、tarを使用してパッケージのコンテンツを抽出します :

$ mkdir nmonchart

$ tar xvf nmonchart40.tar -C nmonchart

nmonchart Kornシェル(ksh)を使用するため、グラフを作成するには、最初にkshをインストールします。 システムでdnfを使用 :

$ sudo dnf install -y ksh

次に、.nmonを変換します nmonを実行したときに作成されたファイル 次のコマンドを使用してバッチモードで:

$ ./nmonchart/nmonchart f35ks01_220213_1227.nmon 

スクリプトは、ソース.nmonと同じ名前のHTMLファイルを作成します ファイル。オプションで、宛先ファイル名を2番目のパラメーターとしてnmonchartに指定できます。 。次に例を示します:

$ ls -lg
total 4164
-rw-r--r--. 1 ricardo 113822 Feb 14 18:52 f35ks01_220213_1227.html
-rw-r--r--. 1 ricardo 93436 Feb 13 13:26 f35ks01_220213_1227.nmon
drwx------. 2 ricardo 4096 Aug 28 2020 nmonchart

これで、システムチャートの準備が整いました。次のステップはそれらを表示することです。

[Bashシェルスクリプトのチートシートを入手してください。 ]

パフォーマンスチャートを視覚化する

nmonchart .nmonごとに1つのHTMLファイルを作成します 必要なチャートJavaScriptライブラリが埋め込まれたソースファイル。ローカルマシンにHTMLファイルがある場合は、Webブラウザで直接表示します。

Webサーバーを使用してこれらのファイルを提供することもできます。これを行うための私のお気に入りの方法の1つは、ツールボックスに追加する20の1行のLinuxコマンドで提案したように、PodmanコンテナーでNginxを使用することです。

まず、ディレクトリを作成し、そこにHTMLファイルを移動します:

$ mkdir html

$ mv f35ks01_220213_1227.html html/

次に、Podmanを使用してhtmlのコンテンツを提供します ポート8080でNginxを使用するディレクトリ:

$ podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx

必要に応じて、サーバーのファイアウォールでポート8080を開いて、トラフィックを許可します。

$ sudo firewall-cmd --add-port 8080/tcp 

次に、ブラウザでURL http://<YOUR_SERVER_IP_ADDR>:8080/f35ks01_220213_1227.htmlを指定します。 グラフを表示するには:

画面上部のボタンのいずれかをクリックして、対応するグラフを表示します。チャートはインタラクティブです。ズームインおよびズームアウトしてより詳細なデータを表示したり、グラフの上にマウスを置いて特定の時間の詳細データを表示したりできます。

まとめ

nmon は柔軟で強力なシステム監視アプリケーションであり、システムをよりよく理解し、問題が発生した場合にトラブルシューティングするのに役立ちます。さまざまなシステムリソースからのリアルタイムデータを監視および統合し、長期的なパフォーマンスデータの収集と分析を行う機能を組み合わせることで、システム管理者のベルトに含めることができる素晴らしいツールになります。


Linux
  1. procps-ngを使用してターミナルでLinuxシステムを監視します

  2. LinuxでSmartctlを使用してハードドライブの状態を監視および分析する

  3. LinuxでのNFSパフォーマンスの問題をトラブルシューティングするためのnfsstatおよびnfsiostatの使用

  1. Sysstatを使用してLinuxシステムのパフォーマンスを監視する方法

  2. PrometheusとGrafanaでLinuxサーバーを監視する

  3. Linux システムを監視するために Glances をインストールして使用する方法

  1. noatimeでLinuxシステムのパフォーマンスを向上させる

  2. 例を使用して Linux のシャットダウンおよび再起動コマンドを使用する方法

  3. iostat を使用して Linux でシステム パフォーマンスを監視する (例を含む)