How can I see why I was charged for CloudWatch usage, and then how can I reduce future charges?

Last updated: 2019-12-09

I'm seeing high Amazon CloudWatch charges in my AWS bill. How can I see why I was charged for CloudWatch usage, and then how can I reduce future charges?

Short Description

Review your AWS Cost and Usage reports to understand your CloudWatch charges. Look for charges for the following services.
Note: Items in bold are similar to what you might see in your reports. In your reports, <region> represents the abbreviation for your AWS Regions.

Custom metrics: MetricStorage <region>-CW:MetricMonitorUsage

CloudWatch metric API calls:

  • <API Name> <region>-CW:Requests
  • GetMetricData <region>-CW:GMD-Requests/Metrics

CloudWatch alarms:

  • Unknown <region>-CW:AlarmMonitorUsage
  • Unknown <region>-CW:HighResAlarmMonitorUsage

CloudWatch dashboards: DashboardHour DashboardsUsageHour(-Basic)

CloudWatch Logs:

  • PutLogEvents <region>-DataProcessing-Bytes
  • PutLogEvents <region>-VendedLog-Bytes
  • HourlyStorageMetering <region>-TimedStorage-ByteHrs

CloudWatch Events: AWSEvents PutEvents <region>-Event(-64K-Chunks)|Request

When you understand what you were charged for and why, use the following recommendations to reduce future costs by adjusting your CloudWatch configuration.

Resolution

Note: To easily monitor your AWS costs in the future, enable billing alerts.

Detailed monitoring

Custom metrics

CloudWatch metric API calls

  • Charges vary by CloudWatch metric APl. GetMetricStatistics and ListMetrics API calls that exceed one million requests incur charges. PutMetricData calls, as well as any ListMetrics calls through the AWS Command Line Interface (AWS CLI) or an SDK, incur charges.
  • To reduce costs, make ListMetrics calls through the console for free rather than making them through the AWS CLI. Collect multiple PutMetricData requests into one StatisticSet call. For best practices when using GetMetricStatistics or GetMetricData APIs, see Should I use GetMetricData or GetMetricStatistics for CloudWatch metrics?

CloudWatch alarms

CloudWatch dashboards

  • Charges are incurred when you exceed three dashboards (with up to 50 metrics).
  • Calls to dashboard-related APIs through the AWS CLI or an SDK also incur charges after requests exceed one million. Exception: GetMetricWidgetImage always incurs charges.
  • To reduce costs, keep your total number of dashboards to three or fewer. Make dashboard-related API calls through the console for free rather than making them through the AWS CLI or an SDK.

CloudWatch Logs

  • Charges are incurred by ingestion and storage of Amazon CloudWatch Logs. Check the IncomingBytes metric to determine ingested data amounts. Refer to your AWS bill to determine data storage amounts.
  • To reduce ingestion costs, stop ingestion of unnecessary logs. To reduce storage costs, change the retention period for your log groups.

CloudWatch Events

  • Charges are based on the number of custom events (not the number of rules). Events sent from one AWS account to another are billed to the sender account as custom events.
  • To reduce costs, minimize PutEvents calls. Also, reduce the number of events that are sent to an event bus (they’re also charged as custom events).