telegraf/plugins/inputs/cloudwatch
Vebjorn Ljosa bd4843d5f2 Cloudwatch input plugin 2016-03-29 10:59:52 -04:00
..
README.md Cloudwatch input plugin 2016-03-29 10:59:52 -04:00
cloudwatch.go Cloudwatch input plugin 2016-03-29 10:59:52 -04:00
cloudwatch_test.go Cloudwatch input plugin 2016-03-29 10:59:52 -04:00

README.md

Telegraf Plugin: Cloudwatch

Configuration:

# Read metrics from Cloudwatch
[[inputs.cloudwatch]]
  ## AWS region
  region = "us-east-1"
  ## specify namespaces as strings
  namespaces = ["AWS/EC2", "AWS/DynamoDB"]

In each iteration, the cloudwatch input plugin queries Cloudwatch for datapoints that are timestamped since the last iteration. (The first iteration does not retrieve any data.)

Some AWS services post timepoints late, in the sense that new timepoints are timestamped 23 minutes in the past. These points will be missed by the cloudwatch input plugin if you run telegraf with a short interval. Running telegraf with a longer interval, such as 5m, is recommended.

Measurements:

Each namespace becomes a measurement, converted to snake_case and prefixed with cloudwatch. For instance, the namespace AWS/EC2 becomes the measurement cloudwatch_aws_ec2, and the namespace AWS/DynamoDB becomes the measurement cloudwatch_aws_dynamo_db.

Fields

The cloudwatch input plugin retrieves all statistics from all measurements in the specified namespaces. Each combination of metric and statistic becomes a field. Metric names are converted to snake_case. As an example, the metric DiskWriteBytes leads to the fields

  • disk_write_bytes_average,
  • disk_write_bytes_maximum,
  • disk_write_bytes_minimum,
  • disk_write_bytes_sample_count, and
  • disk_write_bytes_sum.

To learn about the metrics for a particular Cloudwatch namespace, and to see units and example data, see the AWS documentation for the service in question, or explore using the AWS Console or AWS CLI.

Tags

The cloudwatch input plugin tags the metrics it collects with the AWS region (key: region) and the cloudwatch dimensions of the metric in question. The dimensions names are converted to snake_keys, but the values are left as is. As an example, the AWS/DynamoDB namespace has a metric called ThrottledRequest with the dimensions Operation and TableName. An example set of tags for this metric could be:

  • region: us-east-1
  • operation: GetItem
  • table_name: foo

Example output

$ ~/src/go/bin/telegraf -config ~/tmp/kapacitor/telegraf.conf -input-filter cloudwatch -debug
2016/03/29 10:47:15 Attempting connection to output: influxdb
2016/03/29 10:47:16 Successfully connected to output: influxdb
2016/03/29 10:47:16 Starting Telegraf (version 0.11.1-54-ge07c792)
2016/03/29 10:47:16 Loaded outputs: influxdb
2016/03/29 10:47:16 Loaded inputs: cloudwatch
2016/03/29 10:47:16 Tags enabled: host=vljosa-yieldbot.local
2016/03/29 10:47:16 Agent Config: Interval:5m0s, Debug:true, Quiet:false, Hostname:"vljosa-yieldbot.local", Flush Interval:11.228634593s 
2016/03/29 10:50:00 Found 26 cloudwatch metrics
2016/03/29 10:50:00 Gathered metrics, (5m0s interval), from 1 inputs in 709.03259ms
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,table_name=prd-platform-datomic-config consumed_write_capacity_units_average=1,consumed_write_capacity_units_maximum=1,consumed_write_capacity_units_minimum=1,consumed_write_capacity_units_sample_count=65,consumed_write_capacity_units_sum=65 1459263300548895733
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,table_name=dev-platform-datomic-config consumed_read_capacity_units_average=1,consumed_read_capacity_units_maximum=1,consumed_read_capacity_units_minimum=1,consumed_read_capacity_units_sample_count=48,consumed_read_capacity_units_sum=48 1459263300642785107
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,operation=PutItem,table_name=dev-platform-datomic-config successful_request_latency_average=8.910156727272726,successful_request_latency_maximum=26.477,successful_request_latency_minimum=4.243,successful_request_latency_sample_count=44,successful_request_latency_sum=392.04689599999995 1459263300688946255
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,operation=GetItem,table_name=dev-platform-datomic-config successful_request_latency_average=6.982394130434781,successful_request_latency_maximum=38.125,successful_request_latency_minimum=2.156,successful_request_latency_sample_count=46,successful_request_latency_sum=321.19012999999995 1459263300727174463
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,table_name=dev-platform-datomic-config consumed_write_capacity_units_average=1,consumed_write_capacity_units_maximum=1,consumed_write_capacity_units_minimum=1,consumed_write_capacity_units_sample_count=48,consumed_write_capacity_units_sum=48 1459263300760742003
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,table_name=prd-platform-datomic-config consumed_read_capacity_units_average=1.8539288112827401,consumed_read_capacity_units_maximum=8,consumed_read_capacity_units_minimum=0.5,consumed_read_capacity_units_sample_count=1489,consumed_read_capacity_units_sum=2760.5 1459263300832984286
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,operation=GetItem,table_name=prd-platform-datomic-config successful_request_latency_average=5.014870193569996,successful_request_latency_maximum=56.839959,successful_request_latency_minimum=2.030115,successful_request_latency_sample_count=1493,successful_request_latency_sum=7487.201199000004 1459263300868485699
> cloudwatch_aws_dynamo_db,host=vljosa-yieldbot.local,operation=PutItem,table_name=prd-platform-datomic-config successful_request_latency_average=9.664095158730158,successful_request_latency_maximum=25.262,successful_request_latency_minimum=3.533,successful_request_latency_sample_count=63,successful_request_latency_sum=608.837995 1459263300990375223
2016/03/29 10:55:01 Gathered metrics, (5m0s interval), from 1 inputs in 1.048629086s
2016/03/29 10:55:03 Wrote 8 metrics to output influxdb in 90.0269ms