AWS Billing Monitoring Extension

Use Case

Captures Billing statistics from Amazon CloudWatch and displays them in the AppDynamics Metric Browser.

Prerequisites

  1. Before the extension is installed, the prerequisites mentioned here need to be met. Please do not proceed with the extension installation if the specified prerequisites are not met.
  2. The following permissions are needed to the AWS user whose accessKey and secretKey ae going to be used in the extension.
    cloudwatch:ListMetrics, cloudwatch:GetMetricStatistics
    The alternative to providing keys in the extension is installing the machine agent with the extension on an AWS EC2 instance and providing the instance with a role that has the above permissions.

Agent Compatibility:

Note: This extension is compatible with Machine Agent version 4.5.13 or later.

  1. If you are seeing warning messages while starting the Machine Agent, update the http-client and http-core JARs in {MACHINE_AGENT_HOME}/monitorsLibs to httpclient-4.5.9 and httpcore-4.4.12 to make this warning go away.

  2. To make this extension work on Machine Agent < 4.5.13, the http-client and http-core JARs in {MACHINE_AGENT_HOME}/monitorsLibs need to be updated to httpclient-4.5.9 and httpcore-4.4.12.

Installing the extension

  1. Download and unzip the AWSBillingMonitor-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 Billing monitoring extension by editing the config.yml file in <MACHINE_AGENT_HOME>/monitors/AWSBillingMonitor/

  1. Edit the file config.yml located at <MachineAgent_Dir>/monitors/AWSBillingMonitor The metricPrefix of the extension has to be configured as specified here. Please make sure that the right metricPrefix is chosen based on your machine agent deployment, otherwise this could lead to metrics not being visible in the controller.
  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, awsSecretKey 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"]
    

    NOTE: If you have the machine agent with extension installed on an AWS EC2 instance which has an assigned role with appropriate permissions as specified in the prerequisites section, then the awsAccessKey and awsSecretKey fields should be left empty as follows:

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

  4. If you know for which AWS services you need the billing metrics for, the you can monitor only those services. This can be done by secifying the patterns of the service names that needs to be minitored

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

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

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

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.

Compatibility

Current Version:

2.0.0

Agent compatibility:

4.5.13 or later

Controller compatibility:

4.4 or later

Last Update:

May 1, 2020