インシデント管理ツール PagerDutyの基本的な設定

リンクバルのインフラエンジニアの内藤 @akito_naito です。

前回、PagerDutyを有料版から無料版に切り替えた話をしました。

今回は、PagerDutyの基本的な機能と設定を紹介いたします。紹介するのは以下の機能です。このあたりの設定は、最初に行いましょう!

  • MyProfile – Notification Rules
  • People – On-call Schedules
  • People – Escalation Policies
  • Services – Service Directory

MyProfile – Notification Rules

メニュー:People>Users>該当ユーザー>Notification Rules

通知をいつどのような方法で受け取るか設定できます。

  • When a high-urgency incident is assigned to me…:緊急度の高いインシデント発生かつ自身がアサインされたとき
  • When a high-urgency incident assigned to me changes…:自身がアサインされた緊急度の高いインシデントのステータスが変わったとき
  • When a low-urgency incident is assigned to me…:緊急度の低いインシデント発生かつ自身がアサインされたとき
  • Before I go on-call or off-call…:自身がオンコールまたはオフコールになったとき

画像は、私の「When a high-urgency incident is assigned to me…」の設定です。

最初に社用とプライベートのアドレス、端末にメールとアプリのPush通知をそれぞれ飛ばします。10分後にインシデントのステータスが変わっていない場合は、プライベートの端末に電話を飛ばします。

この設定は、自身だけでなく他のユーザーの設定も可能です。統一したい場合は、管理者が適宜設定しましょう(統一はもっと良いやり方があるかもしれません)。

Escalation Policie

メニュー:People>Escalation Policies

エスカレーションポリシーが作成できます。エスカレーションポリシーとは、インシデント発生時に、どういうフローで誰に通知をしていくかを決めるものです。エスカレーションポリシーとNotification Rulesが、通知の流れを決めます。

以下の項目を定めます。

  • どの順番で
  • 何分後に
  • 誰に通知して
  • ステータスがそのままなら誰にエスカレーションして
  • 何回繰り返すか

画像は、この記事用に作成したエスカレーションポリシーの一例です。以下の設定にしています。

  1. 1の部分
    1. 最初に後述するオンコールスケジュールに沿って、その時点のオンコールの人に通知
    2. 15分経ってもインシデントのステータスが変わらなければ、次へ
  2. 2の部分
    1. オンコールスケジュールに関わらず、特定の3人に通知
    2. 20分経ってもインシデントのステータスが変わらなければ、次へ
  3. 3の部分
    1. 特定の1人に通知
    2. 30分経ってもインシデントのステータスが変わらなければ、次へ
  4. RTマークのような部分
    1. 誰もacknowledgesにしていなかったら、1の部分から1度だけやり直す

「Assign via Round Robin」にチェックを入れると、該当メンバーでローテーションがアサインできます。ただし、Freeプランでは、「Assign via Round Robin」は使えません。チェックを入れて保存したら、自動でチェックが外れているというわかりづらい仕様です。

作成したエスカレーションポリシーを、後述するサービスに設定していきます。

On-call Schedules

メニュー:People>On-call Schedules

オンコールのスケジュールが作成できます。

オンコールとはインシデント発生時に対応できるよう待機しておくことです。オンコールの人が、インシデント対応を行います。

画像は、この記事用に作成したオンコールの一例です以下の設定にしています。

  • 赤、紫、緑のメンバーが1日おきにローテーション
  • 午前6時に担当が切り替わる
  • 7月15日から開始
  • 24時間対応

「Restrict on-call shifts to specific times」にチェックを入れると、特定の曜日や時間にしかオンコールにならないようにできます。画像のように設定すると、金曜日の18時から月曜日の9時までしかオンコールになりません。

「Add Another Layer」で、複数のレイヤーを作ることもでき、より細かなオンコールのスケジュール設定もできます。

オンコールは複数作成することができるため、後述するサービスごとのエスカレーションポリシーによって人員を変えるなどの設定ができます。ただし、Freeプランでは、スケジュールは一つしか作れません。

オンコールの設計は、最初は難しいと思います。株式会社クイックガードさんの以下の記事は、勉強になりました。

PagerDuty で「普通のオンコール・シフト」を組む – QG Tech Blog

Services – Service Directory

メニュー:Services>Service Directory

サービス一つひとつの設定ができます。Service Directoryごとにインシデントは作られます。

それぞれのサービスで各種設定ができるため、売上影響が大きなサービスは即時かつ複数人に通知をする、売上影響が小さなサービスはまず1人だけに通知する、といった運用が可能です。

画像は、インシデントのトリガーがDataDogで、Slackに通知をする設定になっています。

以下は設定項目の一部です。サービスや運用体制によって、最適な設定にしましょう!

  • インシデントのトリガー
  • 通知
  • 適用するエスカレーションポリシー
  • 通知はどの緊急度でするか
  • インシデントが処理されない場合に再トリガーするか、再トリガーまでの時間
  • インシデントが解決されない場合に自動で解決するか、自動解決までの時間
  • etc

主に「Settings」タブで設定できます。

おわりに

PagerDutyの基本的な設定を紹介しました。Freeプランでも、紹介した機能以外にさまざまな機能があるため、ぜひいろいろな項目を見てみてください!

リンクバルでは、エンジニア含めて絶賛採用中なので、気になる方は、私とカジュアル面談ぜひしませんか? ガチのカジュアル面談なので、PagerDutyについて話すだけでもOKです!

「いきなりカジュアル面談はやりづらい」という方は、TwitterでリプライやDMを送ってください!

内藤とのカジュアル面談はこちら

内藤陽斗のTwitter

リンクバルの採用情報