EPEL リポジトリを使った Munin のセットアップが、非常に簡単になりました。これまでは yum で入れた場合でも、細かな調整が必要でした。たとえば、グラフのダイナミック・ズーミング機能、以前は面倒でしたが、今はもう簡単できます。
今日の投稿は、munin を yum で入れる方法(所要時間5分)。そして、動的にグラフや HTML ページを生成するための方法(所要時間10分)をご紹介します。
Munin のバージョンは 2.0.16 (2013年6月3日配付)が最新安定版です。EPELのものも 2.0.16 に追いつきました。Version 2.0 がリリースされてから、毎月のようにバージョンアップが続いていましたが、ようやく一段落。開発チームでは次期バージョン 2.1.x 系の開発が進んでいます。
Munin いつ始めるの? 今でしょ!! ←ごめんなさい、一回書きたかっただけです(;´Д`)
■事前準備
- EPEL リポジトリを有効化すること
■munin のセットアップ
作業の流れは、以下の通りです。
- munin を yum で入れる
- munin-node ( エージェント) を起動する
- http://<ホスト名/munin/ で見えるようになる
- BASIC 認証設定を行う
まず、yum で munin (本体) と、 munin-node (データ収集エージェント) をセットアップします。
# yum install munin munin-node
必要なパッケージの依存性が多数発生します。「y」を入力し、セットアップを行います。
次に、エージェント ( munin-node ) を起動し、サーバ起動時にも自動起動する設定をします。起動すると、データの収集・グラフ化ができるようになります。
# /sbin/service munin-node start Starting Munin Node: [ OK ] # /sbin/chkconfig munin-node on
BASIC 認証の設定を行います。以下、ユーザ名を ‘muninadmin’ とした場合ですが、任意の ID を指定できます。
# htpasswd -c /etc/munin/munin-htpasswd muninadmin New password: <画面に表示されませんが、パスワード入力> Re-type new password: <再入力> Adding password for user muninadmin
※BASIC認証が不要であれば、 /etc/httpd/conf.d/munin.conf の当該行をコメントアウトし、認証を回避することもできます。
最後に、この認証設定を有効にするため、Apache の再起動を行います。
# /sbin/service httpd restart
あとは、ブラウザから http://<ホスト名/munin/ にアクセスします。BASIC 認証の動作確認を行います。設定直後にアクセスしても、データが無いので ‘Forbidden’ が表示されます。約10分までば表示されますが、おいそぎの場合は、次のコマンドを実行しても表示されます。
# sudo -u munin /usr/bin/munin-cron
以上で、設定作業は終わりです。
■グラフを動的に生成する
Munin は、cron で実行するタイミング(5分に1回)、全ての画像及び HTML ファイルを生成します。誰も見ていなくても生成しつづけるため、監視対象が増えてくるとサーバの負荷(主にディスク I/O)が増えがちになります。
そのような時に効果的な手法の1つが、グラフ画像を動的に生成する方法です。設定は非常に簡単です。/etc/munin/munin.conf を開きます。40行目に注目します。
graph_strategy cgi
初期状態は「cron」ですが、このように「cgi」と書き換えると、グラフを動的に生成します。
※munin.conf を変更した後、5分以内の cron 実行のタイミングか、’sudo -u munin /usr/bin/munin-cron’ を手動実行した後から有効です。
※CGIの実体は /var/www/cgi-bin/munin-cgi-graph です。
mod_fcgi や nod_fastcgi が Apache に組み込まれている場合、これらの機能を使うこともできます。ですが、サーバ台数が数台程度であれば、さほどグラフ生成がサーバの負荷にもならず、グラフ描画に時間が掛かる事もないでしょうから、特に設定する必要は無いと思います。
■ページを静的に生成する
グラフだけでなく、HTML ページも動的に生成できます。とはいえ、サーバ数台程度であれば、さほど I/O がサーバの負担にならないので、効果は認めにくいかもしれません。サーバ台数が増え、HTML ページ生成がサーバの負担になるなら、ページの静的生成を検討すべきでしょう。
なお、静的に生成する場合は mod_rewrite が Apache に組み込まなくてはいけません。
設定は /etc/munin/munin.conf を開き、69行目を探します。
html_strategy cgi
「corn」と書かれている所を「cgi」に書き換えます。
次に Apache の設定です。<VirtualHost> ディレクティブ内で、mod_rewrite の記述を行います。オフィシャルの Munin ドキュメントは、バーチャルホストを切り、その直下でグラフを表示する方法が紹介されています。
ここでは、シンプルに、静的に生成していた時と同じように、/munin/ でアクセスできる設定を行います(他のコンテンツと共存出来るように)。
/etc/httpd/conf.d/munin-cgi.conf を作成し、以下の様に記述します。
# based by http://munin.readthedocs.org/en/latest/example/webserver/apache-virtualhost.html <VirtualHost *:80> ServerName munin.example.jp ServerAdmin info@example.jp DocumentRoot /var/www/html/ ErrorLog /var/log/httpd/munin.example.jp-error.log CustomLog /var/log/httpd/munin.example.jp-access.log combined RewriteEngine On # workaround for some static content RewriteRule /munin/static/(.*) /var/www/html/munin/static/$1 [L] # HTML RewriteCond %{REQUEST_URI} .html$ [or] RewriteCond %{REQUEST_URI} =/ RewriteRule ^/munin/(.*) /var/www/cgi-bin/munin-cgi-html/$1 [L] # Images RewriteRule ^/munin-cgi/munin-cgi-graph/(.*) /$1 RewriteCond %{REQUEST_URI} ^/munin-cgi/(.*) RewriteCond %{REQUEST_URI} .png$ RewriteRule ^/(.*) /var/www/cgi-bin/munin-cgi-graph/$1 [L] <Directory "/var/www/cgi-bin"> Options +ExecCGI SetHandler cgi-script </Directory> </VirtualHost>
ServerName やログの部分などは、適時置き換えて下さい。既に <VirtualHost>の記述がある場合は、そこに追加するのが簡単です。
最後に apache を再起動すると、設定が有効になります。
■まとめ
Munin を使うには、以前は結構面倒な所がありました。正直。まして、動的生成なんて、ドキュメント通り作業しても動かない事もあったように思います。yum を使って、ここまで簡単にできるようになってますので、これまで挫折した方も、是非お試しいただければなと思います( ^ω^)
参考になった所
Apache virtualhost configuration — Munin 2.1.2-35-gd0f5618 documentation
http://munin.readthedocs.org/en/latest/example/webserver/apache-virtualhost.html
もし、サーバ台数が増えてきて、Munin サーバの動作が重たくなるような事があれば、@namikawa さんや、@kuwa_tw さんの記事が参考になると思います( ^ω^)
muninの表示がクソ重くなっていたのを劇的に改善した話 – 元RX-7乗りの適当な日々
http://d.hatena.ne.jp/rx7/20130308/p2
Munin 2.0にLazy Load Plugin for jQueryを組み込むと快適になる話 – 256bitの殺人メニュー
http://d.hatena.ne.jp/akuwano/20121116/1353034421