1. Qiita
  2. 投稿
  3. Mackerel

Mackerelの`check-log`プラグインでエラーの内容も取得する

  • 2
    いいね
  • 0
    コメント

check-logプラグインについて

サーバー監視のSaaSであるMackerelは, 公式が提供するプラグインを利用することで, サーバー上にある様々なリソースや情報を監視することができます.

その中の1つが, ログ監視を行うcheck-logです.
このプラグインを使えば, サーバ上に存在する任意のログファイルを監視し, そこに指定した文字列が出現した場合にアラートを発生させることができます.

例えば, mackerel-agent.confに次のように書いておけば, /var/log/myapp/app.logに, [CRITICAL]というログが書き込まれた時, アラートを発生させることができます.

[plugin.checks.app]
command = "check-log --file /var/log/myapp/app.log --pattern '\\[CRITICAL\\]'"

更にその際, 例えばMackerelからSlackへの通知が設定されていれば, Slack上には次のようなメッセージが送信されます.

スクリーンショット_2016-07-15_18_46_23.png

check-logを使えば, アプリケーションのエラーについても, Mackerelで管理をすることができ, 非常に便利です.

エラーの内容も取得したい!

とはいえ, 上の通知内容では, 「[CRITICAL]という文字列が含まれるログが書き込まれた」ということしかわかりません.
ログの具体的な内容を確認するためには, 実際にサーバーに接続して, ログファイルを確認する必要があります. これは非常に面倒です.

というわけで, こういう場合は--returnオプションを使いましょう.

[plugin.checks.app]
command = "check-log --file /var/log/myapp/app.log --pattern '\\[CRITICAL\\]' --return"

check-log--returnオプションを付与すると, 条件に当てはまったログの全文がMackerelに送付されるようになります.
例えば, 上記の設定であれば, /var/log/myapp/app.log[CRITICAL] Test for Mackerel check-log pluginという文字列を書き込んだ場合, Slackへの通知が次のようになります.

スクリーンショット_2016-07-15_18_46_39.png

[CRITICAL] Test for Mackerel check-log pluginという文言が含まれていることがわかります.

また, この内容はMackerel上からも確認することができます.

スクリーンショット_2016-07-15_18_57_37.png

注意点

--returnオプションを有効にすると, 条件を満たしたログの内容が全てMackerelに送信されてしまいます.
意図せず秘匿しないといけない情報が含まれないように, 注意しましょう.

また, 送信するログのサイズが大きい場合, 表示が切り詰められる場合もあるので, こちらも注意しましょう.

補足

...ぶっちゃけ, この記事でご紹介したcheck-log--returnオプションについては, Mackerelのマニュアルのログ監視をおこなうに, しっかり書かれています.

が, mackerelio/go-check-pluginscheck-logREADMEには書かれておらず, 先日Mackerelの中の人にお聞きするまで知らなかった, という感じだったので, もしご存じない方がいたら... という気持ちで書きました.