クオカード デジタルイノベーションラボにおけるPagerDuty活用事例

株式会社クオカード / デジタルイノベーションラボ
メンバー / エンジニア以外 / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
事業形態 |
---|
B to B B to C |
事業形態 | B to B B to C |
---|
導入の背景・解決したかった問題
導入背景
活用前の課題
クオカード デジタルイノベーションラボ(以下ラボ)では、特定のアラートが発生すると営業部に対してSlackで通知を行っていたのですが、Slack通知だけでは担当者が自ら確認する必要がありました。
どのような状態を目指していたか
すぐに気付いて対応してもらえるよう、電話でもコールされる状態を目指しました。
運用チームがアラートを検知して、手動で営業部にコールする方法も考えられましたが、それでは運用チームの負担が大きくなってしまうので、できるだけ運用チームを介さずに、直接営業部にオートコールを行うことを目指しました。
ラボ内では既にシステム障害を検知して運用チームにオートコールを行う仕組みがあったので、今回はその既存の仕組みを応用し、特定のアラート時には営業部に直接オートコールを行うようシステムを構築しました。
導入に向けた社内への説明
上長・チームへの説明
※既に導入はされていたため、今回は新たな活用にあたりどのように説明したかを記載します。
実際にコール対応をする部署(営業部門)へ、課題と対応について説明しました。 その後、オートコールの受電担当者を決めてもらうよう相談し、担当者が受電したあとにどのような対応をしてもらうかも予め調整しました。
活用方法
よく使う機能
1. PagerDutyとSentryのIntegration設定
1-1.サービスの登録
今回はPagerDutyとSentryいずれのサービスもラボ内で導入済みだったのでアカウント作成はしていませんが、必要に応じてそれぞれのサービスのアカウント作成から行ってください。
1-2.PagerDuryにサービスの作成
公式ガイドのサービスを作成を参考にして、今回のシステム用に新規のサービスとエスカレーションポリシーを作成します。 エスカレーションポリシーには最終的には担当部門のメンバーを登録しますが、この時点では開発メンバー等を登録しておくといいでしょう。
1-3.PagerDuty側にインテグレーション設定
サービスを作成したら今度はSentryとのインテグレーション設定を既存のサービスにインテグレーションを追加するを参考に行います。 設定すると Integration Key が生成されますが、このKeyはあとでSentry側に設定する必要があるので控えておきます。
1-4.Sentry側にIntegration設定
今度はSentryの管理画面で、PagerDutyへのIntegration設定を追加します。 Sentryの公式ガイドを参考に行ってください。
2.バッチ設定
続いて実際にバッチの改修に入ります。
2-1.バッチへのSentry組み込み
まずはバッチからSentryへメッセージを送れるようにSentrySDKの組み込みと設定が必要です。今回のバッチはMicronautで実装しているのでJavaの設定手順に従ってSDK組み込みと設定を行いましたが、プラットフォームによって設定方法は異なるので、こちらから調べて設定してください。
2-2.アラートメッセージ送信
設定ができたら、実際にバッチで条件を満たした際に、Sentryへイベントメッセージを送るようにコードを修正します。 ここで設定したメッセージが最終的にPagerDutyからの通知でも使用されるので、ある程度内容がわかるようにしておきます。
// 通知条件を満たした場合の処理
Sentry.captureMessage("XXXでエラーが発生しました。至急Slackを確認して対応してください", SentryLevel.ERROR)
3.Sentry管理画面でのアラート設定
次はSentryの管理画面で設定を行います。 Sentryにログインし、Alerts > Create Alerts でアラート条件の作成をします。
特に大切なのがSet Conditionsで、次のように WHEN, IF, THEN の設定をします。
WHEN
イベントを受信のたびにオートコールしたいので、毎回アラートが作成されるように条件は全て消しておきます。 初期状態だとA new issue is created
が設定されていますが、これだと最初の一回しかアラートが発動しないので注意してください。 しばらく条件を無しにできることに気付かず苦労しました。
IF
今回はイベントの message に 先ほど設定したメッセージを含んでいることを条件にします。
THEN
PagerDutyへ通知を送りたいので、Send a notification PagerDuty
を選択し serviceにはIntegration設定しておいたサービスを選びます。
4.設定確認テスト
ここまでの設定を終えたら、バッチからアラートメッセージ送信→Sentryでのアラート検知→PagerDutyで検知しオートコール、という一連の流れを確認できるはずなので、検証環境等を使って動作確認しておきます。
5.受電担当者のPagerDutyアカウント作成
動作確認がうまくいったら、PagerDutyのエスカレーションポリシーに登録するため、受電担当者のPagerDutyアカウントを作成します。 ユーザーの追加ガイドを参考に、先に決めておいた受電担当者に招待メールを送り、登録作業をしてもらいます。
6.エスカレーションルール設定
複数の受電担当者がいる場合には通知の順序や、一人目が応答しない場合に次の人に連絡するまでの間隔等を設定します。
7.テストコール
エスカレーションルールへの設定順の確認や、実際に受電する人に慣れてもらうためにもテストコールをします。 PagerDutyではオートコールが掛かってきた際にダイヤルボタン回答で、Acknowledge(対応する)や、Resolved(解決済み)にステータスを設定できるのですが、着信に出なかったり応答してもステータスを回答しなければ、次の受電者へ通知がされます。 テストコールを実施してエスカレーションルールどおりになっていることを確認できれば、全ての設定が完了です。
ツールの良い点
・インシデント発生時の通知手段に、電話コール、SMS、メールと多様な手段を選ぶことが出来る。
・インシデント発生時、優先度順に従って次々と連絡をとってくれるため、一次仲介をするような人手が不要になる。
・インシデント発生時、誰に連絡が回ったかがわかり、状況が見える化されている。(サイトのインシデントのTimelineタブで履歴が見える)
ツールの課題点
・月次ローテーションのシフトを組んでいるが、PagerDutyはスケジュールのローテーションがdaily/weeklyでしかできないため、都度手動でスケジュール設定せざるを得ない。

株式会社クオカード / デジタルイノベーションラボ
メンバー / エンジニア以外 / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
よく見られているレビュー

株式会社クオカード / デジタルイノベーションラボ
メンバー / エンジニア以外 / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- 導入の背景・解決したかった問題
- 活用方法