PagerDutyでService Orchestrationsを用いて夜間インシデントを通知遅延させる技
はじめに
こんにちは。イオンスマートテクノロジー株式会社(AST)でSREチームの林 aka もりはやです。
本記事はPagerDutyを各チームへ展開する中で「夜間帯のインシデント通知を遅らせたい」との要望をいただき、Service Orchestrationsを利用することで実現した方法の紹介です。(なおこれは同僚のrakiさんにアシストをもらって私が実装してブログにしています)
注意点として、本記事で利用する機能はPagerDutyのAiOpsのAddonが必要となります。
TL;DR
- 社内の各チームへPagerDutyを展開している
- アラートのチューニングに不安のある中で「即回復系のアラートで起こされたくないため、夜間帯だけ通知を遅らせてほしい」との要望が出た
- Service OrchestrationsのEvent Ruleの
On a recurring weekly schedule
とPause notifications
で実装した- *注意:
On a recurring weekly schedule
はAIOps Add-Onが必要
- *注意:
背景
簡単に背景を説明します。
当社ではより優れたインシデント対応のためにPagerDutyを導入し活用範囲を社内へ広げています。
各チームのPagerDutyの受け入れに際し、基本的なサービスの概念や操作方法を座学やハンズオンといった形でSREチームから行います。
多くの場合に課題となるのはPagerDutyそれ自体の操作ではなく、通知すべきアラートのチューニングです。
PagerDutyの導入には前向きだとしても、夜間帯に不必要に起こされたくはないのは誰もが思うことです。
数分で自動回復するアラートをチューニングしきれたと確信できない状況では、多少のMTTAを犠牲にしても夜間のアラートにはバッファ時間を設けたいとの要望が出ました。
Service Orchestrationsを活用
Service Orchestrationsはサービスの単位で利用できるEvent Orchestrationです。
Event Orchestrationでは以下の5つの条件を利用してインシデントの事前処理を行えます。
-
Always (for all events)
: つねにルールを実行する -
If Events Match Certain Conditions
: イベントが特定の条件と一致する場合 -
On a recurring weekly schedule
: 週次の定期スケジュール(AdvancedEvent Orchestration で利用可能) -
During a scheduled date range
: 日時指定(AdvancedEvent Orchestration で利用可能) -
Depends on event frequency
: イベントの頻度(AdvancedEvent Orchestration で利用可能)
*上述の通り3,4,5の項目はAIOps Addonが必要になります。
今回利用するのは3のOn a recurring weekly schedule
です。
Condition: On a recurring weekly schedule
On a recurring weekly schedule
は日本語に訳せば「毎週の定期的なスケジュール」です。
利用方法は設定画面を見た方が直感的です。(この辺りのUIのわかりやすさはさすがPagerDutyさんといったところです)
設定できる項目は以下の通りです。
-
Start
: Ruleの適用を開始する時間 -
End
: Ruleの適用を終了する時間 -
Days of the week
: Ruleを適用する曜日 -
Timezone
: 指定時間のタイムゾーン
今回の要件は「夜間帯のインシデント通知を遅らせたい」であるため定時外の18:00-09:00ですべての曜日を対象としています。
Rule: Pause notifications
条件を指定した後は、Step 2にて通知を遅らせるための設定を行います。
そのためにSuspend alert for N seconds before triggering an incident
を指定します。
"Seconds"とあるように秒数で指定します。
指定可能な範囲は10秒から14,400秒(24時間)です。
場合によりますが、実際に指定するのは5分(300秒)から30分(1,800秒)くらいが妥当でしょう。
余談: 時間帯の指定がなければAuto-Pauseが簡単
今回は”夜間帯のみ”の指定があったためService Orchestrationsを利用しましたが、単純に通知までのバッファを設けるならAuto-Pauseがシンプルで便利です。
Auto-Pauseは特定の時間帯指定なしで一定秒数通知を遅らせる機能です。
おわりに
以上が「PagerDutyでService Orchestrationsを用いて夜間インシデントを通知遅延させる技」の記事でした。Event Orchestrationは多機能ですべての機能を使いこなせてはいませんが、要件に応じて深掘りしてみると大体のことはできる優れものです。シンプルさを継続しつつも各チームの要件にも応えられるバランスを考え続けていきたいですね。
それではみなさまEnjoy PagerDuty!
イオングループで、一緒に働きませんか?
イオングループでは、エンジニアを積極採用中です。少しでもご興味をもった方は、キャリア登録やカジュアル面談登録などもしていただけると嬉しいです。
皆さまとお話できるのを楽しみにしています!
Discussion