19.1
CloudWatch Metrics and Metric Streams
Namespaces and dimensions, resolution and retention, custom metrics and streaming metrics out.
20 min Reading + animations
Tip: tap or hover any dotted-underlined term to see what it means.
By the end of this lesson you will be able to
- Place CloudWatch, CloudTrail, Config and EventBridge in the chapter’s exam theme, and say which question each one answers.
- Read a CloudWatch metric: namespace, metric name, dimensions, timestamp, unit, and the statistics (Average, Sum, Minimum, Maximum, SampleCount, percentiles such as p99) computed over a period.
- Explain EC2 basic monitoring (5 minutes, free) versus detailed monitoring (1 minute, paid), why memory and disk space used are missing, and how to get them.
- Publish custom metrics with
PutMetricData, at standard resolution (1 minute) or high resolution (down to 1 second), and know the rules on namespaces, dimensions and timestamps. - State the retention tiers correctly (under 60 seconds for 3 hours, 1 minute for 15 days, 5 minutes for 63 days, 1 hour for 455 days) and predict what detail is left for data of a given age.
- Use dashboards, metric math, anomaly detection and cross-account observability, and stream metrics out with Metric Streams through Amazon Data Firehose instead of polling
GetMetricData.
#Why metrics: is the system healthy right now?
Chapter 19 is about four services that watch your AWS accounts. The exam rarely asks how to configure them; it asks you to pick the right one from the words in a scenario:
| The scenario says | The service | Lesson |
|---|---|---|
| CPU, latency, errors per minute, performance, application logs, alarms | Amazon CloudWatch | 19.1 to 19.4 |
| Something happened and a program must react to it (an event, a schedule, a SaaS webhook) | Amazon EventBridge | 19.5 |
| Who called which API, from where, and when | AWS CloudTrail | 19.6 |
| What a resource looked like last week, and whether it is compliant | AWS Config | 19.7 |
The full side-by-side comparison is in lesson 19.7. This lesson starts with the part of CloudWatch everything else is built on: metrics. Logs are lesson 19.2, alarms are 19.3, and the Insights features are 19.4.
#The problem
A bKash-style mobile wallet pays out salaries on the day before Eid. At 20:00 transfers jump from 300 to 6,000 a minute. The on-call engineer needs answers in seconds, not after reading a thousand log lines: Is CPU on the API servers high? Are transfers getting slower? How slow are the slowest ones? Is it worse than last Eid?
Every one of those questions is a number that changes over time. Collect such numbers at a regular rhythm, keep them, graph them, compare them and raise an alarm when they cross a line, and you have monitoring. In AWS that is CloudWatch Metrics.
#What a metric is
A metric is a time-ordered series of data points about one thing: the CPU utilisation of one EC2 instance, the size of one S3 bucket, the number of messages in one SQS queue. Think of it as a variable to watch, and each data point as its value at a moment.
- AWS services publish metrics for you, at no charge, for almost every resource: EC2, EBS, RDS, ELB, Lambda, DynamoDB, SQS, S3 and the rest. You do nothing to turn them on.
- You can publish your own (custom metrics): orders per minute, payment latency, active users, memory used.
- Metrics are regional: a metric lives in the Region where it was created.
- A metric cannot be deleted. It simply expires when no new data has arrived for 15 months.
#Anatomy of a metric
#Namespace, name and dimensions: the identity
| Part | What it is | Example |
|---|---|---|
| Namespace | A container that keeps metrics of different applications apart. AWS services use AWS/<service>. There is no default: every data point names its namespace. | AWS/EC2, AWS/ApplicationELB, Wallet/Payments |
| Metric name | The variable being measured. | CPUUtilization, NetworkIn, Latency |
| Dimensions | Name/value pairs that say which resource or slice the data is about. Up to 30 per metric. | InstanceId=i-0a1b2c3d4e5f60789, AutoScalingGroupName=web-asg, Service=transfer, Env=prod |
Namespace + metric name + dimensions together are the metric. Every unique combination of dimension values is a separate metric, even with the same name. Latency with Service=transfer, Env=prod and Latency with Service=transfer, Env=staging are two metrics. You can only read back the combinations you actually published; CloudWatch does not add up custom metrics across dimensions for you (for some AWS namespaces such as AWS/EC2 it does offer pre-aggregated views, for example across all instances or per Auto Scaling group). To gather many metrics at once, use a metric math SEARCH expression.
#Timestamp, value and unit: the data point
- Timestamp: when the value was measured, ideally in UTC. If you leave it out, CloudWatch uses the time it received the point. A custom data point may be stamped up to two weeks in the past and up to two hours in the future; anything outside that window is rejected.
- Value: a number (no text, no not-a-number or infinity values).
- Unit:
Percent,Count,Bytes,Seconds,Milliseconds,Count/Secondand so on. Optional (it defaults toNone), but points with different units are aggregated separately, so keep it consistent.
#Statistics and periods: how you read it
You rarely read raw points. You ask for a statistic over a period:
- Period: the length of each time bucket, in seconds: 1, 5, 10, 30 or any multiple of 60. The default is 60. Sub-minute periods only make sense for high-resolution metrics.
- Statistics: SampleCount (how many points), Sum, Average (Sum / SampleCount), Minimum, Maximum, and percentiles such as p50, p90, p99 (p99 = the value that 99% of points are below). CloudWatch also offers trimmed mean and related statistics, which ignore the extreme tails.
Why percentiles matter: the wallet’s average transfer latency at 20:05 is 180 ms and looks calm, but p99 is 2.4 seconds: one customer in a hundred waits more than two seconds, and on Eid night that is thousands of people. Averages hide the slow tail; percentiles show it. Percentiles need raw values (or the Values and Counts arrays); if you publish only a pre-summarised statistic set (Sum, SampleCount, Minimum, Maximum), percentiles are not available for it.
What a CloudWatch metric is made of
A Daraz-style shop runs its web servers on EC2, and a bKash-style wallet publishes its own payment latency. Watch the data points arrive, see what each one carries, and see the two classic surprises.
Scenario
EC2 publishes its metrics without you doing anything, every 5 minutes. Detailed monitoring makes it every minute, for a fee.
One data point
Namespace
AWS/EC2
Metric name
CPUUtilization
Dimension
InstanceId=i-0a1b2c3d4e5f60789
Timestamp
2026-11-01T10:05:00Z
Value, unit
62.5 Percent
The hypervisor under web-1 measures what it can see from outside the guest OS: CPU, network bytes and packets, and disk operations on instance store. Every 5 minutes it sends one data point per metric. This is basic monitoring, free and on by default.
#Where metrics come from
#AWS service metrics, and EC2 basic versus detailed monitoring
Most AWS services publish their metrics every minute at no charge. EC2 is the classic exception:
| Basic monitoring | Detailed monitoring | |
|---|---|---|
| Interval | 5 minutes (status check metrics every minute) | 1 minute |
| Cost | Free, on by default | Paid: charged per metric like custom metrics |
| Turn on | Nothing to do | Launch option, or aws ec2 monitor-instances on a running or stopped instance |
| Useful for | Trends, capacity planning | Faster Auto Scaling reactions, alarms with 1-minute periods, short spikes |
Two consequences the exam likes. An Auto Scaling group that should react within a minute or two needs detailed monitoring, because a 5-minute metric makes every decision late (lesson 6.5). And an alarm with a 60-second period on a basic-monitoring metric has nothing to evaluate for four minutes out of five; use a period of at least 300 seconds, or turn on detailed monitoring (alarms are lesson 19.3).
#What EC2 cannot see: memory and disk space
EC2’s free metrics are measured by the hypervisor, from outside your operating system:
- Included:
CPUUtilization;NetworkIn,NetworkOut,NetworkPacketsIn,NetworkPacketsOut;DiskReadOps,DiskWriteOps,DiskReadBytes,DiskWriteBytes(for instance store volumes); status checks (StatusCheckFailed,StatusCheckFailed_System,StatusCheckFailed_Instance,StatusCheckFailed_AttachedEBS); CPU credit metrics for burstable T instances; and EBS volume metrics for Nitro-based instances. - Not included: memory (RAM) used, swap, disk space used or free on a file system, number of processes, application-level numbers. These live inside the guest OS, where the hypervisor cannot look.
To get them, run something inside the instance that publishes them as custom metrics: the unified CloudWatch agent (memory, disk, swap, netstat, per-process metrics, plus log files, on Linux and Windows, on EC2 and on premises; lesson 19.2 covers it), or your own script that calls PutMetricData. The notes call it a “custom agent”; the product is the CloudWatch agent.
#Custom metrics with PutMetricData
Your own numbers are published with the PutMetricData API (from the CLI, any SDK, the CloudWatch agent, or other tools):
- The first data point creates the metric. There is nothing to create in advance. A new metric can take up to 15 minutes to show up in
list-metrics. - Namespace: any name you like, up to 255 characters, but do not start it with
AWS/(that prefix belongs to AWS services). - Standard resolution (the default): 1-minute granularity. High resolution: set
StorageResolutionto1and CloudWatch keeps 1-second granularity, readable at 1, 5, 10 or 30 seconds or any multiple of 60. Alarms on a high-resolution metric can use 10- or 30-second periods, at a higher alarm price. - Many points per call: up to 1,000 metrics per request, and up to 150 values per metric with the
ValuesandCountsarrays; a statistic set sends a pre-aggregated Sum, SampleCount, Minimum and Maximum instead (cheaper, but no percentiles). - Timestamps: up to two weeks old or two hours ahead. Points stamped 3 to 24 hours in the past can take up to 2 hours to show in queries, and points a day old or more at least 48 hours.
- Cost: each custom metric (each unique combination of namespace, name and dimensions) is billed per month (0.30 USD for each of the first 10,000 in us-east-1, cheaper beyond), and
PutMetricDatacalls are billed as API requests. The free tier includes 10 custom or detailed-monitoring metrics and 1 million API requests a month.
Because every dimension value is a separate billed metric, never put a high-cardinality value such as a user ID, an order ID or a request ID in a dimension: one million users means one million metrics. Put such details in logs instead.
#Resolution and retention: what survives as data ages
CloudWatch keeps fine detail only while data is young. As points age, they are rolled up into coarser points (Sum, SampleCount, Minimum and Maximum are kept, so averages stay correct), and after 15 months they expire:
| Period of the data points | Available for |
|---|---|
| Under 60 seconds (high-resolution custom metrics) | 3 hours |
| 60 seconds (1 minute) | 15 days |
| 300 seconds (5 minutes) | 63 days |
| 3600 seconds (1 hour) | 455 days (15 months) |
Read it as a ladder: 1-minute data stays at 1 minute for 15 days; after that you can still read it, but only in 5-minute steps; after 63 days only hourly; after 455 days it is gone. And the ladder only goes down: data never collected at 1 minute (EC2 basic monitoring) never had a 1-minute step to begin with.
Two more details:
- Metrics with no new data for two weeks disappear from the console and
list-metrics, but their data can still be read withget-metric-dataorget-metric-statisticsuntil it expires. - If you need metrics for years (a bank’s audit, a 7-year retention rule), CloudWatch is not the archive. Copy them out with a metric stream to S3 (below), or a scheduled job.
How data points roll up as they age
CloudWatch keeps fine detail only for recent data. Older points are merged into coarser ones, and after 15 months they are gone. Follow the wallet’s 1-second latency and a basic EC2 metric through the tiers.
Scenario
Each tier keeps a coarser period for longer: 1 second for 3 hours, 1 minute for 15 days, 5 minutes for 63 days, 1 hour for 455 days.
Finest period you can still ask for
| Age of the data | Finest period |
|---|---|
| up to 3 hours | 1 second |
At 20:00 on Eid salary day the wallet sends a latency point every second. For the next 3 hours you can graph it with a 1-second period and see a spike that lasted 4 seconds.
Try it: pick how a metric was published and how old the data is, and see what is left.
Resolution and retention explorer
Pick how a metric was published and how old the data you want is. Then look it up: what detail does CloudWatch still have?
How the metric was published
The wallet’s latency, published with storage resolution 1.
Age of the data you want
Press “Look it up” to see the result.
#Looking at metrics: graphs, math, anomaly bands and dashboards
#Metric math, search and Metrics Insights
- Metric math combines metrics into a new time series with expressions: error rate =
100 * errors / requests, the total of several instances, the rate of change. Alarms can watch a metric math expression (lesson 19.3). SEARCHexpressions gather every metric that matches, for example allCPUUtilizationmetrics of one Auto Scaling group, so a graph picks up new instances automatically.- Metrics Insights is a SQL-like query language over metrics (
SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) GROUP BY InstanceId ORDER BY AVG() DESC LIMIT 10): the top 10 busiest instances in one query.
#Anomaly detection
Anomaly detection trains a machine-learning model on a metric’s history (with daily and weekly patterns) and draws an expected band. Traffic that is normal at 20:00 on a weekday can be abnormal at 04:00. An alarm can fire when the metric leaves the band instead of crossing a fixed number; that alarm type is lesson 19.3.
#Dashboards
A CloudWatch dashboard is a page of graphs, numbers, alarm states, log query results and text:
- Dashboards are global: one dashboard can show widgets from several Regions, and with cross-account access (below) from several accounts.
- Automatic dashboards for each service are free. For your own: 3 dashboards with up to 50 metrics each are free per month; after that each dashboard costs about 3 USD a month.
- Dashboards can be shared with people who have no AWS account (by a public link, by email address, or through single sign-on), refreshed automatically, and set to a time range and time zone.
#Cross-account observability
Large companies run one AWS account per team or application (lesson 20.1). To see them together, CloudWatch cross-account observability links them:
- One monitoring account creates a sink (one per Region) with a policy saying who may link. Each source account creates a link to it and chooses what to share: metrics (all or some namespaces), log groups, X-Ray traces, Application Signals, Application Insights applications and Internet Monitor monitors.
- The monitoring account then graphs, searches, alarms on and builds dashboards over source-account data without copying it, at no extra cost for metrics and logs.
- A monitoring account can have up to 100,000 source accounts; a source account can share with up to 5 monitoring accounts. With AWS Organizations, new accounts are linked automatically. The API behind it is the Observability Access Manager (OAM).
- It works per Region. The older cross-account cross-Region dashboard feature (sharing through IAM roles) still exists for viewing dashboards across Regions.
One monitoring account for many accounts
A bank runs payments and lending in separate AWS accounts. Its operations team wants one place to see every account’s metrics without signing in to each. Set up cross-account observability, then see the two ways it surprises people.
Scenario
The monitoring account creates a sink; each source account creates a link to it. Then one console shows all accounts.
In the monitoring account the team creates a sink (one per Region) with a policy that allows accounts of the bank’s organization to link to it, for metrics and logs. This is the Observability Access Manager (OAM).
#Metric Streams: pushing metrics out
Many teams already use a third-party monitoring tool (Datadog, Dynatrace, New Relic, Splunk, Sumo Logic, Elastic) or want all metrics in a data lake. The old way was polling: a collector calls GetMetricData every few minutes for thousands of metrics. That is slow (the data is always one polling interval behind), costs money per metric requested (GetMetricData is not in the free API allowance), and runs into API throttling.
CloudWatch Metric Streams turn it around: CloudWatch pushes metric updates continuously, with near-real-time delivery and low latency, to a destination:
- The stream goes to an Amazon Data Firehose stream (formerly Kinesis Data Firehose; lesson 13.6), and Firehose delivers to S3, to Redshift (through S3), to OpenSearch, to any HTTP endpoint, or to a partner. Quick setups create everything for S3 and for partners (you give only the endpoint URL and API key).
- Output format: JSON, OpenTelemetry 1.0.0 or OpenTelemetry 0.7.0. Firehose can convert further, for example to Parquet for Athena (lesson 17.1).
- Filters: stream everything, or up to 1,000 filters that include or exclude namespaces or individual metrics. One stream uses either include filters or exclude filters, not both. New metrics that match are added automatically.
- Statistics: Minimum, Maximum, SampleCount and Sum are always included; extra statistics such as p99 can be added at extra cost.
- In a monitoring account, a stream can include the linked source accounts’ metrics.
- Price: per 1,000 metric updates (0.003 USD in us-east-1), plus Firehose. No limit on the number of streams.
Getting metrics out: Metric Streams vs polling
The wallet’s operations team uses a third-party monitoring tool, and its data team wants every metric in S3. Compare the push model with the old pull model, then break it twice.
Scenario
A metric stream pushes metric updates continuously through Amazon Data Firehose, within a few minutes, with no polling code.
Metric stream
Include
AWS/EC2, AWS/ApplicationELB, Wallet/Payments
Output format
OpenTelemetry 1.0.0
Statistics
Min, Max, Sum, SampleCount (+ p99)
The team creates a metric stream with an include filter for AWS/EC2, AWS/ApplicationELB and Wallet/Payments, and OpenTelemetry 1.0 output. A filter list is either all include or all exclude, never both.
#What goes wrong
- No memory or disk metric: it is not a default EC2 metric. Install the CloudWatch agent with an instance role that allows it to publish (lesson 19.2).
- A spike is invisible: a 5-minute basic metric or a 5-minute average swallowed it. Use detailed monitoring, high resolution, Maximum or p99.
- An alarm sits in INSUFFICIENT_DATA: a 60-second period on a 5-minute metric, or custom data stamped with the wrong time zone (CloudWatch alarms use UTC).
- Empty graph for a custom metric: wrong Region, a dimension combination that was never published, a different unit, or a brand-new metric that has not appeared yet (up to 15 minutes).
PutMetricDatarejected: timestamp more than two weeks old or two hours ahead, a namespace starting withAWS/, more than 30 dimensions, or a value that is not a number.- The bill jumps: a high-cardinality dimension (user ID, request ID) created millions of metrics; or a tool polls
GetMetricDatafor everything every minute. - Old detail is gone: 1-minute data older than 15 days is only available at 5 minutes; nothing survives past 455 days unless you streamed it to S3.
- A partner tool misses metrics: the stream’s include filter lacks the namespace, or the Firehose delivery is failing (check its backup bucket and the stream’s own metrics).
- A dashboard in the monitoring account lacks a metric: the source account did not share that namespace, the link is in another Region, or the metric has not sent a new point since the link was made.
#Metrics in system design
Common patterns:
- Scale on what matters to users: publish a custom metric such as queue backlog per instance or active sessions, and use it in a target tracking policy instead of CPU (lesson 6.5 and lesson 13.1).
- Watch service level objectives with percentiles: p99 latency and error rate per API, not averages.
- Business numbers next to technical ones: orders per minute and payments succeeded on the same dashboard as CPU and 5xx, so a drop in sales is seen even when every server looks healthy.
- A central monitoring account for many accounts, through cross-account observability.
- Long-term analytics: metric streams to S3, queried with Athena, combined with cost data.
- Metrics feed alarms (19.3), which feed Auto Scaling, SNS, Lambda and EC2 actions. Metrics are the start of nearly every automated reaction in AWS.
#Try it yourself
These commands use the AWS CLI v2. Custom metrics and detailed monitoring cost a few cents; delete the stream at the end.
# 1. List the metrics of one EC2 instance (AWS/EC2 namespace, InstanceId dimension)
aws cloudwatch list-metrics --namespace AWS/EC2 \
--dimensions Name=InstanceId,Value=i-0a1b2c3d4e5f60789 --query 'Metrics[].MetricName'
# [ "CPUUtilization", "NetworkIn", "NetworkOut", "NetworkPacketsIn", "StatusCheckFailed", ... ]
# (no memory metric: that needs the CloudWatch agent)
# 2. Turn on detailed monitoring (1-minute metrics, paid)
aws ec2 monitor-instances --instance-ids i-0a1b2c3d4e5f60789
# { "InstanceMonitorings": [ { "InstanceId": "i-0a1b2c3d4e5f60789", "Monitoring": { "State": "pending" } } ] }
# 3. Average and maximum CPU over the last hour in 5-minute periods
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0a1b2c3d4e5f60789 \
--start-time 2026-11-01T09:00:00Z --end-time 2026-11-01T10:00:00Z \
--period 300 --statistics Average Maximum
# { "Label": "CPUUtilization", "Datapoints": [
# { "Timestamp": "2026-11-01T09:05:00Z", "Average": 41.2, "Maximum": 63.8, "Unit": "Percent" }, ... ] }
# 4. Publish a high-resolution custom metric (storage resolution 1 second)
aws cloudwatch put-metric-data --namespace Wallet/Payments --metric-data \
'MetricName=Latency,Dimensions=[{Name=Service,Value=transfer},{Name=Env,Value=prod}],Value=184,Unit=Milliseconds,StorageResolution=1'
# (no output on success; the first point creates the metric)
# 5. Read it back with a percentile, using get-metric-data
aws cloudwatch get-metric-data --start-time 2026-11-01T09:50:00Z --end-time 2026-11-01T10:00:00Z \
--metric-data-queries '[{"Id":"p99","MetricStat":{"Metric":{"Namespace":"Wallet/Payments","MetricName":"Latency","Dimensions":[{"Name":"Service","Value":"transfer"},{"Name":"Env","Value":"prod"}]},"Period":60,"Stat":"p99"}}]'
# { "MetricDataResults": [ { "Id": "p99", "Label": "Latency", "Timestamps": [ "2026-11-01T09:59:00Z", ... ],
# "Values": [ 2400.0, ... ], "StatusCode": "Complete" } ] }
# 6. Stream EC2, ALB and wallet metrics to an existing Firehose stream, OpenTelemetry 1.0 format
aws cloudwatch put-metric-stream --name wallet-to-partner \
--firehose-arn arn:aws:firehose:ap-southeast-1:111122223333:deliverystream/metrics-to-partner \
--role-arn arn:aws:iam::111122223333:role/MetricStreamToFirehose \
--output-format opentelemetry1.0 \
--include-filters Namespace=AWS/EC2 Namespace=AWS/ApplicationELB Namespace=Wallet/Payments
# { "Arn": "arn:aws:cloudwatch:ap-southeast-1:111122223333:metric-stream/wallet-to-partner" }
aws cloudwatch get-metric-stream --name wallet-to-partner --query '[State,OutputFormat]'
# [ "running", "opentelemetry1.0" ]
# 7. Clean up
aws cloudwatch delete-metric-stream --name wallet-to-partner
aws ec2 unmonitor-instances --instance-ids i-0a1b2c3d4e5f60789
Also try in the console: open All metrics, graph CPUUtilization for one instance with the Average and then the Maximum statistic, change the period from 5 minutes to 1 hour, and add the graph to a new dashboard. Then open Metrics, Streams and look at the quick partner setup list.
#Summary
Key takeaways
- Chapter theme: performance and logs → CloudWatch, react to events → EventBridge, who called which API → CloudTrail, what a resource looked like and is it compliant → Config.
- A metric = namespace + metric name + dimensions (up to 30); every new dimension combination is a separate metric. Data points have a timestamp, a value and a unit. Metrics are regional and expire after 15 months without data.
- Read metrics as statistics over a period: SampleCount, Sum, Average, Minimum, Maximum, percentiles (p99). Averages hide the slow tail.
- EC2 basic monitoring = 5 minutes, free; detailed = 1 minute, paid. Most other services publish every minute.
- EC2 default metrics (CPU, network, instance-store disk ops, status checks) do not include memory, swap or disk space used → unified CloudWatch agent or
PutMetricData. - Custom metrics with
PutMetricData: standard resolution 1 minute, high resolution 1 second (StorageResolution=1); timestamps up to 2 weeks back, 2 hours ahead; avoid high-cardinality dimensions. EMF creates metrics from log lines. - Retention: < 60 s for 3 hours, 1 min for 15 days, 5 min for 63 days, 1 hour for 455 days (15 months). Older data is rolled up, never made finer.
- Metric math, search expressions, Metrics Insights, anomaly detection bands; dashboards are global (multi-Region, multi-account), 3 free.
- Cross-account observability (OAM): a monitoring account with a sink, source accounts with links; metrics and logs shared at no extra cost, per Region.
- Metric Streams: push, near real time, through Amazon Data Firehose to S3, partners (Datadog, Dynatrace, Elastic, New Relic, Splunk, Sumo Logic) or any HTTP endpoint; JSON or OpenTelemetry; include or exclude filters. Better than polling
GetMetricData.
Answer on your own first, then read the explanation, even when you got it right.
Self-checkQuestion
What uniquely identifies a CloudWatch metric?
Self-checkQuestion
By default, how often does an EC2 instance send its CPU utilisation to CloudWatch?
Self-checkQuestion
Which of these is NOT available as a default EC2 metric in CloudWatch?
Self-checkQuestion
For how long does CloudWatch keep data points at 1-minute resolution?
Self-checkQuestion
An engineer wants to look at a standard-resolution custom metric as it was 40 days ago. What is the finest period available?
Self-checkQuestion
A team publishes a custom metric with StorageResolution set to 1. What kind of metric is it?
Self-checkQuestion
An e-commerce company must track RAM and disk space utilisation of 200 EC2 instances in CloudWatch with the least custom code. What should it do?
Self-checkQuestion
A company uses Datadog for monitoring and wants all CloudWatch metrics delivered there in near real time, with minimal operational effort. What is the best solution?
Self-checkQuestion
Which two statements about CloudWatch metric retention are correct?
Choose 2
Self-checkQuestion
The average latency of a payment API is 150 ms, but customers complain that some payments take several seconds. Which statistic should the team watch?
Self-checkQuestion
An application publishes an Orders metric with two dimensions, Store and Region. A dashboard asks for Orders with only Region=Dhaka and shows no data. Why?
Self-checkQuestion
A field device buffers readings while offline for three weeks, then sends them all to CloudWatch with their original timestamps. What happens?
Self-checkQuestion
An alarm watches CPUUtilization of an EC2 instance with basic monitoring, using a 60-second period. It keeps flipping to INSUFFICIENT_DATA. What is the best fix?
Self-checkQuestion
A regulator requires a bank to keep its application performance metrics for 7 years. What should the architect do?
Self-checkQuestion
Which two statements about CloudWatch Metric Streams are correct?
Choose 2
Self-checkQuestion
A company has 40 AWS accounts in AWS Organizations. The operations team wants to search and graph metrics and logs of all accounts from one account, without copying data. What should it use?
Self-checkQuestion
An operations team wants one CloudWatch dashboard that shows ALB metrics from ap-southeast-1 and us-east-1 side by side. What is true?
Self-checkQuestion
A developer adds a user ID dimension to a custom latency metric for a service with 2 million users. What is the main consequence?
Self-checkQuestion
The notes say CloudWatch keeps data for 15 months at 5-minute resolution. What is correct?
Self-checkQuestion
What is the current name of the service that metric streams deliver through, formerly called Kinesis Data Firehose?
Self-checkQuestion
Which two metrics does EC2 publish to CloudWatch by default without any agent?
Choose 2
Self-checkQuestion
Compared with Metric Streams, what is a disadvantage of a tool polling GetMetricData for thousands of metrics?
Self-checkQuestion
A Lambda function must publish business metrics on every invocation without adding latency from extra API calls, while also keeping detailed log records. What fits best?
Self-checkQuestion
During a 3-minute outage last night, an EC2 instance had basic monitoring. This morning the team enables detailed monitoring. Can they now see last night’s CPU in 1-minute steps?
Self-checkQuestion
An Auto Scaling group processes jobs from an SQS queue. Scaling on CPU reacts badly. The team wants to scale on the number of messages waiting per instance. What do they need?
Self-checkQuestion
Which two statements about high-resolution custom metrics are correct?
Choose 2
Self-checkQuestion
A metric stream sends metrics to a partner. A new team’s namespace Wallet/Loans is in CloudWatch but never appears at the partner. What is the most likely cause?
Self-checkQuestion
Which statistics does a metric stream always include for each metric?
Self-checkQuestion
A script calls PutMetricData for a brand-new custom metric. One minute later, list-metrics does not show it. What should the developer conclude?
Self-checkQuestion
A wallet’s traffic is high every evening and low every night. The team wants to be warned when traffic is unusual for that time of day, without setting a fixed threshold. What should it use?