PagerDuty への通知方法が増えていたので調査しました。
公式ドキュメントに導入手順の詳細がありますが、実際どのような通知結果になるのかそれぞれ確認したいと思います。
仕様と前提
通知方式
AWS からの通知を例に取って確認します。 以下2種類の方法でイベントを発行します。いずれも SNS 経由となります。
CloudWatch Metric Alarm
CloudWatch メトリクスの閾値監視です。 "Alarm Action", "OK Action" にSNS Topicを指定して通知します。 PagerDuty 上の、 "CloudWatch" という表記は大抵こちらを指します。
EventBridge
以前は CloudWatch Events と呼ばれていた機能です。 "Target" にSNS Topicを指定して通知します。
Endpoint
PagerDuty が受ける Endpoint は範囲別に2種類存在します。
- Global
route events from the same source to different services.
- PagerDuty サブドメインの Endpoint にイベントを送信、各PagerDuty Service に振り分け設定を行う
- Service
evaluate your incoming events and perform additional actions.
- PagerDuty Service 配下に Integration を設定し、Integration URL (Endpoint) にイベントを送信
処理方式
PagerDuty がイベントを受信し、インシデント発行などの処理を行う方式が複数存在します。 大きく分けると以下3種類になります。
- Integrations | Integrate With PagerDuty | PagerDuty
- 各アラート発行元と PagerDuty を統合
- Service 配下に設定する形
以下はいずれも、 PagerDuty に連携されたイベントに対し、各Serviceへのルーティングや処理を、任意のルールで行えるという機能です。
Rulesets には legacy feature
との記載あり、今後は Orchestration に移行していく事になりそうです。
- Rulesets
route events to an endpoint and create collections of event rules
- Event Orchestration
route events to an endpoint and create nested rules
- 2022年1月 にリリースされた Rulesets の拡張機能
プラン
PagerDuty の契約プランにより、利用可能な機能、設定可能数が異なります。
Service 配下に設定する機能制限は無いようです。
特に Orchestration はリリースされたばかりなので詳細はサポートに問合せするのが確実だと思います。
重複排除
PagerDuty にイベントを送信し、インシデントを発行する際に重複排除が働きます。 各処理方式によりデフォルト値や設定方法が異なります。
参考: Event Management
重大度(Severity)と緊急度(Urgency)
インシデント発行時に Serverity を指定し、緊急度を変更することができます。 今回、ルールに合致したか否かの確認のため Serverity を変更していますが、インシデントに反映させるには PagerDuty Service の設定で Dynamic Notification の機能を使用する必要があります。
これにより Serverity を info, warning とすることで、 インシデントの Urgency が Low
となります。
Service 側の設定を High, Low 固定とした場合は、Service 側の設定が優先され固定値となります。