AppDynamics

Introduction

This section explains on how to integrate and ingest data from AppDynamics into CloudFabrix. The integration allows

  • Ingest AppDynamics Alerts, Events, Health Rule Violations

  • Ingest AppDynamics Observability data, Asset Metadata

  • allows to extend the reach of AppDynamics operational data into ITSM tools and processes.

  • allows to view, compare and correlate cross-domain incident relevant metrics & logs with Triage Dashboard.

  • provides rich context to operational data with CloudFabrix automated full stack resolution.

AppDynamics and CloudFabrix

DataSource is the term frequently used by CloudFabrix. It is the source system where the relevant data resides. By adding a system as datasource for example AppDynamics, then it is the source for pulling the necessary information from the system into CloudFabrix.

Prerequisites

The following are pre-requisites for creating AppDynamics as a Datasource. It is used for Alert Notifications from AppDynamics and collecting Server/Application Configuration and Metrics on-demand.

1) AppDynamics SaaS portal with Administrator/Account Owner access

2) An API Client with Monitoring & Viewer role permissions

3) Service User Account with Monitoring & Viewer role permissions

4) One or more Applications or Databases being monitored by AppDynamics

5) Click here for Alert Sources to create a Webhook URL for AppDynamics alert notifications in CloudFabrix OIA application.

Enabling API access on AppDynamics SaaS controller:

Step 1: Login to AppDynamics SaaS portal as the administrator / account owner. Navigate to Administration under 'Settings':

Step 2: Click on 'Users' and click '+' to add new service account user

Step3: Enter service account Username, Email, Name, Password and click on 'Add' under Roles section to set Monitoring/Viewer permissions and Save the settings.

Step 4: Click on 'API Clients' and click '+' to add new API Client

Enter Client Name, Description, Generate Client Secret by clicking on 'Generate Secret' button.

Note: Make a copy of Client Secret generated as this key will be required later.

Step 5: Navigate to Roles tab and click on 'Add' to add new role and select the permissions as shown below and click 'Done'.

On next screen, click 'Save'.

Adding AppDynamics as DataSource:

Step 1: Login to cfxDimensions through web browser UI with 'Customer Admin' user credentials.

Step 2: Click on 'Datasources' App

Step 3: Under Datasources App select '+' (top right corner) as shown below.

Step 4: Enter 'Datasource Name', 'Description' and Select 'AppDynamics' as Datasource Type similar to as shown below.

Enter the below details:

  • Endpoint URL: Your AppDynamics SaaS controller URL (Eg: acmesoftware.saas.appdynamics.com/controller)

  • Client Name: API Client Name that was created for API Access on AppDynamics SaaS portal

  • Client Secret: Paste your client secret that you copied earlier

  • Account: AppDynamics SaaS portal account name

  • Username: AppDynamics SaaS portal service account's username

  • Password: AppDynamics SaaS portal service account's password

  • Timeout: The timeout in seconds for an API request to AppDynamics SaaS controller

Click on 'Test Connectivity' to verify the network access to AppDynamics SaaS controller and validate the API and User credentials. Click 'Save' once Test Connectivity result is successful.

Note: User Proxy Settings if there is HTTP Proxy configured for any outbound network access.

  • No Proxy: Select this option if there is no HTTP Proxy configured in your environment for any outbound network access.

  • Use Platform Proxy: Select this option if there is HTTP Proxy configured in your environment for any outbound network access. When this option is selected, this Datasource uses the HTTP proxy settings that were configured during initial cfxDimensions platform setup.

  • Use Custom Proxy: Select this option if there is HTTP Proxy configured in your environment for any outbound network access. This option is needed when cfxDimensions platform setup is not configured with HTTP Proxy settings.

    • Enter HTTP Proxy server IP or FQDN/DNS Name with port (Ex: 192.168.10.10:8080 or http-proxy.acme.com:80)

    • Enter HTTP Proxy username (Optional)

    • Enter HTTP Proxy password (Optional)

Configure AppDynamics for Alert notifications over a Webhook:

Step 1: Login to AppDynamics SaaS portal as the administrator / account owner.

Step 2: Go to 'Alert & Respond' tab, click on 'HTTP Request Templates' and click on '+' to create a new Webhook based notification.

Step 3: Click '+ New' to create new request template.

Step 4: Enter the ‘Webhook Name’, under 'Request URL' select HTTP method as 'POST', and for 'Raw URL', enter the Webhook URL which was generated within the OIA administration.

Step 5: For Authentication type, select 'BASIC' and enter username & password which was chosen while generating the Webhook URL within the OIA administration. Under 'Custom Request Headers', add a new Header with a key value pair as 'Content-Type' and 'application/json'

Step 6: Under 'Payload' section, select 'MIME Type' as 'application/json' and enter the alert field attributes as shown below.

{ 
    "controllerUrl": "${controllerUrl}",
    "accountId": "${account.id}",
    "accountName": "${account.name}",
    "policy": "${policy.name}",
    "action": "${action.name}",
    #if(${notes})
        "notes": "${notes}",
    #end
    "topSeverity": "${topSeverity}",
    "eventType": "${latestEvent.eventType}",
    "eventId": "${latestEvent.id}",
    "eventGuid": "${latestEvent.guid}",
    "displayName": "${latestEvent.displayName}",
    "eventTime": "${latestEvent.eventTime}",
    "severity": "${latestEvent.severity}",
    "applicationName": "${latestEvent.application.name}",
    "applicationId": "${latestEvent.application.id}",
    "tier": "${latestEvent.tier.name}",
    "node": "${latestEvent.node.name}",
    #if(${latestEvent.db.name})
        "db": "${latestEvent.db.name}",
    #end
    #if(${latestEvent.healthRule.name})
        "healthRule": "${latestEvent.healthRule.name}",
    #end
    #if(${latestEvent.incident.name})
        "incident": "${latestEvent.incident.name}",
    #end
    "affectedEntities": [
    #foreach($entity in ${latestEvent.affectedEntities})
        {
          "entityType": "${entity.entityType}",
          "name": "${entity.name}"
        } #if($foreach.hasNext), #end
    #end
    ],
    "deepLink": "${latestEvent.deepLink}",
        "summaryMessage": "$!{latestEvent.summaryMessage.replace('"','')}",
        "eventMessage": "$!{latestEvent.eventMessage.replace('"','')}",
    "healthRuleEvent": ${latestEvent.healthRuleEvent},
    "healthRuleViolationEvent": ${latestEvent.healthRuleViolationEvent},
    "btPerformanceEvent": ${latestEvent.btPerformanceEvent},
    "eventTypeKey": "${latestEvent.eventTypeKey}"
 }

Step 7: Under 'Respond Handling Criteria' section, configure the response codes for both 'Failure Criteria' and 'Success Criteria' as shown below. Under 'Settings' section, enable 'One Request Per Event' and click on 'Test' to send a sample event to cfxDimensions platform. Once Test is successful, click on 'Save' to commit the Webhook notification settings.

Note: Appropriate CA signed SSL certificate need to be installed on cfxDimensions platform to avoid Webhook connectivity failures.

Last updated