PagerDuty 設定ガイド (動員編4) - Escalation Policyの作成

Escalation Policyでは、インシデントが発生した際に担当者をアサインするためのルールを設定します。
複数のルールで構成することができ、最初のルールで指定した時間内にユーザーが受任(Acknowledge)しなければ、次のルールに従って別のユーザーに通知を行います(自動エスカレーション)。

Notification Rulesは各ユーザーが自分が担当すべきインシデントを見逃さないための仕組みであるのに対して、
Escalation Policyはチームとして対応すべきインシデントを見逃さないための仕組みになります。

## Escalation Policyの作成
(1) People > Escalation Policies を開き、画面右上の「+ New Escalatin Policy」をクリック
![EP_create_new_ep.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/b226bd12-e1ea-738e-133e-d83e7d727cdc.png)

(2) Escalation Policyの名前を記入し、1つめのルールに最初に誰に通知を行うか設定します。
![EP_rule1_blank.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/a83b6f88-1163-5c32-9b5b-5401da76fd34.png)

(3) 通知先の設定方法は、ユーザーを直接指定する方法と、On-call Scheduleを指定する方法があります。
![EP_rule1_pulldown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/dd542e07-3e33-b8aa-0388-1e0d5b23f207.png)

(4) 自動エスカレーションが発生するまでの時間を指定します。ここで設定した時間内にユーザーが受任(Acknowledge)しないと、次のルールを参照して通知が行われます。
![EP_rule1_escalation_timeout.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/e92f7532-e928-1224-e840-48433f9f2ee3.png)

(5) Add a new Escalation Rule の右の「+」をクリックすると、ルールを追加できます。
"If no one acknoledges, repeat this policy.." にチェックを入れておくと、最後のルールでも担当者が決まらなかった場合に、最初のルールから指定した回数繰り返すことができます。
![EP_add_rules_repeat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/6e40560f-20d5-8e6c-307d-7265aefc1e24.png)

## Escalation Policy設定例
以下は3つのルールを設定したEscalation Policyの例です。
この例のように設定した場合、どのように通知が行われるか説明します
![EP_exmaple_multirules.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/05cec5b2-eae0-0a26-9c14-2b3d62d68ba6.png)

このEscalation Policyが紐付けられたServiceでインシデントが発生すると、PagerDutyはルール1を参照して通知を送ります。
![EP_example1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/f3fe687e-11f2-1fae-3721-5cf65143fb2d.png)
ルール1では On-call Schedule: "PS - Primary" が設定されているため、このScheduleを参照して通知先を決めます。Scheduleではいま現在の当番が "Moto 山田" になっているため、このユーザーに対して通知が行われます。
"Moto 山田" が5分以内に受任(Acknowledge)しなかった場合、次のルール2にエスカレーションされます。

![EP_example2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/c0822118-9b2a-ba62-084f-8cbb2e515951.png)
ルール2では、On-call Schedule: "PS - Secondary" と User: "Frank" が通知先に指定されています。Schedule上の当番である "Brayan 庄田" と "Frank" に同時に通知を行います。
2名とも5分以内に受任(Acknowledge)しなかった場合、次のルール3にエスカレーションされます。

![EP_exmaple3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/4929d52a-b953-7148-d7bf-eae03f7d0a25.png)
ルール3では、User: "Ben" と "Caren" が指定されていますが、Round Robin が有効になっています。
この場合、最初にルール3までエスカレーションされた際は、"Ben"にのみ通知されます。
次にルール3へのエスカレーションが発生した場合は、"Caren"に通知されます。
(緑の矢印<font color="green">**→**</font>が、次に通知を受け取る担当者を示します)

ルール3でも5分以内に受任(Acknowledge)されないと、ルール1から再度通知を行います。
この例ではルール1から3まで、3回繰り返す設定になっています。


## ベストプラクティス
### Escalation Policyは複数のルールを設定し、繰り返しを有効にする
インシデントに担当者がアサインされず、放置されるのを防ぐため、複数のルールと繰り返しを有効にしてください。

## PagerDuty設定ガイド 目次
[検知編](https://qiita.com/ymotomu/items/f9e8de2dfa94394df54c) | [トリアージ編](https://qiita.com/ymotomu/items/1a40022feabae53e85c9) | **[動員編](https://qiita.com/ymotomu/items/e6d13e5284a62e3a1100)** | 解決編 | 学習編
1. [通知を受けるまでの設定の流れ](https://qiita.com/ymotomu/items/e6d13e5284a62e3a1100)
1. [ユーザーの追加と通知設定](https://qiita.com/ymotomu/items/b67758adf6c55a948386)
1. [On-call Scheduleの作成 ](https://qiita.com/ymotomu/items/66c7157c2330d23d576f)
1. Escalation Policyの作成 << イマココ
1. [Serviceの作成](https://qiita.com/ymotomu/items/3cb2d8898857cdcbab02)
1. [通知テストの実施](https://qiita.com/ymotomu/items/4f26d5ec1d713387aff9)
1. [Slack等との連携](https://qiita.com/ymotomu/items/04afd0da5f0bf0863727)

## 参考リソース
* [Escalation Policy](https://support.pagerduty.com/main/lang-ja/docs/escalation-policies)
* [Round Robin Scheduling](https://support.pagerduty.com/main/lang-ja/docs/round-robin-scheduling)
* [Escalation Policy and Schedules](https://support.pagerduty.com/main/lang-ja/docs/escalation-policies-and-schedules)
* [システム障害を未然に防ぐ「インシデント管理・対応」とは](https://www.pagerduty.co.jp/blog/what-is-incident-response)
* [PagerDuty - 14日間 無料トライアル](https://www.pagerduty.co.jp/lp/free-trial/)