支社のインフラ部の素振りとして、munin の設定を hsbt.org でしてみた。
hsbt.org は debian と gentoo のサーバーを適当に振り分けて作られているので、今回は debian で munin-cron と munin-node, gentoo で munin-node という構成にした。
munin は SNMP を介した死活監視、モニタリングソフト。システムの動きとしては、munin-node がクライアントとして各サーバーの情報を収集する役目、munin-cron が munin-node が集めたサーバーの情報を SNMP 経由で受信して RRD 作成とWeb表示用の静的コンテンツを作成するという役目。他にも死活監視用の munin-limit というのもあるみたいだけどそれはまた今度。
インストールは debian なら munin と munin-node, gentoo なら munin でだいたい入る。
munin-cron では /etc/munin/munin.conf に収集対象のサーバーを定義するのみ。これは debian でも gentoo でも共通。
[foo.hsbt.org] address aaa.bbb.ccc.ddd use_node_name yes [bar.hsbt.org] address aaa.bbb.ccc.ddd use_node_name yes
サーバーごとに細かい設定項目が割とたくさんあるんだけどそれについてはまた今度。
munin-node の監視項目は /etc/munin/plugins に監視項目を収集する実行プログラムのシンボリックリンクを貼ることで追加削除できる。
こっちは debianとgentooとで若干設定が異なる。debian の場合はだいたい設定されているのでとりあえずそのまま。gentoo の場合は /usr/libexec/munin/plugins にあるので適当にシンボリックリンクを貼る。
個別にやってるとだるいので、munin-node-configureを使うとだいたい設定できる。
munin-node-configure --suggest --shell | sh
とかそんな感じ。パイプでつなげる前に出力される内容を確認するなどする。
最後に munin-cron の実行サーバーからの接続を許可する。これは gentoo も debian も同じ。
allow ^aaa\.bbb\.ccc\.ddd$
ここまでの設定が終わったら /etc/init.d/munin-node start するなど。
munin-node が起動したら munin-cron を実行して監視項目が収集されることを確認。これは munin ユーザーじゃないと実行できないので
sudo su - munin --shell=/bin/bash
とかして munin ユーザーになってから munin-cron を実行。うまくいっていれば /var/lib/munin の下にドメイン名のディレクトリが作成されて収集対象のサーバー名をプリフィックスとしたRRDファイルがずらっと作成される。
munin-cron はその名の通り、cronで実行されるんだけど、debian の場合はインストールしただけで設定されるのに対して gentoo の場合は munin ユーザーになってから /var/lib/munin/crontab を登録しなければならない。
debian も gentoo も apache で参照するように自動設定されるんだけど、ただの静的コンテンツなので nginx を使って /var/cache/munin/www を適当なホスト名に割り当てるなどしておしまい。gentoo の場合は /var/www/localhost/htdocs/munin らしい。expire の設定とかもやったほうが良さそうだけど後で。