LoginSignup
5
7

More than 5 years have passed since last update.

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

Posted at

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の中の人にお聞きするまで知らなかった, という感じだったので, もしご存じない方がいたら... という気持ちで書きました.

5
7
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
5
7