📞

PagerDuty で一定期間アラートを抑制する

2023/03/27に公開

PagerDuty でアラートを受け取っているプロジェクトで,以下のようにある時間帯はアラートを止めたいケースがあります。

  • メンテナンスが予定されている。
  • 開発環境は営業時間内だけ動かすので,平日夜や土日祝日は止めたい。

何も対策しないとアラートが鳴ってしまい,オンコール担当者を不用意に呼び出す結果になるので,そうならないようにきちんと設定します。

TL;DR

各ケースで以下のように設定します。

  • メンテナンス→メンテナンスウィンドウを設定
  • 平日夜・土日停止→曜日・時刻ベースのイベントルールを追加

方法1:メンテナンスウィンドウ

メンテナンスなどでダウンする時間帯があらかじめわかっている場合にメンテナンスウィンドウを設定しておくことで,その時間帯にアラートが発生しても通知されなくなる機能です。

GUI でも API でも設定できます。設定方法は公式ドキュメントに書かれています。

メンテナンスウィンドウを繰り返し作成するための Python スクリプトも用意されています。API キーが必要です。

https://support.pagerduty.com/docs/maintenance-windows#recurring-maintenance-windows

予定されたメンテナンスのように回数が有限な場合はこちらが適切です。
一方で,夜間土日停止など終わりがない場合は,後述のイベントルールが向いています。

方法2:イベントルール

曜日・時間帯で一律抑制するルールを追加すると,その時間に発生したアラートを抑制できます。

https://support.pagerduty.com/docs/rulesets

  • 午前0時をまたいだ指定は一つのルールではできないので,別のルールを作る必要があります。
  • 曜日・時間だけではルールを作成できないので,たとえば custom_details.firing フィールドに特定の文字列が含まれるかどうかという条件を追加します。

たとえば,平日の9時〜18時以外をオフにしたい場合は,以下のようにルールを作成します。
全対象アラートの custom_details.firing フィールドに critical という文字列が含まれているという想定です。

条件 曜日 時間
custom_details.firing contains critical 月・火・水・木・金 12:00 AM to 8:59 AM
custom_details.firing contains critical 月・火・水・木・金 6:00 PM to 11:59 PM
custom_details.firing contains critical 土・日 12:00 AM to 11:59 PM

時間帯以外の条件も,抑制以外のアクションも使えるので,もし無駄なアラートがあるなどの場合は柔軟に対応できます。

Discussion