Let's get on each others' calendars.

The Basics, Tips, and Tricks of AWS CloudWatch Pricing

Here at Aimably, we’ve covered almost everything to do with AWS on the market. From a deep dive on EC2 instance types to how to effectively consolidate your AWS bill, we’re dedicated to helping you get the most out of your AWS account without needing a degree in their products to do so.

That’s why today we’re covering AWS CloudWatch pricing - what it is, how to optimize it, and where you can get a little extra help with your efforts.

Here are the sections we’ve split this post into:

  • What is AWS CloudWatch?
  • CloudWatch Pricing
  • How to optimize your CloudWatch bill

Let’s get started.

What is AWS CloudWatch?

Source, image in the public domain

If you have an AWS account and have used it at all, you’ll probably know what CloudWatch is. Still, let’s cover the basics before diving into the CloudWatch pricing model to make sure that everything is as clear as possible.

AWS CloudWatch is a monitoring tool designed to track the health and resource use of your various other AWS tools. By giving you data in the form of events, logs, and metrics for your AWS architecture, you can then gain a fuller understanding of the state of your operations, what’s performing well, and what you can change to optimize your setup.

Some aspects of your AWS tools can also be managed from within CloudWatch, meaning that you don’t have to switch between apps to see the data driving your decisions and to carry out performance tweaks. You can set up automated actions to remove the need for continual manual tasks, reduce factors contributing towards latency in your operations, and troubleshoot problems with much greater ease than if you were attempting to do so natively within the AWS tools themselves.

Let’s run through a simple example to drive the point home.

Say that you’re running some EC2 instances, but already know that your CPU utilization of them is inconsistent. You want to optimize your users’ experience and reduce latency for those using your instances, but don’t want to splash out on a 24/7 instance, since your usage isn’t often high enough to warrant it. You need to know when your instances are reaching capacity in order to run a new instance to lessen the load.

Enter CloudWatch. By setting up an alarm linked to your instances’ CPU usage, you can be notified whenever usage rises beyond, say, 75% in order to immediately know when to run a new instance. Alternatively, you could set a threshold for your AWS tools which, once met, will automatically trigger actions to limit the cost of your operations, perhaps by utilizing certain AWS Regions only after the point where it is worthwhile to reduce latency for the users in it.

This is why CloudWatch is so widely known and used - it’s a fantastic solution to some of the usability and data visibility issues that many AWS tools and services are plagued with.

CloudWatch Pricing

Source by 401(K) 2012, image used under license CC BY-SA 2.0

Let’s get into the meat of the topic; AWS CloudWatch pricing points. There’s quite a lot to cover here, as CloudWatch charges separately for its various features, so we’ll break their pricing down into the following sections:

  • CloudWatch pricing: Free plan
  • CloudWatch pricing: Paid metrics and metric insights
  • CloudWatch pricing: Paid alarms
  • CloudWatch pricing: Paid logs
  • CloudWatch pricing: Paid dashboards, events, canary runs, RUM
  • CloudWatch pricing: Paid contributor insights
  • CloudWatch pricing: Paid Evidently
  • CloudWatch pricing: Paid cross-account observability and Internet Monitor

Note that all CloudWatch pricing is on a pay-as-you-go basis with no upfront commitment, and all prices to follow are based on the US East (Ohio) Region.

CloudWatch pricing: Free plan

As CloudWatch pricing goes, the free plan is what you’ll most commonly see because most AWS tools that interact with CloudWatch will automatically place you on it. That makes it easy to manage your costs initially, but bear in mind that you’ll need to keep track of these in order to not get hit with a surprise vill should your usage exceed the following limits.

The free plan gives you:

  • Basic Monitoring Metrics at a 5-minute frequency
  • 10 Detailed Monitoring Metrics at a 1-minute frequency
  • 1 million metrics API requests which aren’t applicable to GetMetricData or GetMetricWidgetImage
  • 3 dashboards for up to 50 metrics per month
  • 10 alarm metrics that only count for “Standard” resolution alarms that don’t involve a Metrics Insights query
  • 5GB of data logs
  • All events bar custom ones
  • 1 Contributor Insights rule per month, along with the first 1 million logs which match that rule per month
  • 100 canary runs per month
  • 3 million Evidently events and 10 million Evidently analysis units per account (first-time free trial accounts only)
  • 1 million RUM events per account (first-time free trial accounts only)

