check-windows-eventlog は Windows イベントログの監視を行うプラグインです。指定したパターンに一致するイベントを検出した場合にアラートを発生させます。
指定可能なオプション
オプション | 省略形 | 説明 | デフォルト値 |
---|---|---|---|
--log | 検出したいイベントログの種類を指定 監視可能なイベントログの種類 を参照 |
Application | |
--type | 検出したいイベントタイプを指定 アラート対象のイベントタイプ を参照 |
||
--source-pattern | 検出したいイベントソースの指定 | ||
--source-exclude | 除外したいイベントソースの指定 | ||
--message-pattern | 検出したい文字列パターンを正規表現で指定(AND 条件には非対応) *1 | ||
--message-exclude | 除外したい文字列パターンを正規表現で指定(AND 条件には非対応) *1 | ||
--event-id-pattern | 検出したいイベント ID の指定(カンマ区切りで複数指定、ハイフンで範囲指定が可能) | ||
--event-id-exclude | 除外したいイベント ID の指定(カンマ区切りで複数指定、ハイフンで範囲指定が可能) | ||
--warning-over | -w | 検出パターンにマッチする行が指定値を超えたら Warning アラートを発生 | 0 |
--critical-over | -c | 検出パターンにマッチする行が指定値を超えたら Critical アラートを発生 | 0 |
--return | -r | パターンにマッチしたログ行をアラートで通知する(最大1024文字まで) | |
--state-dir | -s | State ファイルの保存先ディレクトリパスを指定 | Stateファイルについて を参照 |
--no-state | Stateファイルを使用せず全てのログを対象とする | ||
--fail-first | プラグインの設定直後の初回チェック時にアラートを発生させる | ||
--verbose | 実行結果を詳細に表示する(デバッグに使用) | ||
--help | -h | ヘルプを表示 |
- *1 複数記述した場合は最後に記述した内容のみ有効になります。
監視可能なイベントログの種類
- Application
- Security
- System
アラート対象のイベントタイプ
イベントタイプ | アラートレベル |
---|---|
Error | Critical |
Audit Failure | Critical |
Warning | Warning |
上記以外のイベントタイプには対応していません
State ファイルについて
check-windows-eventlog はイベントログの出力差分に対して監視を行うため、最後に読み込んだ EventRecordID を State ファイルに記録しています。
--state-dir
オプションを指定しない場合、State ファイルは以下のフォルダに {監視対象のイベントログの種類}-<hash文字列>
の形式で保存されます。
- エージェント経由で実行した場合
C:\Windows\SystemTemp\check-windows-eventlog
- mackerel-agent v0.80.0 以前
C:\Windows\Temp\check-windows-eventlog
- 手動実行した場合
- ログインユーザの
Temp
フォルダ配下のcheck-windows-eventlog
フォルダ(Temp
フォルダの場所は Windows 環境変数のTEMP
を確認)
- ログインユーザの
エージェントへの設定例
Application ログの Error イベントのうち、文字列 foo を含み bar を含まないイベントを対象にする。
[plugin.checks.check-windows-eventlog-sample] command = ["check-windows-eventlog", "--log", "Application", "--type", "Error", "--message-pattern", "foo, "--message-exclude", "bar"]
Application ログの Error イベントのうち、イベント ID 900 と 901 を対象にする。
[plugin.checks.check-windows-eventlog-sample] command = ["check-windows-eventlog", "--log", "Application", "--type", "Error", "--event-id-pattern", "900,901"]
Application ログの Error イベントのうち、イベント ID 900 〜 1200 を対象に、1101 のみ除外する。
[plugin.checks.check-windows-eventlog-sample] command = ["check-windows-eventlog", "--log", "Application", "--type", "Error", "--event-id-pattern", "900-1200", "--event-id-exclude", "1101"]
トラブルシューティング
"Perflib:Because the message resource could not be found, the event log message could not be obtained. Please access the target server and check the event log directly." というイベントが発生する
このイベントは --return
オプションを付与している場合に、パターンに一致したイベントの内容をイベントソースのメッセージファイル(EventMessageFile)から取得できない場合に発生します。その原因として、イベントソースのログがイベントビューアの仕様に合った形式で出力されていない可能性があります。該当のイベントをアラート発生時刻を元にイベントビューアで特定し、イベントソースのログの出力形式ご確認してください。
Event Log UNKNOWN: strconv.ParseInt: parsing "\x00\x00\x00\x00\x00\x00\x00": invalid syntax というアラートが発生する
State ファイル が破損している可能性があります。監視対象のイベントログに対応した State ファイルを削除することで、アラートの解消が見込めます(State ファイル は次回の監視実行時に再作成されます)。 State ファイルの保存場所については State ファイルについて をご確認ください。
リポジトリ
https://github.com/mackerelio/go-check-plugins/tree/master/check-windows-eventlog