はてなのサーバ監視サービス「Mackerel」(鯖)のベータ版サービスが開始されました。
大量のサーバでも状態をグラフとかに可視化してわかりやすく監視できるよ!ってサービスで、競合も多いのですがMackerelは設定が簡単なのとグラフがカッチョイイのがいいですね。
とりあえずプライベートのサーバ(CentOS 5.10)にエージェントをインストールしてみましたが、すぐ監視が開始されました。
簡単すぎる!
そしてかっちょいい!
参考記事
セットアップまでは以下のサイトで大変わかりやすく解説されています。
Mackerelを始めてみた
現状ハマり
「Services」でグラフを選択しようとすると、Chrome(Windows)の場合メニュー表示が白地いに白文字になってしまいます。
最初選択できないのかとおもって焦りました。すぐ修正されると思いますが…。
ユーザ定義のメトリックを定義
原理
サーバ監視のために、監視対象のサーバにエージェントと呼ばれるプログラムをインストールします。
デフォルトでも様々な情報を送信してくれますが、独自の項目(メトリクス)を追加できます。
設定方法はヘルプに解説が載っています。
ユーザ定義のメトリックを投稿する
要するに以下の形式で標準出力するスクリプトを作って、エージェントの設定あファイルに登録すればOKですね。
メトリック名``TAB``値``TAB``Unixエポックタイム
※ sensu互換なので、sensu用のスクリプトも使えるようです。
ここで作るメトリック
ディスクの特定のボーリュームの空き容量をメトリックとして投稿するようにしてみます。
メトリック名は「custom.disk.free」とします。
※ エージェントの既存の機能でもボリュームごとに最新の値を表示することができるので若干被りますが…
作成方針としては、df
コマンドの出力から監視対象のボリュームの空き容量の値を抜き出すことにします。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
259329068 127884584 128770128 50% /
/dev/sda1 101086 38123 57744 40% /boot
tmpfs 257428 0 257428 0% /dev/shm
以上のようなdf実行結果から、「VolGroup00-LogVol00」ボリュームの空き容量(使用可)の値を取得したいので、awkで3行目の3カラム目を抜き出します。
# df | awk '{ if (NR==3) {print $3} }'
128770128
空き容量の128770128
を抜き出せました。
※ 他の行から取得する場合は、NR==3
の3
を変更してください。
これに、メトリクス名とUNIXエポックタイムを追加すればいいですね。
以下のようにします。
# echo -e "disk.free\t`df | awk '{ if (NR==3) {print $3} }'`\t`date '+%s'`"
disk.free 128770128 1399605653
これを元にスクリプトを作ってみましょう。
スクリプト
こんな感じで作ります。
置き場所は、エージェントの設定ファイルと同じく/etc/mackerel-agent/ にしてみましたが、どこに置くのがいいのかな…
#!/bin/sh
echo -e "custom.disk.free\t`df | awk '{ if (NR==3) {print $3} }'`\t`date '+%s'`"
chmod 755 /etc/mackerel-agent/check_disk_free.sh
で実行権限つけてください。
スクリプトを登録
エージェントの設定ファイル(/etc/mackerel-agent/mackerel-agent.conf
)に以下の行を追加してください。
[sensu.checks.diskfree]
command = "/etc/mackerel-agent/check_disk_free.sh"
type = "metric"
[sensu.checks.diskfree]
の部分はsensu.checks.
は固定で、ピリオドの後のdiskfree
だけが自由に決められるようです。
ただ、この部分はローカルでの識別用でサーバへの投稿時には使用されません。
エージェントに適用
エージェントを再起動して設定の変更を反映させます。
#/etc/init.d/mackerel-agent restart
実行結果
ここで作ったメトリクスは1分に1回程度の頻度で投稿されているようです。
しばらくしたらMackerelのサイトで確認してみましょう。
Hosts
の項目から対象サーバの状態を開いてください。
以下のようにログが記録されていれば成功です。
表示内容
メトリクス名の「custom.disk」までで1つのグラフにまとまられ、最後のピリオドの後の「free」の部分はグラフ内の項目になります。
ボリュームごとに空き容量を記録したい場合は、「custom.disk.hda_free」「custom.disk.hdb_free」のようなメトリクスにるすると、いいんじゃないでしょうか。
ハマり点・その他
- 反映されるグラフ
最初Services
のほうのグラフを見ていて、項目が増えない!っとハマってました。
Hosts
側の個別のグラフにしか表示されないのですね…
- メトリック名
既存の disk
メトリックスに追加したかったので「disk.free」にしてみましたが別途、diskというグラフがもう1つ出来てしまいました。
紛らわしいので「custom.disk」に変更しました。
- アラート機能は今後の実装とのこと
ディスクの残容量が設定値以下になったらメースなどで通知ほしいところですが現状は未実装。
アラート機能は今後の実装とのことです。
正式版を楽しみに待ちましょう。
- 監視頻度
1分に1回のようです。設定で変更できるかはわかりません。
- メトリック名をtypoしたとき
一旦投稿されたメトリックのグラフはずっと残ってしまうようです。正式版では削除出来るようになるかもしれません。