今回は、Mackerelのログ監視用のプラグインcheck-logを利用して、ファイルの存在チェックの監視を追加できないか試してみました。
Mackerelプラグインcheck-logとは
Mackerelプラグインのcheck-logの利用方法について調べてみました。
参考にしたURLは以下の通りです。
利用可能なオプションとしては、以下の通りです。
オプション | 省略形 | 説明 | 初期値 |
---|---|---|---|
–file | -f | 監視対象ファイルのパスを指定(glob形式での指定可) | |
–pattern | -p | 検出したいパターンを正規表現で指定 *1 | |
–exclude | -E | 検出から除外するパターンを正規表現で指定 *1 | |
–warning-over | -w | 検出パターンにマッチする行数が指定値を超えたらWarningアラートを発生 | |
–critical-over | -c | 検出パターンにマッチする行数が指定値を超えたらCriticalアラートを発生 | |
–warning-level | 検出パターンで抽出した数値が指定値を超えたらWarningアラートを発生 | ||
–critical-level | 検出パターンで抽出した数値が指定値を超えたらCriticalアラートを発生 | ||
–return | -r | パターンにマッチしたログ行をアラートで通知する *2 | |
–search-in-directory | 監視対象ファイルがあるディレクトリパスを指定(Windows環境において--file-pattern と併用) | ||
–file-pattern | -F | 監視対象ファイルを正規表現で指定 | |
–icase | -i | 大小文字を区別せずにマッチングを行う | |
–state-dir | -s | Stateファイルの保存先ディレクトリパスを指定 | |
–no-state | Stateファイルを使用せず全てのログを対象とする | ||
–encoding | 監視対象ファイルの文字エンコーディングを指定 | ||
–missing | 監視対象ファイルが存在しなかった場合のアラートレベルを指定 | UNKNOWN | |
–check-first | ファイルの初回チェック時に内容のチェックを行う *3 | ||
–suppress-pattern | 検出パターンをホスト詳細画面に表示しない |
check-logプラグインは、ログ監視に利用されるプラグインです。
特定のログに特定のメッセージ(ERROR等)が出力された場合に検知する形が基本的な利用方法のようです。
ファイル存在有無については、「–missing」を利用して実現可能かと思います。
「–missing」オプションなしで、検知対象のファイルがない場合、ステータスは「UNKNOWN」で返ってきます。
これを「WARNING」に変更することで、WARNINGでアラート検知できるように設定し、ファイル存在有無の検知をしてみます。
Mackerelプラグインcheck-log〜設定方法〜
Mackerelの設定ファイル(/etc/mackerel-agent/mackerel-agent.conf)に、下記のプラグイン設定を追加します。
今回はテストファイル(/tmp/test.txt)の存在有無確認の設定を実施します。
「–missing」オプションで”WARNING”を指定します。
[plugin.checks.access_log]
command = ["check-log", "--file", "/tmp/test.txt", "--pattern", ".*", "--missing", "WARNING", "--suppress-pattern"]
設定反映のため、サービス再起動を実施します。
systemctl status mackerel-agent.service
systemctl restart mackerel-agent.service
Mackerelプラグインcheck-log〜動作確認〜
設定後、正常にファイルの存在確認を検知できるかの動作確認を行います。
最初に、/tmp/test.txtが存在しない状態で、アラートが発生するか確認します。
以下の通り、サーバ上はファイルがない状態です。
[root@test ~]# ls -l /tmp/test.txt
ls: '/tmp/test.txt' にアクセスできません: そのようなファイルやディレクトリはありません
[root@test ~]#
しばらく経って、Mackerel上で、正常に、アラートが発生しました。
次に、/tmp/test.txtを作成します。
[root@test ~]# touch /tmp/test.txt
[root@test ~]# ls -l /tmp/test.txt
-rw-r--r-- 1 root root 0 12月 30 15:00 /tmp/test.txt
[root@test ~]#
しばらく経って、Mackerel上で、アラートが解消されました。
まとめ
今回は、Mackerelプラグインのckeck-logでファイルの存在チェックを検知できないか検証してみました。
ご参考になれば、幸いです。
以上になります。ありがとうございました。
コメント