Muninのグラフを動的生成にする (Ubuntu 10.04 LTS)

Ubuntu 10.04 LTS環境で、Muninのグラフを動的生成にしたので手順メモ。

まずは Munin 導入

apt-get install munin munin-node

監視先サーバの変更やmunin-nodeの設定などは、ここでは触れないので他のサイトを参照してください。

ついでに、5分値の保存期間を延ばします。これはディスク利用量が増えるので任意です。

  • vi /etc/munin/conf
  • 監視先サーバの前に以下を追加
    • graph_data_size huge

なお、現在のMuninには過去の値を期間指定で表示するUIが無いので、どうしても必要な場合にRRDtoolを直接利用する必要があります。

Muninの生成するHTMLにて、グラフへのリンク先をfastcgiに変更

/etc/munin/munin.conf に以下を追加します。

graph_strategy cgi
cgiurl_graph /cgi-bin/munin-fastcgi-graph

munin-fastcgi-graph の不具合修正

/usr/lib/cgi-bin/munin-fastcgi-graph を編集し、74行目のsplitに引数を追加してください。

    ($dom, $host, $serv) = split /\//, $path, 3; # $path の後ろに 3 を追加

もしくは、munin-fastcgi-graph をダウンロードしてパッチ当てでも可。

cd /usr/lib/cgi-bin
patch -p0 < ~/munin-fastcgi-graph.diff

cron内でのグラフ生成を停止

/usr/bin/munin-cronを編集し、munin-graphの二行をコメントアウト

もしくは、munin-cron.diff をダウンロードしてパッチ当てでも可。

cd /usr/bin
patch -p0 < ~/munin-cron.diff

ログファイルや画像保存先のパーミッションを変更

Apacheの実行グループがwww-dataと仮定しています。

touch -m 664 /var/log/munin/munin-cgi-graph.log /var/log/munin/munin-graph.log
chmod g+w /var/log/munin/munin-cgi-graph.log /var/log/munin/munin-graph.log
sudo chgrp www-data /var/log/munin/munin-cgi-graph.log /var/log/munin/munin-graph.log

sudo chgrp www-data /var/log/munin
sudo chmod g+w /var/log/munin

sudo chgrp www-data /var/run/munin
sudo chmod g+w /var/run/munin

sudo chgrp -R www-data /var/cache/munin/www
sudo chmod -R g+w /var/cache/munin/www

fastcgiの実行環境を整える

いくつか必要なライブラリやApacheモジュールを導入します。

apt-get install libapache2-mod-fcgid libcgi-fast-perl

Ubuntu 10.04 LTSであれば mod_fcgid(libapache2-mod-fcgid)の導入時に有効化されるようなので、そのまま以下を追加します。

<Location /cgi-bin/munin-fastcgi-graph>
        SetHandler fcgid-script
</Location>

また、サイト設定( /etc/apache2/sites-available/default 等)にて、以下を追加します。

<Location /cgi-bin/munin-fastcgi-graph>
        SetHandler fcgid-script
</Location>

もし独自にサイト設定を書いていれば、以下も必要です。

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
</Directory>

logrotateの設定

毎日ログファイルをリネームするlogrotateがファイルのパーミッションを再設定してしまうため、/etc/logrotate.d/munin も変更します。

まずは、最初から存在する munin-graph.log のログ設定の、create 行を create 660 munin www-data に変更します。

/var/log/munin/munin-graph.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 660 munin www-data
}

次に、以下を末尾に追加します。このファイルに、ブラウザ上から画像ファイルを表示する度に起動されるfastcgiプログラムのログが出力されます。

/var/log/munin/munin-cgi-graph.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 660 www-data www-data
}

参考URL

この作業にあたり以下のサイトを参考にしました、というかほとんどUbuntu向けの焼き直ししただけです。