AWS Custom Namespace Monitoring Extension

AWS Custom Namespace Monitoring Extension


Use Case

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


This extension works only with the standalone machine agent.


Note: By default, the Machine agent can only send a fixed number of metrics to the controller. This extension can potentially report thousands of metrics, so to change this limit, please follow the instructions mentioned here.



  1. Download and unzip AWSCustomNamespaceMonitor-<version>.zip into <machine_agent_dir>/monitors/
  2. Edit config.yaml file in AWSCustomNamespaceMonitor/conf and provide the required configuration (see Configuration section)
  3. Restart the Machine Agent.





Note: Please avoid using tab (\t) when editing yaml files. You may want to validate the yaml file using a yaml validator.


accountsFields under this section can be repeated for multiple accounts config
awsAccessKeyAWS Access Key
awsSecretKeyAWS Secret Key
displayAccountNameDisplay name used in metric path"MyAWSCustomNamespace"
regionsRegions where CustomNamespace is registeredAllowed values:
namespacesThe custom namespaces registered for this account that you want to monitor"MyCustomNamespace1"
enableDecryptionIf set to "true", then all aws credentials provided (access key and secret key) will be decrypted - see AWS Credentials Encryption section
decryptionKeyThe key used when encypting the credentials
hostThe proxy host (must also specify port)
portThe proxy port (must also specify host)
usernameThe proxy username (optional)
passwordThe proxy password (optional)
metricTypesFields under this section can be repeated for multiple metric types override
metricNameThe metric name"CPUUtilization"
statTypeThe statistic typeAllowed values:
excludeMetricsMetrics to exclude - supports regex"CPUUtilization",
startTimeInMinsBeforeNowThe no of mins to deduct from current time for start time of query5
endTimeInMinsBeforeNowThe no of mins to deduct from current time for end time of query.
Note, this must be less than startTimeInMinsBeforeNow
maxErrorRetrySizeThe max number of retry attempts for failed retryable requests1
noOfNamespaceThreadsThe no of threads to process multiple namespaces concurrently3
noOfAccountThreadsThe no of threads to process multiple accounts concurrently3
noOfRegionThreadsPerAccountThe no of threads to process multiple regions per account concurrently3
noOfMetricThreadsPerRegionThe no of threads to process multiple metrics per region concurrently3
metricPrefixThe path prefix for viewing metrics in the metric browser."Custom Metrics|Amazon Custom Namespace|"

Below is an example config for monitoring multiple accounts, regions and namespaces:

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

  - awsAccessKey: "XXXXXXXX2"
    awsSecretKey: "XXXXXXXXXX2"
    displayAccountName: "TestAccount_2"
    regions: ["eu-central-1","eu-west-1"]
    namespaces: ["Custom2", "Custom3"]

    enableDecryption: "false"


      - metricName: "GroupInServiceInstances"
        statType: "max"

      - metricName: "GroupMinSize"
        statType: "sum"        

    excludeMetrics: ["GroupMaxSize", "GroupTotal.*"]

      startTimeInMinsBeforeNow: 5
      endTimeInMinsBeforeNow: 0

    maxErrorRetrySize: 0

  noOfNamespaceThreads: 3
  noOfAccountThreads: 3
  noOfRegionThreadsPerAccount: 3
  noOfMetricThreadsPerRegion: 3

metricPrefix: "Custom Metrics|Amazon Custom Namespace|"


AWS Credentials Encryption

To set an encrypted awsAccessKey and awsSecretKey in config.yaml, follow the steps below:

  1. Download the util jar to encrypt the AWS Credentials from here.
  2. Run command:

    java -cp appd-exts-commons-1.1.2.jar com.appdynamics.extensions.crypto.Encryptor EncryptionKey CredentialToEncrypt
    For example: 
    java -cp "appd-exts-commons-1.1.2.jar" com.appdynamics.extensions.crypto.Encryptor test myAwsAccessKey
    java -cp "appd-exts-commons-1.1.2.jar" com.appdynamics.extensions.crypto.Encryptor test myAwsSecretKey
  3. Set the decryptionKey field in config.yaml with the encryption key used, as well as the resulting encrypted awsAccessKey and awsSecretKey in their respective fields.




Typical metric path: Application Infrastructure Performance|<Tier>|Custom Metrics|Amazon Custom Namespace|<Namespace>|<Account Name>|<Region> followed by the metrics defined by your custom namespace.



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



For any questions or feature request, please contact AppDynamics Center of Excellence.


Agent Compatiblity3.7+
Last Update28 March 2018



 Changes in versions:
1.0.2: Adding support for Instance profile, Fixed WstxInputFactory class loading issue in MahcineAgent 4.4