To be honest, you can monitor and manage most AWS tools without going beyond the free plan. You’re able to monitor the metrics of anything and everything (albeit with 5-minute intervals between readings), get some more detailed metrics for the apps that are most important for you, can set up enough dashboards to overview your data at a glance, and still have room to set some basic alarms and actions to be carried out. It’s not a bad offering, but it does have one weakness.

As with many free plans, CloudWatch’s falls short if you need more detailed metrics for your wider operations or if you’re running a large-scale operation that needs to be monitored and managed. Free tier CloudWatch is fine when you’re starting out and getting to grips with the various AWS tools on offer, but if you’re running your business on AWS and thus need enough information to not be running blind, you’ll need to head into the paid tiers.

CloudWatch pricing: Paid metrics and metric insights

Any metrics beyond the free limit are priced thusly:

  • The first 10,000 metrics = $0.30 per metric per month
  • The next 240,000 metrics = $0.10 per metric per month
  • The next 750,000 metrics = $0.05 per metric per month
  • Anything over 1,000,000 metrics = $0.02 per metric per month

All custom metrics charges are calculated by the hour, and the pricing for EC2 Detailed Monitoring employed varies based on a few custom factors which roughly work out to $2.10 per instance per month (assuming that there are 7 metrics per instance), which goes down to $0.14 per instance at the lowest pricing tier.

API metrics requests are charged as follows:

  • GetMetricData and GetInsightRuleReport = $0.01 per 1,000 metrics requested
  • GetMetricWidgetImage = $0.02 per 1,000 metrics requested
  • GetMetricStatistics, ListMetrics, PutMetricData, GetDashboard, ListDashboards, PutDashboard and DeleteDashboards requests = $0.01 per 1,000 requests

Bear in mind that you can request up to five statistics for the same metric within the same GetMetricData API request.

The final element of CloudWatch Metrics pricing is that of the Metric Streams feature, which costs $0.003 per 1,000 metric updates.

CloudWatch pricing: Paid alarms

Alarms in CloudWatch are priced based on the number of hours that the alarm is active for, and are charged per metric they apply to.

The Standard Resolution Metrics Alarm prices are:

  • Cost of directly listed metrics per alarm per month = $0.10 per alarm metric
  • Cost of Metrics Insights queries per alarm per month = $0.10 per metrics analyzed

Directly listed metrics go up in price to $0.30 per alarm metric for High Resolution Metrics Alarms. Aggregated composite alarms cost $0.50 per alarm per month.

CloudWatch pricing: Paid logs

In terms of data logs, CloudWatch will never charge you for data going into its systems. However, transferring data out from Cloudwatch will incur identical charges to transferring data out from an AWS EC2 instance - if you don’t know what those charges are, check out our article on EC2 instance pricing.

You will still be charged for data logs that are used in CloudWatch Container Insights though, the costs related to which are below:

  • Collect (Data Ingestion) = $0.50 per GB
  • Store (Archival) = $0.03 per GB
  • Analyze (Logs Insights queries) = $0.005 per GB of data scanned
  • Detect and Mask (Data Protection) = $0.12 per GB of data scanned

The price of vended logs (AWS customer data that is being sold with permission at a volume discount rate) differs depending on where they’re being delivered to, so we’ll split their pricing up accordingly.

Vended logs delivery to CloudWatch Logs:

  • First 10 TB = $0.50 per GB
  • Next 20 TB = $0.25 per GB
  • Next 20 TB = $0.10 per GB
  • Over 50 TB = $0.05 per GB
  • Data stored = $0.03 per GB

Vended logs delivery to S3:

  • First 10 TB = $0.25 per GB
  • Next 20 TB = $0.15 per GB
  • Next 20 TB = $0.075 per GB
  • Over 50 TB = $0.05 per GB
  • Data stored = From $0.023/GB (Standard) to $0.00099/GB (Glacier Deep Archive)
  • Format converted to Apache Parquet = $0.035 per GB

