
リンクバルのインフラエンジニアの内藤 @akito_naito です。
前回、前々回に引き続きPagerDutyの記事です。今回は、PagerDutyとDatadog・Slackを連携する方法を紹介します。簡単なので、該当サービスを使っている方で設定がまだの方は、ぜひ設定してみてください!
本記事はあくまで連携方法についてのみで、各サービス自体の設定には触れませんので、ご了承ください。
最初に、公式のドキュメントを貼っておきます。
- https://www.pagerduty.com/docs/guides/datadog-integration-guide/
- https://support.pagerduty.com/docs/slack-integration-guide
これ以降の説明は公式のドキュメントの手順をすべてやっているわけではなく、また一部違う箇所があるかもしれませんが、動作は問題ありません。
目次
PagerDutyとデータドッグを連携する
PagerDuty
Datadogのインテグレーションを追加
「メニューのServices>Service Directory>連携したいサービス>Integrationsタブ>Add an Integration>Datadogを検索>Add」で、該当サービスにインテグレーションを追加できます。


DatadogのIntegration Keyをコピー
Integrations画面にDatadogが表示されているので、「v」でアコーディオンを開き、Integration Keyを控えておきます。

Datadog
Pagerdutyのインテグレーションを追加
該当のOrganizationで、「Integrations>PagerDutyを検索>クリック>右上のInstall Ingtegrationボタン」
これでインテグレーションがインストールされます。

Pagerdutyのインテグレーションを設定
PagerDutyのインテグレーション画面で「Configurationタブ>Set Up Manually」を押します。

「Rule Table Name」にお好きな名前、Integration Keyに、PagerDutyの画面でコピーしたKeyを入れ、Saveボタンを押してください。「Rule Table Name」には、後述しますが「PagerDuty」とわかるテキストは入れないほうが良いです。
これで、PagerDutyの該当サービスと、Datadogの該当Organizationが連携されます。
「Set Up Manually」ではなく「Connect to PagerDuty」でももちろん設定が可能で、ログインして数回クリックするだけで連携できます。ただし、「Set Up Manually」の方が若干早く設定が終わると思います。
モニターにPagerDutyの通知を追加
PagerDutyにインシデントを発生させたいモニターの編集画面で、Notify your teamのメッセージに「@pagerduty-xxx」を入れます。xxxは、さきほどのインテグレーション画面で「Rule Table Name」に入れた名前です。PagerDutyのインテグレーションの通知先は「pagerduty-」が必ず入ります。「Rule Table Name」に「PagerDuty」とわかるテキストは入れないほうが良いのはこのためです。
テキストエリアで直接入力してもよいですし、テキストエリア下のセレクトボックスで選択してもよいです。

入力後「Test Notifications」からテストしてみましょう。PagerDutyの該当サービスにインシデントが発生し、PagerDutyで設定した各種通知が来るはずです。
問題なければ、モニター編集画面で「Save」して終了です。
Datadogからのインシデント作成が一度でもできると、PagerDutyの該当サービスの画面で、「No Test Alert Received」が消えています。

簡単にやる方法は不明
ここまでを各Organizationとモニターでやるのですが、数が多いと大変です。。。
おそらくAPIだったりなんらかの設定で一括編集できるかもしれませんが、私はやり方が見当たりませんでした。知っている方がいたら教えてください!
PagerDutyとSlackを連携する
PagerDutyのインシデントをSlackに送るようにすると、SlackからAcknowledgeやResolveに変更できるため、非常に便利です。ぜひ、Slackとも連携しておきましょう。
PagerDutyでSlackのインテグレーションを追加
「メニューのIntegrations>Slack Integration>Add」でインテグレーションを追加できます。スクショと記憶がなくて恐縮ですが、たしかEditを押した後に画像の画面でConnectボタンがあり、それを押すとSlackのAppインストール画面に飛ぶので、SlackにPagerDutyを入れてください。

PagerDutyのサービスとSlackのチャンネルを接続
PagerDutyの上記画面で「View>Add Connection」と進み、PagerDuty SourceにSlack通知をしたいサービス、Slack channelに対応したSlackチャンネルを選択します。他の項目はデフォルトでよいと思いますが、お好みで変更してください。

最後にAdd Connectionを押したら完了です。
一度、さきほどのDataDogの「Test Notifications」などで、インシデントを発生させてみましょう。画像のような通知が来ればOKです!

以上で設定は完了です。お疲れさまでした!
おわりに
リンクバルでは、エンジニア含めて絶賛採用中なので、気になる方は、私とカジュアル面談ぜひしませんか? ガチのカジュアル面談なので、PagerDutyやDatadogについて話すだけでもOKです!
「いきなりカジュアル面談はやりづらい」という方は、TwitterでリプライやDMを送ってください!