muninによるサーバリソース可視化
先日あたらしいVPSを契約したのですが、こちらはコントロールパネルの機能がほんとうにショボくて、今じゃ当たり前のリソースグラフとか監視アラートのようなものは一切ありません。
というわけで、サーバリソースの可視化をしてみることにしました。思い起こしてみると、まだ物理サーバを自宅に置いていた頃はCPU温度の監視などもあって MRTGを入れたりしていましたね。懐かしい。
いま監視関係のサービスを入れるにはいろいろな選択肢がありますが、zappix や nagiosはちょっと大げさすぎ、 monit(過去に使ったことあり)では機能が低すぎ、というわけで、若干古いプログラムですが、muninを入れてみました。
インストールは非常に簡単で、ubuntuなら以下1発です。
sudo apt install munin
これで必要なものは芋づる式に入ってくれます。
本体設定は /etc/munin/munin.conf の以下4箇所をコメントアウトするだけで動きます。
#dbdir /var/lib/munin
#htmldir /var/cache/munin/www
#logdir /var/log/munin
#rundir /var/run/munin
あとは /etc/munin/munin.conf, munin-node.confの中にある localhsost.localdomain を適宜お好みのものに書き換えておきましょう(表示に利用されるだけなのでどう書いてもOK)
また /etc/munin/plugins/ を覗いてみると、/usr/share/munin/plugins からのシンボリックリンクがたくさんあるので、これを追加したり削除したりして監視項目を選べばいいとわかります。ただし、先に行ったとおり muninは結構古いプログラムなので、あちこち手直しが必要かも知れません。例えば apache 関連のモジュールをみてみると監視先が80番ポート決め打ちになっていますので、443番ポートに書き換えるなどしないといけません。まぁプログラミングわからない人でも、Linuxに慣れていれば自分で直せると思います。
データは httpもしくは telnet で取得します。 httpに関しては /etc/munin/apache24.conf というファイルが用意されているので、これを自分の環境に合わせて利用しましょう。
わたしは以下のように書き換えて /etc/apache2/site-enabled に突っ込んで、あとはダイジェスト認証などを追加しておきました。
criptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
Alias /munin/static/ /var/cache/munin/www/static/
<Directory /var/cache/munin/www>
Allow from all
Require all granted
AllowOverride All
# Require local
Options None
</Directory>
<Directory /usr/lib/munin/cgi>
Allow from all
Require all granted
# Require local
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Directory>
# ***** SETTINGS FOR CGI/CRON STRATEGIES *****
# pick _one_ of the following lines depending on your "html_strategy"
# html_strategy: cron (default)
Alias /munin /var/cache/munin/www
Options FollowSymLinks
# html_strategy: cgi (requires the apache module "cgid" or "fcgid")
#ScriptAlias /munin /usr/lib/munin/cgi/munin-cgi-html
telnet の場合は 4949番ポートを叩いてコマンドを打てばテキストで結果が帰ってきます(コマンド例: fetch df:disc usage を取得)。
あとは munin には障害通知機能とかがないので、死活監視・しきい値超えアラートなどは自前で簡単なスクリプトでも書いて対応ですかね。