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

Project Description

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


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

 

PagerDutyでの設定

 

  1. ConfigurationメニューからServiceを選択します。
  2. Servicesページで、
    • 新しいサービスを作成する場合は、+Add New Serviceをクリックします。
    • 既存のサービスに追加する場合は、サービスの名前をクリックします。その後、Integrationsタブをクリックし、New Integrationボタンをクリックします。

 

 

  1. Integration Typeメニューからアプリケーションを選択し、Integration Nameを入力します。新しいサービスを作成する場合は、General Settingsで、新しいサービスのNameを入力します。次に、インシデント設定で、新しいサービスのEscalation Policy(エスカレーションポリシー)、Notification Urgency通知の緊急性)Incident Behavior(インシデントの動作)を指定します。

 

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

 

 

  1. 新しいインテグレーションのIntegration Keyをコピーします。

 

 

AppDynamicsでの設定

 

  1. Alert&Respondタブに移動し、左側のメニューでHTTP Request Templatesを選び、Newをクリックして新しいテンプレートを追加します。

 

 

  1. テンプレートに「PagerDuty Integration API」のようなNameを付け、2つのCustom Templating Variableを追加します。
    • pd_event_type trigger に設定します。
    • pd_integration_key には、前述の手順3でコピーしたIntegration Keyを設定します。

 

 

  1. Request URLセクションで、MethodをPOSTに変更し、 Raw URLを、

https://events.pagerduty.com/generic/2010-04-15/create_event.json

に設定します。

 

 

  1. 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を参照してください。

 

 

  1. Response Handling CriteriaセクションのSuccess Criteriaで、Add Success Criteriaをクリックします。Status Codeリストから200を選択し、Expect Payloadチェックし、Content Type application/json に設定します。

 

 

  1. SettingsセクションでOne request per eventにチェックを入れ、Saveをクリックします

 

 

  1. テンプレートが保存されたら、テンプレートをテストしてPagerDutyでインシデントが作成されることを確認できます。Testボタンをクリックし、Add Event Typeをクリックしてテストするイベントを選択し(この例では「Health Rule Violation Started – Warning」になっていますが、任意のイベントタイプを選択できます)、Run Testをクリックします。インシデントが確かに生成されていることを確認してください。もし、インシデントが表示されていない場合は、Test Transcript一番下までスクロールして、Response Payloadでエラーがないかチェックしてください。

 

 

  1. 左側のメニューでActionsをクリックし、アクションを作成するアプリケーションまたはデータベースを選択し、Create Actionsをクリックします。

 

 

  1. リストからMake an HTTP requestを選択し、OKをクリックします。

 

 

  1. アクションに名前(「PagerDuty Trigger」など)を付け、作成したテンプレートをリストから選択し、Saveをクリックします 。

 

 

  1. インシデントの解決に使用される別のアクションを作成します。アクションにName(「PagerDuty Resolve」など)を付け、作成したばかりのテンプレートを再度選択します。フォームにデータが入力されたら、この新しいアクションの pd_event_type trigger から resolve に変更しSaveをクリックします。

 

 

  1. 最後のステップは、これらの新しいアクションをポリシーに追加することです。左側のメニューでPoliciesをクリックし、新しいポリシーを作成するか既存のポリシーを編集し、TriggerタブでPagerDutyインシデントのトリガーを設定します。

 

 

  1. 左側のActionsタブをクリックし、Actions to Executeの下のプラス(+)ボタンをクリックします。トリガー条件に対応するアクションを選択し、SelectをクリックしてSaveをクリックします。

 

 

  1. これで、ポリシーのトリガー条件が満たされたときに、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のドキュメントを確認してください。

Project Details