New Relic Advent Calendar 2022の21日目の記事です。
はじめに
New Relic には公式のIntegrationが用意されているため、簡単にPagerDutyと連携させることができます。
New RelicからPagerDutyにアラートを送り、自動診断ジョブを実行する流れを例に、設定方法を説明します。
2通りのIntegration方法
Account Integration:
- PagerDutyの1つのアカウントに存在する全Serviceを、1つのNew Relic Destinationで利用できるようにする方法
- Global Orchestrationは利用できず、Service Orchestrationのみ
Service Integration:
- PagerDutyの特定のIntegration-KeyとNew Relic Destinationを1:1で紐付ける方法
- Service Orchestrationに加えて、Global Orchestrationが利用可能
- API Keyではなく、ServiceのIntegration Keyだけで利用できるため、AdminやAccount Owner等の権限がなくても利用可能
本記事ではService Integrationを利用します。
1) PagerDutyでIntegration-Keyを発行する
Global Orchestration(推奨)またはService Orchestrationを利用して、Integration-Keyを発行してください。
2) New RelicでDestinationを設定する
Alerts & AI > Destinations を開き、Add a destinationからPagerDutyを選択、Service Integrationタブを開きます。
3) New RelicでPolicyを設定する
Alerts & AI > Alert Policies を開き、"+ New alert policy" をクリックします。
Create alert policy画面で、Policy nameを記入し、 Incident Groupingの粒度*を選択したら、"Set up notifications" をクリックします。
*: PagerDutyのAIOps(Alert Grouping機能)を利用する場合は、粒度は細かくしておくことを推奨します。PagerDuty側でインシデント全体の状況が把握し易くなり、多数のアラートが発生した場合でも集約して管理が可能です。
Add channelでPagerDutyを選択します。
Edit notification message画面で、アラートの送付先とアラートに含めるデータを設定します。
- PagerDuty destination: 2)で作成したDestinationを選択
"Send test notification"をクリックすると、PagerDutyにテストアラートを送ることができます。
PagerDuty上で、テストアラートによるインシデントが起票されました。
4) PagerDutyでEvent Orchestrationを設定する
このアラートをPagerDutyで受信した場合に、自動診断ジョブが実行されるよう、Event Orchestrationを設定します。
Services > Service Directory からアラートを受信するServiceを選択します。
Settingタブ内のEvent Managementセクションを表示します。
"+ New Rule" をクリックし、自動診断を実行するアラートの条件を指定します。
-
If events match certain conditions
アラートに含まれるデータを条件に利用します。 -
event.custom_details['Alert Policy Names']
今回はCustom Details内のAlert Policy Namesを参照します -
matches
今回は完全一致を利用。他に部分一致や正規表現なども使えます。 -
alert policy FE - us-east-1
Alert Policy Namesの値を指定します。
"Next" をクリックし、条件に一致した際に実行するActionを指定します。
動作確認
New Relicからテストアラートを送ると、PagerDutyでインシデントが起票され、自動診断ジョブが実行されました。