RHEL6/CentOS6でMunin 2.0.16 セットアップ&動的設定

RHEL6/CentOS6でMunin 2.0.16 セットアップ&動的設定 はてなブックマーク - RHEL6/CentOS6でMunin 2.0.16 セットアップ&動的設定


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 いつ始めるの? 今でしょ!! ←ごめんなさい、一回書きたかっただけです(;´Д`)

■事前準備

■munin のセットアップ

作業の流れは、以下の通りです。

  1. munin を yum で入れる
  2. munin-node ( エージェント) を起動する
  3. http://<ホスト名/munin/ で見えるようになる
  4. 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