経緯
Mackerel のチェック監視に prevent_alert_auto_close オプションが追加されました。
自動復旧しないアラート ということで、ログ監視に利用できるかと考えたのですが、思っていた内容とは少し異なる動きでした。
やりたかったこと
- check-log でのアラート発生時の後に通知される 復旧通知(OK)を無くしたい
ログの監視なのでアラート通知されればよく、復旧通知は不要と思っています。
実際
test_1.log を prevent_alert_auto_close = true として、2つのログファイルに同一タイミングで同一メッセージを出力して確認します。
[plugin.checks.test_1_log] command = ''' check-log \ --file /var/log/test_1.log \ --pattern 'ERROR' \ --warning-over 0 \ --critical-over 0 \ --return ''' prevent_alert_auto_close = true [plugin.checks.test_2_log] command = ''' check-log \ --file /var/log/test_2.log \ --pattern 'ERROR' \ --warning-over 0 \ --critical-over 0 \ --return '''
アラート1回目
test_1 は復旧通知が無いため、要望を満たせたように見えます。
- test_1 (Auto Close 無し)
- test_2 (Auto Close)
- 通知結果
アラート2回目
test_1 はアラートが発生しません。
- 通知結果
アラート3回目
test_1 を手動で復旧してから、再度ログ出力を行います。
- 通知結果
結論
アラートの復旧を行った状態でないと、次回以降のチェック時にアラート状態であっても通知は行われません。
チェック監視のアラート通知
アラートが発生した場合と、アラート発生後にアラートの状態が変更した場合にアラートの通知が行われます。「アラートの状態が変更した場合」には以下の2つの場合があります。ステータスが変更になった場合
ex. CRITICAL -> WARNING, WARNING -> CRITICAL, CRITICAL -> OK
ステータスがOKになった場合も含みます
チェックプラグインが送信してくるメッセージの内容が変わった場合
ということで、 prevent_alert_auto_closeオプション はログ監視(特にエラー時にのみ出力されるログ)には向かないようです。
復旧通知の無効化や、某abbixの 障害イベントを継続して生成 のような機能の実装を待ちます。