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