DOCS
インテグレーションガイド / AppDynamics

AppDynamics

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。

AppDynamicsはアプリケーションやデータベースのパフォーマンスをモニターし、分析し、管理するためのツールです。軽快で快適なWebユーザーエクスペリエンスを提供して、ビジネスを成功に導きます。PagerDutyは自由に設定したAppDynamicsのパフォーマンス閾値に従って通知します。

PagerDutyでの設定

  1. ConfigurationメニューからServiceを選択します。

  2. Servicesページで、

    • 新しいサービスを作成する場合は、+Add New Serviceをクリックします。
    • 既存のサービスに追加する場合は、サービスの名前をクリックします。その後、Integrationsタブをクリックし、New Integrationボタンをクリックします。 RS-Add-New-Service-12-300x113
  3. Integration Typeメニューからアプリケーションを選択し、Integration Nameを入力します。新しいサービスを作成する場合は、General Settingsで、新しいサービスのNameを入力します。次に、インシデント設定で、新しいサービスのEscalation Policy(エスカレーションポリシー)、Notification Urgency(通知の緊急性)、Incident Behavior(インシデントの動作)を指定します。

  4. Add ServiceまたはAdd Integrationボタンをクリックして、新しいインテグレーションを保存します。するとサービスのIntegrationsページにリダイレクトされます。 service_integration-1-1024x372-300x109

  5. 新しいインテグレーションのIntegration Keyをコピーします。 RS_Updates__API_Services-1024x146-8-300x43

AppDynamicsでの設定

  1. Alert&Respondタブに移動し、左側のメニューでHTTP Request Templatesを選び、Newをクリックして新しいテンプレートを追加します。 New-HTTP-Request-Template-300x127
  2. テンプレートに「PagerDuty Integration API」のようなNameを付け、2つの_Custom Templating Variable_を追加します。
    • pd_event_typetrigger に設定します。
    • pd_integration_key には、前述の手順3でコピーしたIntegration Keyを設定します。 Set-AD-Name-Vars-768x271
  3. Request URLセクションで、MethodをPOSTに変更し、 Raw URLを、 https://events.pagerduty.com/generic/2010-04-15/create_event.json AD-Request-URL-300x89
  4. Payloadセクションで、MIMETypeapplication/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を参照してください。 AD-Payload-300x139

  1. Response Handling CriteriaセクションのSuccess Criteriaで、Add Success Criteriaをクリックします。Status Codeリストから200を選択し、Expect Payloadをチェックし、Content Typeapplication/json に設定します。 AD-Response-Handling-300x139
  2. SettingsセクションでOne request per eventにチェックを入れ、Saveをクリックします。 AD-Settings-Save-300x100
  3. テンプレートが保存されたら、テンプレートをテストしてPagerDutyでインシデントが作成されることを確認できます。Testボタンをクリックし、Add Event Typeをクリックしてテストするイベントを選択し(この例では「Health Rule Violation Started – Warning」になっていますが、任意のイベントタイプを選択できます)、Run Testをクリックします。インシデントが確かに生成されていることを確認してください。もし、インシデントが表示されていない場合は、Test Transcriptの一番下までスクロールして、Response Payloadでエラーがないかチェックしてください。 AD-HTTP-Template-Test-300x290
  4. 左側のメニューでActionsをクリックし、アクションを作成するアプリケーションまたはデータベースを選択し、Create Actionsをクリックします。 AD-Actions-300x94
  5. リストからMake an HTTP requestを選択し、OKをクリックします。 Create-AD-HTTP-Action-243x300
  6. アクションに名前(「PagerDuty Trigger」など)を付け、作成したテンプレートをリストから選択し、Saveをクリックします 。 Create-AD-HTTP-Trigger-Action-238x300
  7. インシデントの解決に使用される別のアクションを作成します。アクションにName(「PagerDuty Resolve」など)を付け、作成したばかりのテンプレートを再度選択します。フォームにデータが入力されたら、この新しいアクションの pd_event_typetrigger から resolve に変更しSaveをクリックします。 Create-AD-HTTP-Resolve-Action-300x142
  8. 最後のステップは、これらの新しいアクションをポリシーに追加することです。左側のメニューでPoliciesをクリックし、新しいポリシーを作成するか既存のポリシーを編集し、TriggerタブでPagerDutyインシデントのトリガーを設定します。 AD-Policy-Triggers-300x202
  9. 左側のActionsタブをクリックし、Actions to Executeの下のプラス(+)ボタンをクリックします。トリガー条件に対応するアクションを選択し、SelectをクリックしてSaveをクリックします。 AD-Policy-Actions-300x171 AD-Select-Action-300x170
  10. これで、ポリシーのトリガー条件が満たされたときに、PagerDutyでインシデントを受信できます。監視対象のアプリケーションやデータベースが回復した際にPagerDutyでインシデントを自動的に解決する、「PagerDuty Resolve」アクションを実行する回復トリガーポリシーを作成するのを忘れないでください。

よくある質問

  1. PagerDutyの異なるサービスでインシデントを起動するためには、AppDynamicsをどのように設定したらよいですか?

    同じHTTPリクエストテンプレートを使用してAppDynamicsで追加のアクションを作成する場合は、そのアクションの pd_integration_key 変数を別のサービスのインテグレーションキーに変更し、インシデントをトリガーするアプリケーションやデータベースのポリシーを調整するだけです。

  2. AppDynamicsインシデントは自動的に解決されますか?

    はい。追加の復旧アクションとその復旧アクションを実行するポリシー(ステップ8〜14)を作成すれば、AppDynamicsはPagerDutyのインシデントを自動的に解決できます。

  3. AppDynamicsからPagerDutyに送信されるデータをどのようにカスタマイズするのですか?

    HTTPリクエストテンプレートのPayloadセクションで指定されたJSONを変更することによって、PagerDutyに送信されるデータをカスタマイズできます。 複数のAppDynamics Predefined Templating Variablesがある 、またはJSONテンプレートに含める他のデータがある場合は、 details または contexts 配列に追加することができます。 PagerDutyに送信できるデータの詳細については、 イベントAPIのドキュメントを確認してください。