Vended logs delivery to Kinesis Data Firehose:

  • First 10 TB = $0.25 per GB
  • Next 20 TB = $0.15 per GB
  • Next 20 TB = $0.075 per GB
  • Over 50 TB = $0.05 per GB

CloudWatch pricing: Paid dashboards, events, canary runs, RUM

Source by Growthlakes, image used under license CC BY-SA 4.0

The following prices are simple enough that we’ve grouped them together instead of having separate, meaninglessly short sections for each.

Any dashboards beyond the 3 you get for free (or if they contain more than 50 metrics each) will cost $3.00 per dashboard per month. This price doesn’t go up or down depending on any other factors - it’s straight-up $3 per month for any new dashboard.

Events are similarly simple, costing $1.00 per million events for both custom events and cross-account events.

Canary runs will set you back $0.0012 per run, but you need to be aware of any extra charges associated with using related products in those runs such as AWS Lambda, S3, or CloudWatch Logs.

CloudWatch RUM pricing is $1 per 100k RUM events. A RUM event occurs every time a data item is collected by the RUM web client, including page views, JavaScript errors, and so on. These can also incur extra charges via the use of AWS services such as CloudWatch Logs, Amazon Cognito, and AWS X-Ray.

CloudWatch pricing: Paid contributor insights

CloudWatch Contributor Insights is split into three different pricing plans; one for data from CloudWatch Logs, one for DynamoDB, and one for PrivateLink. 

Contributor Insights for CloudWatch Logs will cost you $0.50 per rule per month, and you’ll also have to pay $0.02 per one million log events that match any given rule per month.

Insights for DynamoDB will similarly set you back $0.50 per rule per month and $0.03 per one million log events that match a specific rule per month.

Finally, for those relating to PrivateLink you’ll have to pay $9.00 per rule per month. There is an additional stipulation whereby each rule can only evaluate up to 50,000 endpoints in PrivateLink, so bear that in mind when setting up your rules and forecasting your bills.

CloudWatch pricing: Paid Evidently

CloudWatch Evidently is priced based on the number of Evidently events and Evidently analysis units utilized when running your experiments. Data events, such as a user clicking or a page view, and assignment events, whereby your app determines which feature variation to serve to a user, both count as Evidently events. Evidently analysis units are created by Evidently events that have occurred and are based on the rules you’ve set up in your Evidently account.

Cloudwatch Evidently charges $5 per 1 million Evidently events and $7.50 per 1 million Evidently analysis units.

CloudWatch pricing: Paid cross-account observability and Internet Monitor

The last two elements of CloudWatch pricing are cross-account observability and the Internet Monitor feature. Once again, these have been grouped for brevity.

You won’t be charged for any logs or metrics related to cross-account observability, and the first trace copy in the first of your monitoring accounts is also free. However, any additional copies are charged based on AWS X-Ray pricing, and standard CloudWatch pricing applies to extras such as further dashboards or insights in your monitoring accounts.

In the Internet Monitor you will be charged $0.01 per monitored resource per hour, and $0.74 per 10,000 monitored city-networks per hour after the first 100 city-networks. Internet Monitor also publishes diagnostic logs for your top 500 city-networks by traffic volume every 5 minutes, which will incur standard CloudWatch logs costs.

How to optimize your CloudWatch bill

It’s confusing enough to try to monitor your AWS products through CloudWatch, let alone trying to optimize CloudWatch itself by keeping track of what you’re spending, the value that your resources are generating, whether it’s worthwhile to expand your usage of certain features, and so on.

That’s why we here at Aimably want to do the hard work for you.

Our AWS Cost Reduction Assessment contains a comprehensive look at your entire AWS account, CloudWatch included, and presents you with a prioritized list of items that you can take action on to immediately reduce your AWS bill. From the best way to take advantage of CloudWatch pricing and general tips on consolidating your efforts to how to make best use of every available saving, we can help you get the most out of your account without affecting your business’ performance.

Click here to talk to our experts today - you won’t regret it!

AWS Total Cost of Ownership