という時、ありませんか?ありますよね。この「重い」には、実は種類があります。1つは「Muninの動いているサーバが重い」場合。もう1つは、動的にHTML/画像を生成している場合「Muninの描画(表示)が重い」場合です。
今回の記事は、「Muninの何が重いか?」を視覚化する munin_stat プラグインと、ノード毎のデータ収集時間を計測する munin_update プラグインをご紹介します。
■俺のMuninがこんなに軽いはずがない
Munin のサーバが重たい原因、一般的には、ノード数が増加して描画対象のグラフが増えることが多いと思います。思います、というのは、時に必ずしもグラフが原因でない場合も有るからです。また、ある時点で、グラフは動的生成に切り替えたくなる時があります(常にグラフを見ている訳でも無いのに、Muninは、5分毎に全部のグラフをご丁寧に作り直してくれるのです。。)。
具体的に Munin の何の処理が原因で重たくなっているか、調べるのは面倒です。通常は、ログを確認します。/var/log/munin/ 以下に書き出される各種のログのうち、たとえば、更新記録のログ munin-update.log の末尾には、次のような記録があります。
2013/07/02 22:35:12 [INFO]: Munin-update finished (11.23 sec)
これは、各ノードからデータ回収にかかった時間が 11.23 秒でした、という意味です。同様にグラフ生成や HTML 生成の時間も確認できます。
注意しなくてはいけないのは、Munin は、5分に1回 cron で自動実行される点です。Muninの処理は、データ収集→グラフ生成→HTMLページ生成→閾値確認の順番で、5分おきに実行します。そのため、もし、一連の処理が5分以上かかる場合は、サーバの処理能力不足です。
そのような状況を、客観的に推移として確認できるのが munin_stats プラグインです。そして、munin-update (データ収集 ) 時、どこか特定のノードで重たい処理が走っていないか確認できるのが、munin_update プラグインです。
■munin_stats プラグインと munin_update プラグインの有効化
作業自体はシンプルです。まずは、例によってシンボリックリンクを作成します。
# ln -s /usr/share/munin/plugins/munin_stats /etc/munin/plugins/ # ln -s /usr/share/munin/plugins/munin_update /etc/munin/plugins/
/etc/munin/plugin-conf.d/munin-node には、以下の2行を追加します。
[munin_*] user munin
これは、プラグインが実行するにあたり /var/log/munin/ 以下のログを参照します。そのログファイルの所有者が munin のため、このように設定しておきます。
次は munin-run を使った実行テストです。次のように、表示されるかどうか確認します。
# /usr/sbin/munin-run munin_stats update.value 40.65 graph.value U html.value 15.44 limits.value 0.22
graph.value が ‘U’ と表示されていますが、このコマンドを実行した環境では、グラフを動的生成しているため、ログが出力されていないためです。HTML も動的に生成している場合、html.value も ‘U’ となります。
もしも実行時「Can’t open /var/log/munin/munin-limits.log for reading」とエラーが出ることがあれば、ファイルの所有者やパーミッションを確認してください。
munin_update プラグインも、同様に動作確認します。
# /usr/sbin/munin-run munin_update localhost_localdomain.value 20.71 node1.value 49.77 node2.value 10.43 node3.value 20.96 www.value 38.01
ノード毎に、処理にかかった秒数が表示されます。
最後に munin-node を再起動して、設定を有効にします。
# /sbin/service munin-node restart
あとはグラフに反映されるまで待ちましょう。
※2013/07/03 21:52 追記。@namikawa さんからツッコミをいただきました、「重い」について補足させてください。ご指摘いただいたように、純粋に munin_upate による処理に時間がかかることと、Munin の稼働するサーバが重いこと、描画する画面表示が重いことは、直接はイコールではありません。ご指摘ありがとうございました。色々皆様からツッコミ、お待ちしておりますm(__)m