Munin をご存知でしょうか? Munin はサーバーリソースの監視ツールで、さまざまなデータをグラフィカルに表示してくれます。

Munin はとてもシンプルで、セットアップも簡単です。

ここでは、最近 munin をセットアップしたときの設定を書き留めておきます。 Ubuntu 18.04 LTS を使っている前提で進めます。

$ sudo apt update
$ sudo apt install munin munin-node nginx

Nginx の設定

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location /munin {
            alias /var/www/html/munin;
        }

        location ^~ /munin-cgi/munin-cgi-graph/ {
            access_log off;
            fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_pass unix:/var/run/munin/fastcgi-graph.sock;
            include fastcgi_params;
        }

}

nginx を再起動します。

$ sudo service nginx restart

Munin の設定

munin.conf

dbdir   /var/lib/munin
htmldir /var/www/html/munin
logdir /var/log/munin
rundir  /var/run/munin

[servername1.domain]
    address 127.0.0.1
    use_node_name yes

[servername2.domain]
    address [ip address]
    use_node_name yes

Munin を FCGI として動かす

$ sudo chown -R munin:www-data /var/run/munin
$ sudo spawn-fcgi -s /var/run/munin/fastcgi-html.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-html
$ sudo spawn-fcgi -s /var/run/munin/fastcgi-graph.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-graph

ここが一番ややこしい部分です。

デフォルトでは /var/run/munin の所有者は munin です。しかし実行時には、nginx のユーザー(www-data)がこのソケットにアクセスします。 /var/run/munin は munin と www-data の両方からアクセスできる必要があります。

まず、このディレクトリの所有者を変更します。 /var/run/munin の所有者を munin とし、www-data グループに属するユーザーもそこでデータの読み書きができるようにします。 munin はバックエンドのデータを更新するために cron ジョブを実行しており、cron ジョブのたびにこのディレクトリをチェックしているのを確認しました。 ソケットファイルは読み取り専用ですが、それ以外のファイルは munin の cron によって上書きされる可能性があります。そのため、所有者を munin にしています。

次に、FCGI プロセスは www-data(nginx のユーザー)で動かす必要があります。Apache とは異なり、Nginx は CGI を直接実行できず、代わりに CGI デーモンを読み込みます。 サーバーのロードアベレージの観点では、FCGI はメモリ上に常駐し続けるため CGI よりも効率的です。CGI の場合、ユーザーが Web サーバーにアクセスするたびに、Web サーバーがアプリケーションのプロセスを起動します。これは非常に重く、Web サーバーのリソースの面でも非効率です。

現在では、CGI を採用している Web アプリケーションフレームワークは存在しません。

Munin の再起動

$ sudo service munin-node restart

Munin ノードのインストール

すべてのノードで以下を実行します。

$ sudo apt update
$ sudo apt install munin-node

munin-node.conf

次の行を追加します。

allow ^12\.34\.56\.78$ # master server ip address

ノードを再起動します。

$ sudo service munin-node restart

ブラウザで監視する

おめでとうございます。これで準備完了です。あとは http://{your address}/munin にアクセスするだけです。 美しいグラフが表示されるはずです。すべてのデータは 5 分ごとに更新されます。

よい監視ライフを!