🐥
Prometheus Alertmanagerで特定時間だけアラート通知をミュートする
概要
この時間帯にはアラート鳴ってほしくねぇ、というときがありますね。
Prometheus Alertmanagerにはv0.22から、指定のアラートを特定の時間だけミュートする機能が追加されていました。(よかった。)
alertmanagerの設定ファイルにmute_time_interval
というfieldを追加してやることで実現可能です。
公式ドキュメント
設定例
2パターン書いてみました。(こんなユースケースはあるのだろうか。)
- 平日10:00~19:00の勤務時間以外は鳴ってほしくない(out-of-business-hours)
- 毎月最後の1週間は鳴ってほしくない(last-week-of-month-in-utc)
route:
receiver: default-receiver
routes:
- matchers: [ foo = bar01 ]
receiver: sample-receiver01
mute_time_intervals:
- out-of-business-hours
- matchers: [ foo = bar02 ]
receiver: sample-receiver02
mute_time_intervals:
- last-week-of-month-in-utc
- matchers: [ foo = bar03 ]
receiver: sample-receiver03
mute_time_intervals:
- name: out-of-business-hours
time_intervals:
- weekdays: ['Saturday','Sunday']
- times:
- start_time: '10:00' #JST 19:00
end_time: '24:00' #JST 09:00
- start_time: '00:00' #JST 09:00
end_time: '01:00' #JST 10:00
- name: last-week-of-month-in-utc
time_intervals:
- days_of_month: ['-7:-1']
上に示した設定例だと、
fooラベルがbar01
のアラート -> 平日勤務時間以外の時間帯はミュート。
fooラベルがbar02
のアラート -> 月末一週間はミュート。
fooラベルがbar03
のアラート -> 常にミュート状態ではない。
となります。
扱いづらいのは、サポートされているtimezoneがUTCだけであるところ。
これは2022/02時点で最新のv0.23.0でも同様です。
UTCしかサポートしていないことが明示されています。
私の勤務する会社では10:00~19:00勤務なのですが、この場合の勤務時間外をUTCで表現するとだいぶややこしいことになっていますね。。
またdays_of_monthには負の数を入れることができます。
-1は月の最終日を表します。
最終日が31日ならば、-7は25日を表します。
そしてこれもUTC。
日本時間ならば25日午前9:00から、翌月1日午前9:00までがミュート期間となります。
timezone対応のPull Request
このPull Requestでtimezoneの指定がサポートされそうです。
早く、リリースされるといいなぁ。
Discussion