インフラサーバー監視ツール「munin」の各グラフの意味と読み方。muninをインストールすると標準でたくさんのグラフが出力されます。「いったいこれは何なのか」と疑問に思っていたので調べてみました。内容から出力されていて、さらにそのほとんどが単なるperlスクリプトやシェルスクリプトでした。このpluginが実際はどのようなコマンドを使った結果なのかを確認しながら調べました。プログラムにはあまり明るくない&英語が苦手、なので意味違いしている可能性がありますのでお気づきの点がありましたらコメントを頂けると嬉しいです。使用したmuninバージョンは1.4.5です。/proc/以下から参照されているようで以下のページがとても役に立ちました。1秒間で行ったI/O数の平均値を出力します。グラフを見てると入出力したkbyte数も出力してくれるようです。詳細は以下のカーネルドキュメント。http://www.kernel.org/doc/Documentation/iostats.txt各項目の意味はこちらが詳しいです。クリックで、各ディスクごとの読み書きにかかる時間を表示します。この時間はsyscallがアプリケーションとデバイスを行き来する平均時間から算出されている?みたいです。単位はミリセカンド(1000分の1秒)。1秒間に読み書きしたバイト数を表示します。ファイルシステムごとのディスク使用率を%で表示。元コマンドはdfコマンドです。クリックで、各ディスクごとのIO使用率を表示します。LinuxではI/Oリクエストの発生中は1ミリセカンドごとにインクリメントするカウンターを使っています。このカウンターが1秒の間に1000msecぶんインクリメントされるとI/Oリクエストの発生が100%とほぼ近い値になります。このプラグインは上記の考えからディスクへのIO使用率を%にて提供してくれます。5分ごとの計測なので当然、瞬間的な表示の取得はできません。df_inodeファイルシステムごとのinode使用率を%で表示。元コマンドはdfコマンドです。デバイスごとの書き込み/読み込みの遅れをグラフ化してくれます。書き込み/読み込みにかかった時間を成功回数で割った時間です。10の-5乗という意味。このグラフが大きければ大きいほどIOがヤバイという事になります。値を取得し前回取得した数の差分を求めて計算する事でグラフ化されています。デバイスごとの書き込み能力をグラフ化してくれます。こちらは表示の仕方が特殊で1秒間に読み書きに成功したセクタ数が出力されています。グラフの+項目が書き込み、-項目が読み込みの値となっています。muninがデータを取得し、グラフ、html出力など、4つの作業ごとにかかった時間を出力します。セッションを管理しています。iptablesを通ったパケットは現在の接続状態などを上記のテーブルへ記録します。このプラグインではそのテーブルを参照し、現在の状態別の接続数を表示してくれます。SYNを送信した状態。ASSUREDフラグの数。NATの数?詳細はちょっとわからなかったです。実態は以下のコマンドで出力される内容です。パケットのエラー数を計測します。個人的には信頼できないNICとして交換を視野に入れます。実態は以下のコマンドで出力される内容です。パケットの転送料を計測します。/proc/net/devの値を取得しています。inがマイナス、outがプラスとしてグラフ出力されます。1秒間に転送したパケット数を表示します。IP:行の値を取得してこちらの値を元に計算されています。wgetにて取得、その時間をtimeコマンドで取得し表示します。変更すれば可能だと思います。セッションを管理しています。これがいっぱいになると以下のようなログが出て通信がまったく出来なくなる状態となります。[/code]このグラフでは現在のip_conntrackの上限値と使用数を表示してくれます。値(現在の使用値)です。メモリと相談しながら上限をあげたり対策を行いましょう。1秒間にfork(プロセスのコピーを生成する事)された数を表示します。行(プロセスやスレッドが作成された数)の値を取得しています。スレッドとは一つのプロセスの中で平行に処理を行いたい場合などに使用されます。このグラフではスレッドがシステム全体でいくつ作られたスレッド数を表示します。/proc以下にあるプロセスIDのディレクトリからThreadsの値を取得した合計値です。実際には以下のようなコマンドで表示されていました。プロセスの総数をそれぞれの状態別に表示してくれます。プロセスの優先度ごとの数を表示します。元コマンドはpsでstat項目の内容で判断しています。して集計されています。実行中であるプロセス数、スリープ状態にあるプロセス数をグラフ表示します。vmstatコマンドのproc行にあるrとbの値をそれぞれ取得しています。b:割り込み不可能なスリープ状態にあるプロセス数rは実行可能でCPUの割当をまっている状態のプロセス数なのでグラフではrunningと表示されていますが、実際には実行中ではないような気がします。この値はロードアベレージとほぼ同じ値を示します。bはスリープ状態にあるプロセス、、ですがほとんどの原因はI/O待ちで、I/O待ちプロセス数と言い換える事ができます。エントロピー(entropy)は乱雑さを意味します。鍵ファイルの生成などランダムな文字列を作成する時に使用されます。このエントロピーが徐々に枯渇していき、乱数発生の際などに極端に動作が遅くなる事があります。通常は3000とかくらいまであればいいんですが、仮想サーバーだと思うように溜まらないようです。今の所問題になるほどの遅延は発生していませんがVMWareやさくらのVPSとかで150程度。物理サーバーだと3000くらいはすぐに溜まります。使用可能なエントロピーの値は以下のコマンドで取得でき、グラフ生成も以下のコマンドで行われています。CPUの使用率を表示します。コア数ぶん表示するので、例えばコア2、ハイパースレッディング対応の場合はMAXが400%となります。iowaitの値を確認します。