DOCS
インテグレーションガイド / AppDynamics
本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
AppDynamicsはアプリケーションやデータベースのパフォーマンスをモニターし、分析し、管理するためのツールです。軽快で快適なWebユーザーエクスペリエンスを提供して、ビジネスを成功に導きます。PagerDutyは自由に設定したAppDynamicsのパフォーマンス閾値に従って通知します。
PagerDutyでの設定
-
ConfigurationメニューからServiceを選択します。
-
Servicesページで、
- 新しいサービスを作成する場合は、+Add New Serviceをクリックします。
- 既存のサービスに追加する場合は、サービスの名前をクリックします。その後、Integrationsタブをクリックし、New Integrationボタンをクリックします。
-
Integration Typeメニューからアプリケーションを選択し、Integration Nameを入力します。新しいサービスを作成する場合は、General Settingsで、新しいサービスのNameを入力します。次に、インシデント設定で、新しいサービスのEscalation Policy(エスカレーションポリシー)、Notification Urgency(通知の緊急性)、Incident Behavior(インシデントの動作)を指定します。
-
Add ServiceまたはAdd Integrationボタンをクリックして、新しいインテグレーションを保存します。するとサービスのIntegrationsページにリダイレクトされます。
-
新しいインテグレーションのIntegration Keyをコピーします。
AppDynamicsでの設定
- Alert&Respondタブに移動し、左側のメニューでHTTP Request Templatesを選び、Newをクリックして新しいテンプレートを追加します。
- テンプレートに「PagerDuty Integration API」のようなNameを付け、2つの_Custom Templating Variable_を追加します。
pd_event_type
はtrigger
に設定します。pd_integration_key
には、前述の手順3でコピーしたIntegration Keyを設定します。
- Request URLセクションで、MethodをPOSTに変更し、 Raw URLを、
https://events.pagerduty.com/generic/2010-04-15/create_event.json
- Payloadセクションで、MIMETypeを
application/json
に設定し、次のテキストをコピーしてテキストエリアに貼り付けます。
{
"service_key": "${pd_integration_key}",
"incident_key": "${latestEvent.node.name} - ${latestEvent.application.name}",
"event_type": "${pd_event_type}",
"description": "${latestEvent.displayName} on ${latestEvent.node.name}",
"client": "AppDynamics",
"client_url": "${controllerUrl}",
"details": {
"Event Name": "${latestEvent.displayName}",
"Summary": "${latestEvent.summaryMessage}",
"Event ID": ${latestEvent.id},
"GUID": "${latestEvent.guid}",
"Event Time": "${latestEvent.eventTime}",
"Event Type": "${latestEvent.eventType}",
"Event Type Key": "${latestEvent.eventTypeKey}",
"Application Name": "${latestEvent.application.name}",
"Node Name": "${latestEvent.node.name}",
"Message": "${latestEvent.eventMessage}",
"Severity": "${latestEvent.severity}"
},
"contexts":[
{
"type": "image",
"src": "${latestEvent.severityImage.deepLink}",
"alt": "${latestEvent.severity}"
},
{
"type": "link",
"href": "${latestEvent.deepLink}",
"text": "View this transaction in AppDynamics"
}
]
}
ヒント:アラートデータをカスタマイズする方法の詳細については、後述のFAQを参照してください。
5. Response Handling CriteriaセクションのSuccess Criteriaで、Add Success Criteriaをクリックします。Status Codeリストから200を選択し、Expect Payloadをチェックし、Content Typeを application/json
に設定します。
6. SettingsセクションでOne request per eventにチェックを入れ、Saveをクリックします。
7. テンプレートが保存されたら、テンプレートをテストしてPagerDutyでインシデントが作成されることを確認できます。Testボタンをクリックし、Add Event Typeをクリックしてテストするイベントを選択し(この例では「Health Rule Violation Started – Warning」になっていますが、任意のイベントタイプを選択できます)、Run Testをクリックします。インシデントが確かに生成されていることを確認してください。もし、インシデントが表示されていない場合は、Test Transcriptの一番下までスクロールして、Response Payloadでエラーがないかチェックしてください。
8. 左側のメニューでActionsをクリックし、アクションを作成するアプリケーションまたはデータベースを選択し、Create Actionsをクリックします。
9. リストからMake an HTTP requestを選択し、OKをクリックします。
10. アクションに名前(「PagerDuty Trigger」など)を付け、作成したテンプレートをリストから選択し、Saveをクリックします 。
11. インシデントの解決に使用される別のアクションを作成します。アクションにName(「PagerDuty Resolve」など)を付け、作成したばかりのテンプレートを再度選択します。フォームにデータが入力されたら、この新しいアクションの pd_event_type
を trigger
から resolve
に変更しSaveをクリックします。
12. 最後のステップは、これらの新しいアクションをポリシーに追加することです。左側のメニューでPoliciesをクリックし、新しいポリシーを作成するか既存のポリシーを編集し、TriggerタブでPagerDutyインシデントのトリガーを設定します。
13. 左側のActionsタブをクリックし、Actions to Executeの下のプラス(+)ボタンをクリックします。トリガー条件に対応するアクションを選択し、SelectをクリックしてSaveをクリックします。
14. これで、ポリシーのトリガー条件が満たされたときに、PagerDutyでインシデントを受信できます。監視対象のアプリケーションやデータベースが回復した際にPagerDutyでインシデントを自動的に解決する、「PagerDuty Resolve」アクションを実行する回復トリガーポリシーを作成するのを忘れないでください。
よくある質問
PagerDutyの異なるサービスでインシデントを起動するためには、AppDynamicsをどのように設定したらよいですか?
同じHTTPリクエストテンプレートを使用してAppDynamicsで追加のアクションを作成する場合は、そのアクションの
pd_integration_key
変数を別のサービスのインテグレーションキーに変更し、インシデントをトリガーするアプリケーションやデータベースのポリシーを調整するだけです。AppDynamicsインシデントは自動的に解決されますか?
はい。追加の復旧アクションとその復旧アクションを実行するポリシー(ステップ8〜14)を作成すれば、AppDynamicsはPagerDutyのインシデントを自動的に解決できます。
AppDynamicsからPagerDutyに送信されるデータをどのようにカスタマイズするのですか?
HTTPリクエストテンプレートのPayloadセクションで指定されたJSONを変更することによって、PagerDutyに送信されるデータをカスタマイズできます。 複数のAppDynamics Predefined Templating Variablesがある 、またはJSONテンプレートに含める他のデータがある場合は、
details
またはcontexts
配列に追加することができます。 PagerDutyに送信できるデータの詳細については、 イベントAPIのドキュメントを確認してください。