AppDynamics

Send monitoring eventsfrom AppDynamics to BigPanda.

Supported VersionsTypeAuthentication Type
up to v21; On-Premise, Dedicated SaaS DeploymentsWebhookOrg Bearer Token

The integration uses a custom HTTP action, policy, and template in AppDynamics. When an event occurs and a policy fires the action, AppDynamics sends an HTTP request to BigPanda as defined by the template. BigPanda then processes and correlates the alert data to create and maintain up-to-date incidents in BigPanda.

👍

Open Integration Manager

The Open Integration Manager is available for use with AppDynamics. For more information, see the Open Integration Manager documentation.

❗️

Payload Size

Alert payloads must be 6MB or smaller. Larger payloads will fail to process with BigPanda. We recommend reviewing your configurations to ensure that only actionable, useful information is being sent to BigPanda.

Key Features

  • Is resource-efficient for the AppDynamics controller; reuses one server thread for all alerts
  • Uses the Custom HTTP action feature in AppDynamics alerts

Install the Integration

Determine Your Version

AppDynamics Webhooks are available in AppDynamics version 4.1 and up.

Create the BigPanda HTTP Request Template

Note: Complete this step only one time per AppDynamics controller.

  1. Log in to your AppDynamics controller.

  2. Click Alert & Respond.

  3. Click HTTP Request Templates.

  4. Click New.

  5. In the Name field, enter BigPandaAlertTemplate.

  6. In the Request URL section:

    • For the method, select POST.
    • In the Raw URL field, enter https://integrations.bigpanda.io/appdynamicsapi_v3/alerts?access_token=<Your access token>&app_key<Your app key>.
  7. In the Payload section:

    • In the MIME Type field, enter application/json.
    • In the text area, copy the following template:
    {
        "account_name": "${account.name}",
        "account_id": "${account.id}",
        "action_name": "${action.name}",
        "action_id": "${action.id}",
        "action_trigger_time": "${action.triggerTime}",
        "controller_link_url": "${controllerUrl}",
        "clamped": ${clamped},
        "clamp_limit": ${clampLimit},
        "from_web_hook": true,
      #if (${notes})
        "notes": "${notes}",
      #end
        "policy_name": "${policy.name}",
        "policy_id": "${policy.id}",
        "policy_digest": ${policy.digest},
        "full_events_list":              [
      #foreach(${event} in ${fullEventList})
        {
      #if (${event.healthRuleEvent})
          "health_rule_event": ${event.healthRuleEvent},
          "health_rule_violation_event": ${event.healthRuleViolationEvent},
          "health_rule_id": ${event.healthRule.id},
          "health_rule_name": "${event.healthRule.name}",
          "incident_id": "${event.incident.id}",
          "incident_name": "${event.incident.name}",
          "appd_event_type": "health-rule",
      #else
          "appd_event_type": "error-event",
      #end
          "display_name": "${event.displayName}",
          "app_id": ${event.application.id},
          "app_name": "${event.application.name}",
          "bt_performance_event": ${event.btPerformanceEvent},
          "deep_link_url": "${event.deepLink}",
          "event_type": "${event.eventType}",
          "event_message": "${event.eventMessage.replaceAll("\\<[^>]*\\>","")}",
          "event_type_key": "${event.eventTypeKey}",
          "event_time": "${event.eventTime}",
          "guid": "${event.guid}",
      #if (${event.node_name})
          "node_name": "${event.node.name}",
          "node_id": "${event.node.id}",
      #end
          "summary_message": "${event.summaryMessage.replaceAll("\\<[bB][rR]\\>","\\n").replaceAll("\\<[^>]*\\>","")}",
          "severity": "${event.severity}",
          "event_type_severity": "#if (${event.eventType.toString().matches(".*((?:CLOSE)|(?:CANCELED)).*|.*((?:SYNTHETIC.*CRITICAL)|(?:CRITICAL.*SYNTHETIC)).*")})${event.eventType.toString().replaceAll(".*((?:CLOSE)|(?:CANCELED)).*|.*((?:SYNTHETIC.*CRITICAL)|(?:CRITICAL.*SYNTHETIC)).*","$1$2").replaceAll(".*((?:CRITICAL)|(?:CLOSE)|(?:CANCELED)).*","$1")}#end",
          "tag": "bigpanda-api",
      #if (${event.tier_name})
          "tier_name": "${event.tier.name}",
          "tier_id": "${event.tier.id}",
      #end
      #foreach(${entity} in ${event.affectedEntities})
        #if(${entity.entityType} == "APPLICATION_COMPONENT")#set($affected_tier = $entity.name)#end
        #if(${entity.entityType} == "APPLICATION_COMPONENT_NODE")#set($affected_node = $entity.name)#end
          "${entity.entityType}_name": "${entity.name}",
          "${entity.entityType}_id": "${entity.id}",
      #end
      "object": "${event.application.name}#if(${event.tier_name}) ${event.tier_name}#elseif(${affected_tier}) ${affected_tier}#end#if(${event.node_name}) ${event.node_name}#elseif(${affected_node}) ${affected_node}#end",
      "title": "${event.application.name}#if(${event.tier_name}): ${event.tier_name}#elseif(${affected_tier}): ${affected_tier}#end#if(${event.node_name}): ${event.node_name}#elseif(${affected_node}): ${affected_node}#end",
          "affected_entities":           [
      #foreach(${entity} in ${event.affectedEntities})
              {
                "id": ${entity.id},
                "name": "${entity.name}",
                "type": "${entity.entityType}"
              }#if ($foreach.hasNext), #end
      #end
          ]
        }#if ($foreach.hasNext), #end
      #end
        ]
      }
    
  8. In the Response Handling Criteria section, click Add Success Criteria.

  9. Select 201 from the Status Code drop-down menu.

  10. In the Settings section, ensure that the One Request Per Event check box is not selected.

  11. Click Save.

