AppDynamics webhook

You can configure AppDynamics to post data to Moogsoft AIOps Express when actions of interest occur. See docs.appdynamics.com for details on AppDynamics components.

Before You begin

This integration was validated with the AppDynamics APM agent 4.5.16.28908 on July 7, 2020. Before you start to set up your integration, ensure you have met the following requirements:

  • You have an active AppDynamics account.

  • You have the necessary permissions to create alerts and HTTP request templates in AppDynamics.

  • You know how to define alerts in AppDynamics.

  • AppDynamics can make requests to external endpoints over port 443. This is the default.

Define the webhook in AppDynamics

Do the following:

  1. Click Alert & Respond (top menu) and then HTTP Request Templates (left menu).

  2. Create a new request template. Specify the Request URL, Custom request headers, and Payload as defined below.

  3. Add the new request template to the Actions and Policies of interest. in the AppDynamics UI > Alert & Respond page, see Policies and Actions.

Each HTTP request template must include the following. For more information about alerts and HTTP request templates, see docs.appdynamics.com.

Request URL

  • Method = POST

  • Raw URL = The events endpoint shown in the Express web UI > Integrations > Events API page

  • URL Encoding = UTF-8

Custom request headers

Add the following headers:

  • Content-Type = application/json

  • Authorization = Bearer your-API-token-key

To determine your API token key, go to the Express UI > Integrations > Events API page. This page includes sample curl commands that include the API token for your instance.

Payload

The following JSON data structure shows an example payload with AppDynamics variables included. Note the following:

  • Only the source, severity, description, check, and service fields are required.

  • The tags value enables you to specify custom data that is not defined in the standard schema.

  • If AppDynamics variables do not provide the values you want, use the following workarounds as needed:

    • Specify hard-coded strings for the values of interest.

    • Use Enrich events with additional data to enhance new alerts with relevant data from your production environment.Enrich events with additional data

{
    "description": "${latestEvent.displayName} on ${latestEvent.node.name}",
    "severity": "${latestEvent.Severity}",
    "source": "${latestEvent.node.name}",
    "check": "${latestEvent.eventMessage}",
    "service": [
        "${latestEvent.application.name}"
    ] ,
   "tags": {
        "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}"
    }
}