AppDynamics

Step by Step Instructions for Creating AppDynamics as a Datasource.

Prerequisites:

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

1) AppDynamics SaaS portal with Administrator/Account Owner access

2) An API Client (Created on AppDynamics SaaS portal)

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

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 '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 3: 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 user account under which API Client was created

  • Password: AppDynamics SaaS portal user 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)

Create an Alert Source Webhook for AppDynamics

Step 1: Login to cfxDimensions platform with 'Customer Admin' user credentials.

Step2: Click on ‘OIA Administration’ App as shown below.

Step3: Click on an existing Project

Step4: Click on ‘Alert Sources’ on left menu.

Step5: Click on ‘+’ button to add a new 'Alert Source'

Step6: Enter ‘Alert Source Name’, Enter ‘Description’ (Optional), Select ‘Alert Source’ as ‘AppDynamics’ as shown below.

Step7: Enter ‘IP Address/FQDN/DNS’ name of cfxDimensions Platform instance (It is the same IP Address/FQDN/DNS name using which you are accessing the cfxDimensions Platform UI through a Web browser)

Step8: Enter ‘Username’ & ‘Password’ and Click on ‘Save’

Step9: Click on burger menu (three dot button) of AppDynamics Webhook that was created and click on 'View Details' to view the Webhook URL and credential details.

Note: The example format of Webhook URL is https://<cfxDimensions platform IP or FQDN name>/webhooks/hookid/<uuid>

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

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

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

Step 13: 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 14: 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 15: 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 16: 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.