概要
ログ監視は、ログファイル内の特定の文字列を検出するとアラートを出すのが一般的ですが、Mackerelのログ監視(check-logプラグイン)で日本語の文字列をキーワードにする場合、設定にひと手間必要でした。
やること
-
mackerel-agent.conf
をUTF-8で作成する -
--encoding
でログファイルの文字コード指定する
手順
mackerel-agent.confをUTF-8で作成する
検出したい文字列に日本語(全角文字)を含む場合、設定ファイル自体のエンコーディングをUTF-8にする必要があります。
ここがはまりどころです。テキストエディタなどを使ってUTF-8で保存しましょう。
Windowsの場合コンフィグは以下にあります
C:\Program Files (x86)\Mackerel\mackerel-agent\mackerel-agent.conf
--encodingでログファイルの文字コード指定する
ログファイルの文字コードを指定します。
今回監視するのはWindowsに保存されたログファイルなので文字コードはSJISを指定しました。
検出したいキーワードは"ネットワークエラーが検出されました"です。
できあがり
(中略)
[plugin.checks.log]
command = '''check-log.exe --file C:\log\test.log --pattern ネットワークエラーが検出されました --encoding Shift_JIS --return'''
--return
オプションはキーワードを含む行をMackerelへ送信してくれます。
そのためEndToEndで暗号化されているとはいえ、個人情報やアカウントを含む行は注意が必要です。
アラート
キーワードを検出するとMackerelのAlertsへ以下のように表示されます。
"ネットワークエラーが検出されました"を含む行も表示されました。
参考:encordingオプションで指定可能な文字コード