Create an AppDynamics Policy

Note: Repeat this step for each Application.

  1. Go to Application > Alert & Respond > Policies, and click Create Policy Manually.

  2. In the Create Policy window:

    • In the name field, enter BigPanda.
    • Select all check boxes for event types that you would like to send alerts to BigPanda.

Create an AppDynamics Action

  1. In the left pane of the Create Policy window, click Actions, and then click +.

  2. If you already created a BigPandaAlert action for another application in AppDynamics, choose it and then click Select. If you have not created a BigPandaAlert action for another application in AppDynamics, create the action:

    1. Click Create.
    2. Select Make an HTTP Request.
    3. Click OK.
    4. In the HTTP Request Template field, select BigPandaAlertTemplate.
    5. The action you just created will now be available in the Select Action list. Click it, then press +.
    6. Click Save to save the action.
  3. Click Save to create the new policy.

AppDynamics Data Model

BigPanda normalizes alert data from AppDynamics into tags. You can use tag values to filter the incident feed and to define filter conditions for Environments. The primary and secondary properties are also used during the deduplication and correlation processes.

Standard Tags

TagsDescription
applicationName of the business application
messageSummary of the notification. For example: health rules have been violated
severitySeverity of the alert in AppDynamics
incidentAppDynamics incident identifier
app dynamics_urlURL to the Controller UI in AppDynamics for this event
event_guidUnique identifier for the AppDynamics event
appd_event_typeWhat type of event occurredOptions include: Health-rule or Error-event
affectedEntitiesList of the affected entitiesThis integration supports 4 types of entities: Application, Node, Tier, and Business Transaction.For entities not already mapped to existing tags, BigPanda adds name and ID tags for the entity
objectConcatenation of the business application, tier name, and node nameprimary_property*
titleConcatenation of the business application, tier name, and node name, delimited by colons.For Example “Application: Tier: Node”
notesNotes describing the event that was triggered

The BigPanda AppDynamics integration files events into one of two classifications: Health Rule events and Error events. These classifications have tags that are specific to that type of event.

Health Rule Tags

TagsDescription
health_ruleName of the health rule that was violatedsecondary_property*
incident_idName of the incident that was triggered

Error Event Tags

TagsDescription
error_nameNormalized name of the error that occurred
error_display_nameAppDynamics display name for the error that occurred. secondary_property*

Custom Tags

The AppDynamics alert allows you to add extra fields, to be included as tags on the BigPanda alert. If you wish to add a tag not included in the above list, add the tag to the HTTP request template and update the include_fields list to include the field. For a list of variables that can be used in the AppDynamics HTTP request template, please consult the Predefined Templating Variables section of the AppDynamics documentation.

For more information on adding custom tags to the final BigPanda alert, please see the in-app AppDynamics integration documentation.

Delete the Integration

Deleting an integration requires that you remove the integration in both the integrated system and BigPanda. We recommend that you first uninstall the integration on the integrated system to prevent traffic from being sent and rejected by BigPanda, since the app key will not exist once you delete the integration in BigPanda.

❗️

Caution During Replacement

When replacing an existing integration with a new tool or system, we recommend configuring the new integration first to ensure no data is lost.

Deactivate Inbound Integration

If you want to stop sending data to BigPanda but don’t want to delete your integration, you can temporarily deactivate it.

To deactivate an inbound integration:

  1. In BigPanda, navigate to the Integrations tab and select the desired integration from the list. This will open integration details on the right side of the window.
  2. At the top of the integration details, click the Active/Inactive toggle next to the application name to change the status of the integration.

In the integrations list, inactive integrations will be marked with a gray bar.

Stop Sending Data to BigPanda

You must delete the BigPanda action, policy, and template from AppDynamics to stop sending alerts to BigPanda via the AppDynamics Webhook integration.

Before you start

Manually resolve any open incidents related to the integration to remove them from your incident feed. Optionally, remove any additional data in BigPanda. For example, modify or remove any Environments or AutoShare rules that reference the integration.

Delete the BigPanda Action, Policy, and Template

  1. Log in to your AppDynamics controller & navigate to Actions
  2. Delete the BigPandaAlert action
  3. Go to Application > Alert > Respond > Policies
  4. Delete the BigPanda policy
  5. Go to Alert > Respond > HTTP Request Templates
  6. Click Delete beside the BigPandaAlertTemplate row

Delete the Integration in BigPanda

Take the following steps to delete the integration from BigPanda:

  1. In BigPanda, navigate to the Integrations tab and select the desired integration from the list.
  2. In the integration details on the right of the page, click the trash icon, then confirm you want to delete the integration. The integration will be removed immediately.

👍

️Automatic Alert Resolution for Deleted Integrations

All active alerts from the integration will be resolved after deletion.

❗️

Data Removal

This procedure does not remove any data from the integrated system.

Release Notes

v3.0.0 (9/13/23)

v2.0.0 (10/12/21)

  • Error alert types now included
  • Note Field Added
  • Additional Tags Included

v1.0.0

  • Initial release