20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mackerelのエージェントにユーザ定義のメトリックを定義(我流)

Last updated at Posted at 2014-05-09

 はてなのサーバ監視サービス「Mackerel」(鯖)のベータ版サービスが開始されました。
 大量のサーバでも状態をグラフとかに可視化してわかりやすく監視できるよ!ってサービスで、競合も多いのですがMackerelは設定が簡単なのとグラフがカッチョイイのがいいですね。

 とりあえずプライベートのサーバ(CentOS 5.10)にエージェントをインストールしてみましたが、すぐ監視が開始されました。
スクリーンショット 2014-05-09 11.53.30trim.png
 簡単すぎる!
 そしてかっちょいい!

参考記事

セットアップまでは以下のサイトで大変わかりやすく解説されています。
Mackerelを始めてみた

現状ハマり

 「Services」でグラフを選択しようとすると、Chrome(Windows)の場合メニュー表示が白地いに白文字になってしまいます。
 最初選択できないのかとおもって焦りました。すぐ修正されると思いますが…。
スクリーンショット 2014-05-09 10.27.39trim.png

ユーザ定義のメトリックを定義

原理

 サーバ監視のために、監視対象のサーバにエージェントと呼ばれるプログラムをインストールします。
 デフォルトでも様々な情報を送信してくれますが、独自の項目(メトリクス)を追加できます。

 設定方法はヘルプに解説が載っています。
ユーザ定義のメトリックを投稿する

 要するに以下の形式で標準出力するスクリプトを作って、エージェントの設定あファイルに登録すれば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==33を変更してください。
これに、メトリクス名とUNIXエポックタイムを追加すればいいですね。
以下のようにします。

#  echo -e "disk.free\t`df | awk '{ if (NR==3) {print $3} }'`\t`date '+%s'`"
disk.free       128770128       1399605653

これを元にスクリプトを作ってみましょう。

スクリプト

こんな感じで作ります。
置き場所は、エージェントの設定ファイルと同じく/etc/mackerel-agent/ にしてみましたが、どこに置くのがいいのかな…

/etc/mackerel-agent/check_disk_free.sh
#!/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)に以下の行を追加してください。

/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の項目から対象サーバの状態を開いてください。
以下のようにログが記録されていれば成功です。
スクリーンショット 2014-05-09 11.47.10trim.png

表示内容

 メトリクス名の「custom.disk」までで1つのグラフにまとまられ、最後のピリオドの後の「free」の部分はグラフ内の項目になります。
 ボリュームごとに空き容量を記録したい場合は、「custom.disk.hda_free」「custom.disk.hdb_free」のようなメトリクスにるすると、いいんじゃないでしょうか。

ハマり点・その他

  • 反映されるグラフ

 最初Servicesのほうのグラフを見ていて、項目が増えない!っとハマってました。
 Hosts側の個別のグラフにしか表示されないのですね…

  • メトリック名

 既存の disk メトリックスに追加したかったので「disk.free」にしてみましたが別途、diskというグラフがもう1つ出来てしまいました。
 紛らわしいので「custom.disk」に変更しました。

  • アラート機能は今後の実装とのこと

 ディスクの残容量が設定値以下になったらメースなどで通知ほしいところですが現状は未実装。
 アラート機能は今後の実装とのことです。
 正式版を楽しみに待ちましょう。

  • 監視頻度

 1分に1回のようです。設定で変更できるかはわかりません。

  • メトリック名をtypoしたとき

 一旦投稿されたメトリックのグラフはずっと残ってしまうようです。正式版では削除出来るようになるかもしれません。

20
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?