Download PDF
Download page Events and Action Suppression API.
Events and Action Suppression API
This page describes the Events and Suppression API methods you can use to create, manage, and monitor events and action suppression.
Retrieve All Health Rule Violations in a Business Application
Returns all health rule violations that have occurred in an application within a specified time frame.
URI
/controller/rest/applications/application_id/problems/healthrule-violations
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
| URI | Provide either the application name or application id. | Yes |
| Query | Possible values are:
To use this option, you must also specify the " | Yes |
| Query | Duration (in minutes) to return the metric data. | If time-range-type is |
| Query | Start time (in milliseconds) from which the metric data is returned. | If time-range-type is |
| Query | End time (in milliseconds) until which the metric data is returned. | If time-range-type is |
| Query | HTTP Request parameter included as part of the URL to change the output format. Valid values are | No |
http://demo.appdynamics.com/controller/rest/applications/7/problems/healthrule-violations?time-range-type=BEFORE_NOW&duration-in-mins=15 <policy-violations><policy-violation> <id>266</id> <name>CPU utilization is too high</name> <startTimeInMillis>1452630655000</startTimeInMillis> <detectedTimeInMillis>0</detectedTimeInMillis> <endTimeInMillis>1452630715000</endTimeInMillis> <incidentStatus>RESOLVED</incidentStatus> <severity>WARNING</severity> <triggeredEntityDefinition> <entityType>POLICY</entityType> <entityId>30</entityId> <name>CPU utilization is too high</name> </triggeredEntityDefinition> <affectedEntityDefinition> <entityType>APPLICATION_COMPONENT_NODE</entityType> <entityId>16</entityId> <name>Fulfillment</name> </affectedEntityDefinition> <deepLinkUrl>http://demo.appdynamics.com/controller/#location=APP_INCIDENT_DETAIL&incident=266</deepLinkUrl> <description>AppDynamics has detected a problem.<br><b>errorAbhi</b> is violating. </description> </policy-violation> <policy-violation> <id>268</id> <name>CPU utilization is too high</name> <startTimeInMillis>1452630655000</startTimeInMillis> <detectedTimeInMillis>0</detectedTimeInMillis> <endTimeInMillis>1452630715000</endTimeInMillis> <incidentStatus>RESOLVED</incidentStatus> <severity>WARNING</severity> <triggeredEntityDefinition> <entityType>POLICY</entityType> <entityId>30</entityId> <name>CPU utilization is too high</name> </triggeredEntityDefinition> <affectedEntityDefinition> <entityType>APPLICATION_COMPONENT_NODE</entityType> <entityId>20</entityId> <name>FulfillmentClient</name> </affectedEntityDefinition> <deepLinkUrl>http://demo.appdynamics.com/controller/#location=APP_INCIDENT_DETAIL&incident=268</deepLinkUrl> <description>AppDynamics has detected a problem with Node <b>FulfillmentClient</b>.<br><b>CPU utilization is too high</b> started violating and is now <b>warning</b>.<br>All of the following conditions were found to be violating<br>For Node <b>FulfillmentClient</b>:<br>1) Hardware Resources|CPU|%Busy Condition<br><b>%Busy's</b> value <b>76.0</b> was <b>greater than</b> the threshold <b>75.0</b> for the last <b>30</b> minutes<br></description> </policy-violation> </policy-violations>
Retrieve Event Data
You can capture data for the event types listed in the eventtypes
parameter.
URI
/controller/rest/applications/application_id/events
Input Parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
| URI | Provides either the application name or application id. | Yes |
summary | Query | Provides the summary for the event. | Yes |
comment | Query | Provides the comments (if any) for the event. | No |
eventtype | Query | APPLICATION_DEVELOPMENT | Yes |
| Query | Possible values are:
To use this option, you must also specify the "start-time" and "end-time" parameters. The "BETWEEN_TIMES" range includes the start-time and excludes the end-time. | Yes |
| Query | Specify the duration (in minutes) to return the metric data. | If time-range-type is |
| Query | Specify the start time (in milliseconds) from which the metric data is returned. | If time-range-type is |
| Query | Specify the end time (in milliseconds) until which the metric data is returned. | If time-range-type is |
| Query | Specify the comma-separated list of event types for which you want to retrieve event information. See Events Reference. | Yes |
| Query | Provides the severity level. Specify the comma-separated list of severities for which you want to retrieve event information.
In the UI these values become | Yes |
| Query | HTTP Request parameter included as part of the URL to change the output format. Valid values are | No |
tier | Query | Name of the tier in the application | No |
This API can retrieve 600 events at a time.
Example
Retrieve the list of events of type APPLICATION_ERROR
or DIAGNOSTIC_SESSION
of any severity that occurred in the specified time range:
curl --user user1@customer1:your_password http://demo.appdynamics.com//controller/rest/applications/6/events?time-range-type=BEFORE_NOW\&duration-in-mins=30\&event-types=%20APPLICATION_ERROR,DIAGNOSTIC_SESSION\&severities=INFO,WARN,ERROR <events><event> <id>44658</id> <type>DIAGNOSTIC_SESSION</type> <subType>ERROR_DIAGNOSTIC_SESSION</subType> <eventTime>1451343453085</eventTime> <severity>WARN</severity> <summary>Starting Diagnostic Session after series of errors for a Business Transaction 18% (2/11) of requests had errors in the last minute starting 12/28/15 10:57 PM local time</summary> <affectedEntities> <entity-definition> <entityType>APPLICATION</entityType> <entityId>6</entityId> <name>ECommerce</name> </entity-definition> <entity-definition> <entityType>APPLICATION_COMPONENT</entityType> <entityId>11</entityId> <name>ECommerce-Services</name> </entity-definition> <entity-definition> <entityType>APPLICATION_COMPONENT_NODE</entityType> <entityId>19</entityId> <name>ECommerce_WEB2</name> </entity-definition> <entity-definition> <entityType>BUSINESS_TRANSACTION</entityType> <entityId>35</entityId> <name>/items/all.GET</name> </entity-definition> <entity-definition> <entityType>MACHINE_INSTANCE</entityType> <entityId>8</entityId> <name>ECommerce-web1</name> </entity-definition> </affectedEntities> <triggeredEntity> <entityType>APPLICATION_COMPONENT_NODE</entityType> <entityId>19</entityId> <name>ECommerce_WEB2</name> </triggeredEntity> <markedAsRead>false</markedAsRead> <markedAsResolved>false</markedAsResolved> <archived>false</archived> <deepLinkUrl>http://demo.appdynamics.com:8090/controller/#location=APP_EVENT_VIEWER_MODAL&eventSummary=44658</deepLinkUrl> </event> </events>
Create Events
Application deployment events notify AppDynamics when you upgrade your application, push new code, etc. This lets you correlate these application deployment activities with other data inside AppDynamics. This is useful for regression analysis, root cause analysis, and performance studies. It is beneficial to inject your application deployment event into AppDynamics as part of the build process for deploying a new version of your application.
The AppDynamics REST API lets you integrate events of type APPLICATION_DEPLOYMENT
with other systems.
For example, to create an event automatically in your AppDynamics monitored system for every new release you would integrate these systems and use the following REST API to create an event of type "APPLICATION_DEPLOYMENT"
in your managed environment.
You should receive the event ID after the successful invocation of the request.
Roles and Permissions
URI
POST /controller/rest/applications/application_id/events
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
| URI | Provide either application name or application id. | Yes |
| Query | Provide a summary describing the event. | Yes |
| Query | Provide the comments (if any) for the event. | No |
| Query |
| Yes |
severity | Query | Provide a severity level. Allowed values include:
In the UI, these become " | Yes |
Create a Custom Event
You can create custom events to be reported in the AppDynamics event viewer and in the event panels on the AppDynamics dashboards. See Monitor Events to learn how to filter on your custom events. Then you can create alerts triggered by these events as you do for AppDynamics standard events.
You should receive the event ID after the successful invocation of the request.
Roles and Permissions
URI
POST /controller/rest/applications/application_id/events
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
| URI | Provide either application name or application id. | Yes |
| Query | Provide a summary describing the event. | Yes |
| Query | Provide a comment for the event. | No |
severity | Query | Provide a severity level. Allowed values include:
In the UI, these become " | Yes |
| Query | CUSTOM | Yes |
customeventtype | Query | Provide a name for the "type". For example, the source could be "nagios". | No |
node | Query | Provide the affected node name. | No |
tier | Query | Provide the affected tier name. | Yes, if node and bt are specified |
bt | Query | Provide the affected business transaction name. | No |
propertynames | Query | Provide a property name as a pair, i.e., the "key". | No, but if one element of the pair is defined, the other must be defined also |
propertyvalues | Query | Provide the property value as a pair, i.e., the "value" . The value is limited to 5000 characters. | No, but if one element of the pair is defined, the other must be defined also |
Example
curl -X POST --user user1@customer1:your_password 'http://demo.appdynamics.com/controller/rest/applications/5/events?severity=INFO&summary=test1&eventtype=CUSTOM&customeventtype=mycustomevent&propertynames=key1&propertynames=key2&propertyvalues=value1&propertyvalues=value'
Notice the pattern for custom properties: propertynames
and propertyvalues
get matched up by order position, so to set N property values, you need N occurrences of propertynames
and N occurrences of propertyvalues
.
Create Custom URLs for Notifications
Single tenants in a multi-tenant Controller instance should use this API method to specify a custom or vanity URL for notification purposes. Instead of a URL such as paid8.appdynamics.com
being displayed as the host, the custom URL can be displayed as yourcompany.appdynamics.com
in the notification.
URI
POST /controller/rest/accounts/customer_name/update-controller-url
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
customer_name | URI | The customer account name | Yes |
Body Parameter
As Application/JSON content:
{
"controllerURL": "http://<my-custom-hostname:port>"
}
If the URL in the alerts is invalid, you can set it using the following curl command:
curl -k --basic --user root@system --header "Content-Type: application/json" --data '{ "controllerURL": "http://<controller>:<port>" }' http://<controller>:<port>/controller/rest/accounts/<ACCOUNT-NAME>/update-controller-url
curl -k --basic --user root@system --header "Content-Type: application/json" --data '{ "controllerURL": "http://<controller>:<port>" }' http://<controller>:<port>/controller/rest/accounts/<ACCOUNT-NAME>/update-controller-url
For example:
curl -k --basic --user root@system --header "Content-Type: application/json" --data '{ "controllerURL": "https://myVIP:443" }' https://myhost:8181/controller/rest/accounts/customer1/update-controller-url
There is no need to reset the Controller as upgrading it will reset the deep link URL settings.
Create and Delete Action Suppressions
By default any response is in JSON, although XML can be requested by using the following header:Name : Accept
Value : application/vnd.appd.cntrl+xml;v=1
Retrieve All Existing Action Suppressions
Use this to retrieve a list of all existing action suppressions.
URI
GET /controller/api/accounts/account_id/applications/application_id/actionsuppressions
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
account_id | URI | The account ID | Yes |
| URI | The application ID | Yes |
Example request to get all action suppressions:
/controller/api/accounts/2/applications/9/actionsuppressions
Example response:
Status : 200 ok Output Data : {"actionSuppressions": [{"id": "15","name": "App-ASW","timeRange": {"startTimeMillis": "2014-10-25T04:16:30+0000","endTimeMillis": "2014-10-25T06:16:30+0000"},"affects": {"type": "APP"}},{"id": "16","name": "Node-ASW","timeRange": {"startTimeMillis": "2014-10-25T04:16:57+0000","endTimeMillis": "2014-10-25T05:16:57+0000"},"healthRuleIds": [60,61],"affects": {"type": "NODE","nodeAffectedEntities": {"type": "SPECIFIC","nodeType": "ALL","nodes": [17,18]}}}],"actions": [{"href": "http://demo.appdynamics.com:8090/controller/api/accounts/2/applications/9/actionsuppressions/%7Bactionsuppressions.id%7D/%7Bactions.name%7D","method": ["POST","DELETE"],"name": "enabled"}],"links": [{"href": "http://ec2-54-80-163-175.compute-1.amazonaws.com:8090/controller/api/accounts/2/applications/9/actionsuppressions/%7Bactionsuppressions.id%7D","name": "actionsuppressions"}]}
Retrieve a Specific Action Suppression by ID
Use this to get an action suppression by the specified ID.
URI
/controller/api/accounts/account_id/applications/application_id/actionsuppressions/actionsuppression_id
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
account_id | URI | The account id. | Yes |
| URI | The application id. | Yes |
actionsuppressions_id | URI | The action suppression id. | Yes |
Example request:
/controller/api/accounts/2/applications/9/actionsuppressions/15
Example response:
Status : 200 ok Output Data : {"id": "15","name": "App-ASW","timeRange": {"startTimeMillis": "2014-10-25T04:16:30+0000","endTimeMillis": "2014-10-25T06:16:30+0000"},"affects": {"type": "APP"}}
Create a New Action Suppression
This is a POST request that should return a 201 - created response.
URI
POST /controller/api/accounts/account_id/applications/application_id/actionsuppressions
Input parameters
Parameter Name | Parameter Type | Value | Mandatory | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
account_id | URI | The account ID. | Yes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| URI | The application ID. | Yes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | body key | The name of the action suppression window. | Yes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
timeRange | body key | The start and end time of the window. | Yes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
healthRuleIds | body key | The ids of the affected health rules. If not provided, all rules affected | No | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
affects | body key | Type of entity and corresponding IDs:
| Yes |
Example request
/controller/api/accounts/2/applications/9/actionsuppressions
Header
Name: Content-Type
Value: application/vnd.appd.cntrl+json;v=1
Body
{"name": "App-ASW_2","timeRange": {"startTimeMillis": "2014-10-25T04:16:30+0000","endTimeMillis": "2014-10-25T06:16:30+0000"},"affects": {"type": "APP"}}
or
{"name": "Node-ASW_1","timeRange": {"startTimeMillis": "2014-10-25T04:16:57+0000","endTimeMillis": "2014-10-25T05:16:57+0000"},"healthRuleIds": [60,61],"affects": {"type": "NODE","nodeAffectedEntities": {"type": "SPECIFIC","nodeType": "ALL","nodes": [17,18]}}}
Delete a Specific Action Suppression by ID
This is a DELETE
request that should return a 204 - No Content
message.
URI
DELETE /controller/api/accounts/account_id/applications/application_id/actionsuppressions/actionsuppression_id
Input parameters
Parameter Name | Parameter Type | Value | Mandatory |
---|---|---|---|
account_id | URI | The account ID | Yes |
| URI | The application ID | Yes |
actionsuppression_id | URI | The ID of the action suppression to be deleted | Yes—The Alert and Respond APIs let you manage and monitor events, health rules, and other aspects of the AppDynamics alert and respond features. |