AWS CloudWatch Metrics Explorer

Overview

The cloudwatch-explorer utility can be used to lookup available Cloudwatch metrics.

An AWS Cloudwatch metric explorer.

Usage:
  cloudwatch-explorer [flags]

Flags:
  -h, --help                       help for cloudwatch-explorer
  -d, --metric-dimensions string   The AWS Cloudwatch metric dimension. Can also
                                   be set via the $CLOUDWATCH_METRIC_DIMENSION
                                   environment variable. OPTIONAL.
  -m, --metric-name string         The AWS Cloudwatch metric name. Can also be
                                   set via the $CLOUDWATCH_METRIC_NAME
                                   environment variable. OPTIONAL.
  -n, --metric-namespace string    The AWS Cloudwatch metric namespace. Can also
                                   be set via the $CLOUDWATCH_METRIC_NAMESPACE
                                   environment variable. (default "AWS/EC2")

Example output:

$ ./cloudwatch-explorer -n AWS/EC2 -d InstanceId=i-xxxxxxxxxxxxxxxxx
AWS/EC2/MetadataNoToken (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/EBSIOBalance% (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/EBSByteBalance% (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/EBSReadOps (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/EBSReadBytes (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/EBSWriteOps (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/EBSWriteBytes (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/NetworkIn (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/NetworkOut (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/NetworkPacketsIn (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/NetworkPacketsOut (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/CPUUtilization (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/StatusCheckFailed_System (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/StatusCheckFailed_Instance (InstanceId=i-xxxxxxxxxxxxxxxxx)
AWS/EC2/StatusCheckFailed (InstanceId=i-xxxxxxxxxxxxxxxxx)

NOTE: the --metric-name and --metric-dimensions flags are optional, making it possible to query for all avialable metrics in a Cloudwatch metric namespace.

$ ./cloudwatch-explorer -n AWS/Kinesis
AWS/Kinesis/WriteProvisionedThroughputExceeded (StreamName=example-stream)
AWS/Kinesis/PutRecords.Success (StreamName=example-stream)
AWS/Kinesis/PutRecords.Bytes (StreamName=example-stream)
AWS/Kinesis/IncomingBytes (StreamName=example-stream)
AWS/Kinesis/IncomingRecords (StreamName=example-stream)
AWS/Kinesis/PutRecords.Latency (StreamName=example-stream)
AWS/Kinesis/PutRecords.Records (StreamName=example-stream)

Roadmap

  • Authenticate to the AWS API (via AWS_ACCESS_KEY and AWS_SECRET_ACCESS_KEY)
  • Support AWS IAM environment variables
    • $AWS_ACCESS_KEY
    • AWS_SECRET_ACCESS_KEY
    • AWS_REGION
  • Use the CloudWatch ListMetrics API to list available metrics per region, CloudWatch Namespace, and CloudWatch Metric
  • Optionally filter available metrics by one or more CloudWatch Dimensions
  • Add command flags and --help usage instructions
  • Fetch CloudWatch metrics
  • Output collected metrics in Graphite plaintext format
  • Output collected metrics in InfluxDB line protocol format
  • Output collected metrics in Prometheus exposition format

References