AppDynamics Extension for AWS API Gateway Monitoring

Use Case

Captures statistics for APIs in the API Gateway from Amazon CloudWatch and displays them in the AppDynamics Metric Browser.

Prerequisites

  1. Please give the following permissions to the AWS account being used in the extension. cloudwatch:ListMetrics, cloudwatch:GetMetricStatistics
  2. In order to use this extension, you do need a Standalone JAVA Machine Agent or SIM Agent. For more details on downloading these products, please visit here.
  3. The extension needs to be able to connect to AWS Cloudwatch in order to collect and send metrics. To do this, you will have to either establish a remote connection in between the extension and the AWS service, or have the machine agent(with the extension) on the same machine running the product in order for the extension to collect and send the metrics.

Installing the extension

  1. Download and unzip the AWSAPIGatewayMonitor-version.zip file into <MACHINE_AGENT_HOME>/monitors/ directory.
  2. Configure the extension by referring to the below section.
  3. Restart the machine agent.

Configuring the extension using config.yml

Configure the AWS API Gateway monitoring extension by editing the config.yml file in <MACHINE_AGENT_HOME>/monitors/AWSAPIGatewayMonitor/

  1. If SIM is enabled, then use the following metricPrefix metricPrefix: "Custom Metrics|AWS APIGateway" Else, configure the "COMPONENT_ID" under which the metrics need to be reported. This can be done by changing the value of <COMPONENT_ID> in metricPrefix: "Server|Component:|Custom Metrics|AWS APIGateway|"

    For example, metricPrefix: "Server|Component:100|Custom Metrics|AWS APIGateway|"

  2. Configure the cloud watch monitoring level. This is required to reduce the number of API calls to cloudwatch. Basic will fire CloudWatch API calls every 5 minutes. Detailed will fire CloudWatch API calls every 1 minutes
    cloudWatchMonitoring: "Basic"
    
    If you want to run the extension with a further delay, comment the "cloudWatchMonitoring" and use the following field which takes in the number of minutes after which the extension should call the cloudwatch metrics.
    cloudWatchMonitoringInterval:10
    
  3. Configure the AWS account by specifying the awsAccessKey(required), awsSecretKey(required) of the AWS account. displayAccountName(required) and regions(required) also needs to be configured.

    For example,

    accounts:
      - awsAccessKey: "XXXXXXXX1"
        awsSecretKey: "XXXXXXXXXX1"
        displayAccountName: "TestAccount_1"
        regions: ["us-east-1","us-west-1","us-west-2"]
    

  4. If you know for which Apis you need the metrics for, the you can mnitor only those Apis. This can be done by secifying the patterns of the Api names that needs to be minitored

    For example, If you want only Apis who name is exactly "sample" as well as the Apis with the name starting with demo, then you can configure it as below

    apiNames: ["^sample$", "^demo"]
    

Metrics

  • 4XXError : The number of client-side errors captured in a specified period.
  • 5XXError : The number of server-side errors captured in a given period.
  • CacheHitCount : The number of requests served from the API cache in a given period.
  • CacheMissCount : The number of requests served from the back end in a given period, when API caching is enabled.
  • Count : The total number API requests in a given period.
  • IntegrationLatency : The time between when API Gateway relays a request to the back end and when it receives a response from the back end.
  • Latency : The time between when API Gateway receives a request from a client and when it returns a response to the client. The latency includes the integration latency and other API Gateway overhead.

Apart from the above metrics, the extension also gives a metric called "API calls", that gives out the number of cloudwatch API calls per minutes from the extension.

Advanced Configuration

Prerequisites:
You need to have events service setup and working before you do the following.
Configuration steps:

To get configuration metrics related to AWS API Gateway on your analytics platform, please follow the below steps:

  • 1. In the config.yml, uncomment the following section and enable the different metrics you want.
    #eventsService:
    #    enableTraditionalMetrics: false
    #    enableApiMetrics: false
    #    enableResourceMetrics: false
    #    enableStageMetrics: false
    #    credentials:
    #        controllerEventsServiceHost: ""
    #        controllerEventsServicePort: 9080
    #        enableSSL: false
    #        controllerGlobalAccountName: ""
    #        eventsAPIKey: ""
    
  • 2. For example, if you want to enable the resource metrics, change the enableResourceMetrics field to true. Do the same for enableTraditionalMetrics, enableApiMetrics, enableResourceMetrics, enableStageMetrics as per you requirement.
     enableTraditionalMetrics: false
     enableApiMetrics: false
     enableResourceMetrics: false
     enableStageMetrics: false
    
  • 3. Fill out the credentials section with the events service host credentials. "controllerEventsServiceHost" is the host that contains the events service. "controllerEventsServicePort" is the port of the events service. "controllerGlobalAccountName" is the Global Account Name that can be found from License -> Account in the controller. You need to create an eventsAPIKey for the extension. This can be done from the analytics section on the controller.
    credentials:
            controllerEventsServiceHost: ""
            controllerEventsServicePort: 9080
            enableSSL: false
            controllerGlobalAccountName: ""
            eventsAPIKey: ""
    
  • 4. Once all the details are filled and the extension is restarted, you can see the configuration metrics in the analytics section of the controller. The tables that contain the data are:
    AWSAPIGatewayMonitor_traditionalMetrics
    AWSAPIGatewayMonitor_APIMetrics
    AWSAPIGatewayMonitor_ResourceMetrics
    AWSAPIGatewayMonitor_StageMetrics
    

WorkBench

Workbench is an inbuilt feature provided with each extension in order to assist you to fine tune the extension setup before you actually deploy it on the controller. Please review the following document on How to use the Extensions WorkBench

WorkBench

Please follow the steps listed in this troubleshooting-document in order to troubleshoot your issue. These are a set of common issues that customers might have faced during the installation of the extension. If these don't solve your issue, please follow the last step on the troubleshooting-document to contact the support team.

Version

Current Version:

1.0.0

Controller compatibility:

4.4 or later

Last Update:

05/24/2018

Troubleshooting

Please follow the steps specified in the Troubleshooting document to debug problems faced while using the extension.

Contributing

Always feel free to fork and contribute any changes directly via GitHub.

Support

For any questions or feature request, please contact AppDynamics Support.