How can I see why I was charged for CloudWatch usage, and then how can I reduce future charges?
Last updated: 2021-02-15
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?
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
- Unknown <region>-CW:AlarmMonitorUsage
- Unknown <region>-CW:HighResAlarmMonitorUsage
CloudWatch dashboards: DashboardHour DashboardsUsageHour(-Basic)
- PutLogEvents <region>-DataProcessing-Bytes
- PutLogEvents <region>-VendedLog-Bytes
- HourlyStorageMetering <region>-TimedStorage-ByteHrs
CloudWatch Events: AWSEvents PutEvents <region>-Event(-64K-Chunks)|Request
CloudWatch Contributor Insights:
- Contributor Insights Rules: <region>-CW:ContributorInsightRules
- Contributor Insights matched log events: <region>-CW:ContributorInsightEvents
CloudWatch Synthetics canary runs: <region>-CW:Canary-runs
When you understand what you were charged for and why, use the following recommendations to reduce future costs by adjusting your CloudWatch configuration.
To easily monitor your AWS costs in the future, enable billing alerts.
Note: If you receive errors when running AWS Command Line Interface (AWS CLI) commands, make sure that you’re using the most recent AWS CLI version.
- Charges are incurred by monitoring more than ten custom metrics. Custom metrics include those that you’ve created, as well as those used by tools such as the CloudWatch agent and application or OS data from EC2 instances.
- Request metrics for Amazon Simple Storage Service (Amazon S3) and Amazon Simple Email Service (Amazon SES) events sent to CloudWatch incur charges.
- PutMetricData calls for a custom metric can also incur charges.
- Amazon Kinesis Data Streams enhanced (shard-level) metrics and AWS Elastic Beanstalk enhanced health reporting metrics sent to CloudWatch incur charges.
- To reduce costs, disable monitoring of custom metrics, as appropriate. To find your custom metrics, enter NOT AWS for Search Metrics in the Metric Summary section of the CloudWatch console.
CloudWatch metric API calls
- Charges vary by CloudWatch metric API. API calls that exceed the AWS Free Tier limit incur charges. GetMetricData and GetMetricWidgetImage are not counted in the AWS Free Tier.
- Third-party monitoring tools can increase costs because they perform frequent API calls.
- 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 more information, see Should I use GetMetricData or GetMetricStatistics for CloudWatch metrics? Also be sure to review costs incurred by third-party monitoring tools.
- Charges are incurred by the number of metrics associated with a CloudWatch alarm. For example, if you have a single alarm with multiple metrics, you're charged for each metric.
- To reduce costs, remove unnecessary alarms.
- 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 the AWS Free Tier limit.
Exception: GetMetricWidgetImage always incurs charges.
- To reduce costs, delete unnecessary dashboards. If you're using the AWS Free Tier, keep your total number of dashboards to three or less. Also be sure to keep the total number of metrics across all dashboards to less than 50. Make dashboard-related API calls through the console for free rather than making them through the AWS CLI or an SDK.
- Charges are incurred by ingestion and archive storage of Amazon CloudWatch Logs. Charges are also incurred by the amount of ingested log data scanned for each CloudWatch Logs Insights query. Check the IncomingBytes metric to determine ingested data amounts. Refer to your AWS bill to determine data storage amounts. Review your running queries and recent query history in CloudWatch Logs.
- To reduce ingestion costs, stop ingestion of unnecessary logs. To reduce storage costs, change the retention period for your log groups. To reduce ingested log data scanned for CloudWatch Logs Insights queries, run queries for a shorter duration.
- 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).