AWS CloudWatch Metrics Mastery: The Ultimate Reference List for Every AWS Service

Alexandr Bandurchin
March 17, 2025
11 min read

Amazon CloudWatch Metrics are a core component of AWS monitoring, allowing you to track the operational health and performance of your resources. This comprehensive reference guide provides a detailed list of the most important AWS CloudWatch metrics for all major AWS services.

What are AWS CloudWatch Metrics?

AWS CloudWatch Metrics are time-ordered data points published by AWS services. Each metric represents a specific variable that is monitored over time, such as CPU utilization, network traffic, or error counts. These metrics provide visibility into resource utilization, application performance, and operational health. CloudWatch monitoring is the foundation of observability in AWS environments, helping you detect anomalies, visualize performance trends, and trigger automated actions.

How to Retrieve CloudWatch Metrics

There are three primary ways to access CloudWatch metrics:

AWS Console

  1. Log into the AWS Management Console
  2. Navigate to CloudWatch service
  3. Select "Metrics" from the left navigation panel
  4. Browse metrics by category or search for specific metrics

AWS CLI

Use the AWS Command Line Interface to retrieve metrics:

bash
# List metrics for a specific namespace
aws cloudwatch list-metrics --namespace AWS/EC2

# Get metric statistics
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUUtilization \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --start-time 2023-01-01T00:00:00Z \
  --end-time 2023-01-02T00:00:00Z \
  --period 3600 \
  --statistics Average Maximum

CloudWatch API

For programmatic access, use the CloudWatch API endpoints:

  • ListMetrics: Retrieve available metrics
  • GetMetricData: Retrieve multiple metrics with a single call
  • GetMetricStatistics: Get statistics for a specific metric

For detailed examples and code snippets on working with these API endpoints, refer to our article "Unlock the Power of CloudWatch API: A Developer's Toolkit for Custom Metrics".

CloudWatch Metrics by Service

EC2 Metrics (Namespace: AWS/EC2)

Metric NameDescriptionUnit
CPUUtilizationPercentage of allocated EC2 compute units that are currently in usePercent
DiskReadOpsCompleted read operations from all instance store volumesCount
DiskWriteOpsCompleted write operations to all instance store volumesCount
DiskReadBytesBytes read from all instance store volumesBytes
DiskWriteBytesBytes written to all instance store volumesBytes
NetworkInBytes received on all network interfaces by the instanceBytes
NetworkOutBytes sent out on all network interfaces by the instanceBytes
NetworkPacketsInNumber of packets received on all network interfacesCount
NetworkPacketsOutNumber of packets sent out on all network interfacesCount
StatusCheckFailedInstance status checks that have failedCount
StatusCheckFailed_InstanceStatus checks that have failed for instanceCount
StatusCheckFailed_SystemStatus checks that have failed for systemCount

RDS Metrics (Namespace: AWS/RDS)

Metric NameDescriptionUnit
CPUUtilizationPercentage of CPU utilizationPercent
DatabaseConnectionsNumber of client connections to the databaseCount
FreeableMemoryAmount of available RAMBytes
FreeStorageSpaceAmount of available storage spaceBytes
ReadIOPSAverage number of disk read I/O operations per secondCount/Second
WriteIOPSAverage number of disk write I/O operations per secondCount/Second
ReadLatencyAverage time taken per disk I/O operationSeconds
WriteLatencyAverage time taken per disk write operationSeconds
ReadThroughputAverage number of bytes read from disk per secondBytes/Second
WriteThroughputAverage number of bytes written to disk per secondBytes/Second
BurstBalancePercent of General Purpose SSD (gp2) burst-bucket I/O credits availablePercent

Lambda Metrics (Namespace: AWS/Lambda)

Metric NameDescriptionUnit
InvocationsNumber of times function has been invokedCount
ErrorsNumber of invocations that resulted in a function errorCount
DurationTime between when Lambda receives the function and when execution completesMilliseconds
ThrottlesNumber of invocation attempts that were throttledCount
ConcurrentExecutionsNumber of function instances running simultaneouslyCount
DeadLetterErrorsNumber of times Lambda failed to send events to a DLQCount
IteratorAgeAge of the last record for stream event sourcesMilliseconds
ProvisionedConcurrencyInvocationsNumber of times provisioned concurrency was usedCount
ProvisionedConcurrencyUtilizationPercent of provisioned concurrency that is in usePercent

S3 Metrics (Namespace: AWS/S3)

Metric NameDescriptionUnit
BucketSizeBytesTotal size of all objects in the bucketBytes
NumberOfObjectsTotal number of objects stored in a bucketCount
AllRequestsTotal number of HTTP requests made to a bucketCount
GetRequestsNumber of HTTP GET requests made to a bucketCount
PutRequestsNumber of HTTP PUT requests made to a bucketCount
DeleteRequestsNumber of HTTP DELETE requests made to a bucketCount
HeadRequestsNumber of HTTP HEAD requests made to a bucketCount
4xxErrorsNumber of HTTP 4xx client error status codesCount
5xxErrorsNumber of HTTP 5xx server error status codesCount
FirstByteLatencyPer-request time from receiving request to sending first byteMilliseconds
TotalRequestLatencyPer-request time from receiving request to last byteMilliseconds

ELB Metrics (Namespace: AWS/ELB for Classic, AWS/ApplicationELB for ALB, AWS/NetworkELB for NLB)

Application Load Balancer Metrics

Metric NameDescriptionUnit
RequestCountNumber of requests processedCount
HTTPCode_Target_2XX_CountNumber of HTTP 2XX response codes from targetsCount
HTTPCode_Target_3XX_CountNumber of HTTP 3XX response codes from targetsCount
HTTPCode_Target_4XX_CountNumber of HTTP 4XX response codes from targetsCount
HTTPCode_Target_5XX_CountNumber of HTTP 5XX response codes from targetsCount
HTTPCode_ELB_4XX_CountNumber of HTTP 4XX response codes generated by the ALBCount
HTTPCode_ELB_5XX_CountNumber of HTTP 5XX response codes generated by the ALBCount
TargetResponseTimeTime elapsed from request to response from targetSeconds
ActiveConnectionCountNumber of concurrent TCP connectionsCount
NewConnectionCountNumber of new TCP connections establishedCount
RejectedConnectionCountNumber of connections rejected due to target group at capacityCount

Network Load Balancer Metrics

Metric NameDescriptionUnit
ActiveFlowCountNumber of concurrent TCP flowsCount
ProcessedBytesTotal number of bytes processed by the load balancerBytes
TCP_Client_Reset_CountNumber of reset (RST) packets sent from client to targetCount
TCP_Target_Reset_CountNumber of reset (RST) packets sent from target to clientCount
HealthyHostCountNumber of targets considered healthyCount
UnHealthyHostCountNumber of targets considered unhealthyCount

ECS/EKS Metrics (Namespace: AWS/ECS)

Metric NameDescriptionUnit
CPUUtilizationPercentage of CPU units used by the cluster or servicePercent
MemoryUtilizationPercentage of memory used by the cluster or servicePercent
CPUReservationPercentage of CPU units reserved by running tasksPercent
MemoryReservationPercentage of memory reserved by running tasksPercent
RunningTaskCountNumber of tasks in the RUNNING stateCount
PendingTaskCountNumber of tasks in the PENDING stateCount
ServiceCountNumber of services in the clusterCount

DynamoDB Metrics (Namespace: AWS/DynamoDB)

Metric NameDescriptionUnit
ConsumedReadCapacityUnitsNumber of read capacity units consumedCount
ConsumedWriteCapacityUnitsNumber of write capacity units consumedCount
ReadThrottleEventsRequests to DynamoDB that exceed the provisioned read capacityCount
WriteThrottleEventsRequests to DynamoDB that exceed the provisioned write capacityCount
ProvisionedReadCapacityUnitsNumber of provisioned read capacity unitsCount
ProvisionedWriteCapacityUnitsNumber of provisioned write capacity unitsCount
SuccessfulRequestLatencyElapsed time for successful requests to DynamoDBMilliseconds
SystemErrorsRequests to DynamoDB that generate an HTTP 500 status codeCount
UserErrorsRequests to DynamoDB that generate an HTTP 400 status codeCount
ThrottledRequestsRequests to DynamoDB that exceed the provisioned throughput limitsCount

API Gateway Metrics (Namespace: AWS/ApiGateway)

Metric NameDescriptionUnit
CountTotal number of API requestsCount
LatencyTime between when API Gateway receives a request and when it returns a responseMilliseconds
IntegrationLatencyTime between API Gateway relaying a request to the backend and receiving a responseMilliseconds
4XXErrorNumber of client-side errorsCount
5XXErrorNumber of server-side errorsCount
CacheHitCountNumber of requests served from API cacheCount
CacheMissCountNumber of requests served from the backendCount

SQS Metrics (Namespace: AWS/SQS)

Metric NameDescriptionUnit
NumberOfMessagesSentNumber of messages added to a queueCount
NumberOfMessagesReceivedNumber of messages returned by calls to the ReceiveMessage actionCount
NumberOfMessagesDeletedNumber of messages deleted from the queueCount
NumberOfEmptyReceivesNumber of ReceiveMessage API calls that didn't return a messageCount
ApproximateNumberOfMessagesVisibleNumber of messages available for retrievalCount
ApproximateNumberOfMessagesNotVisibleNumber of messages that are in flightCount
ApproximateAgeOfOldestMessageAge of the oldest non-deleted message in the queueSeconds

SNS Metrics (Namespace: AWS/SNS)

Metric NameDescriptionUnit
NumberOfMessagesPublishedNumber of messages published to your Amazon SNS topicsCount
NumberOfNotificationsDeliveredNumber of messages successfully deliveredCount
NumberOfNotificationsFailedNumber of messages that SNS failed to deliverCount
NumberOfNotificationsFilteredOutNumber of messages that were filtered out by subscription filter policiesCount
NumberOfNotificationsFilteredOut-NoMessageAttributesNumber of messages filtered out due to missing message attributesCount
NumberOfNotificationsFilteredOut-InvalidMessageAttributesNumber of messages filtered out due to invalid message attributesCount
PublishSizeSize of messages publishedBytes
SMSSuccessRateRate of successful SMS message deliveriesPercent

Kinesis Metrics (Namespace: AWS/Kinesis)

Metric NameDescriptionUnit
GetRecords.BytesBytes retrieved, measured over 5 minutesBytes
GetRecords.IteratorAgeMillisecondsAge of the last record in a GetRecords callMilliseconds
GetRecords.LatencyTime taken per GetRecords operationMilliseconds
GetRecords.RecordsNumber of records retrieved per GetRecords operationCount
GetRecords.SuccessNumber of successful GetRecords operationsCount
IncomingBytesNumber of bytes successfully put to the Kinesis streamBytes
IncomingRecordsNumber of records successfully put to the Kinesis streamCount
PutRecord.BytesBytes put to the Kinesis stream using PutRecordBytes
PutRecord.LatencyTime taken per PutRecord operationMilliseconds
PutRecord.SuccessNumber of successful PutRecord operationsCount
PutRecords.BytesBytes put to the Kinesis stream using PutRecordsBytes
PutRecords.LatencyTime taken per PutRecords operationMilliseconds
PutRecords.RecordsNumber of records put using PutRecordsCount
PutRecords.SuccessNumber of successful PutRecords operationsCount
ReadProvisionedThroughputExceededNumber of GetRecords calls throttled for the streamCount
WriteProvisionedThroughputExceededNumber of records rejected due to throttlingCount

ElastiCache Metrics (Namespace: AWS/ElastiCache)

Redis Metrics

Metric NameDescriptionUnit
CPUUtilizationPercentage of CPU utilizationPercent
EngineCPUUtilizationPercentage of CPU used by the Redis engine threadPercent
CacheHitsNumber of successful read-only key lookups in the main dictionaryCount
CacheMissesNumber of unsuccessful read-only key lookups in the main dictionaryCount
CurrConnectionsNumber of client connectionsCount
NetworkBytesInNumber of bytes the host has read from the networkBytes
NetworkBytesOutNumber of bytes sent by the host to the networkBytes
NewConnectionsTotal number of connections that have been acceptedCount
EvictionsNumber of keys evicted due to maxmemory limitCount
DatabaseMemoryUsagePercentagePercentage of memory available for the datasetPercent
ReplicationLagNumber of seconds by which the replica lags behind the primarySeconds

Memcached Metrics

Metric NameDescriptionUnit
CPUUtilizationPercentage of CPU utilizationPercent
CurrConnectionsNumber of client connectionsCount
NetworkBytesInNumber of bytes read from the network by the nodeBytes
NetworkBytesOutNumber of bytes sent by the node on the networkBytes
GetHitsNumber of get requests that result in a cache hitCount
GetMissesNumber of get requests that result in a cache missCount
CurrItemsNumber of items currently stored in the cacheCount
EvictionsNumber of items evicted from the cacheCount
CasBadvalNumber of CAS (compare-and-swap) requests with a bad identifierCount
CasHitsNumber of CAS requests that found an existing itemCount
CasMissesNumber of CAS requests for items that were not foundCount
FreeableMemoryAmount of free memory available on the nodeBytes

Metric Retention and Storage Costs

CloudWatch retains metrics according to the following schedule:

  • Data points with a period less than 60 seconds: Available for 3 hours
  • Data points with a period of 60 seconds (1 minute): Available for 15 days
  • Data points with a period of 300 seconds (5 minutes): Available for 63 days
  • Data points with a period of 3600 seconds (1 hour): Available for 455 days (15 months)

CloudWatch Metrics Pricing

The cost structure for CloudWatch metrics monitoring includes:

  • Basic monitoring (default for most services): Free
  • Detailed monitoring (higher frequency): Starts at $0.30 per metric per month
  • CloudWatch custom metrics: $0.30 per metric per month
  • Amazon CloudWatch custom metrics with high resolution: $0.10 per 1,000 metrics
  • API requests: First million API requests per month are free, then $0.01 per 1,000 API requests
  • CloudWatch metrics pricing for alarms: $0.10 per alarm metric per month (standard resolution)

These prices may vary by region, so consult the AWS pricing page for the most current information.

Exporting CloudWatch Metrics

You can export CloudWatch metrics to third-party monitoring tools for extended analytics, visualization, or longer retention. Popular options include:

  • AWS Data Firehose: Forward metrics to destinations like Elasticsearch, Splunk, or custom HTTP endpoints
  • AWS Metric Stream: Stream metrics in near real-time to partners and third-party solutions
  • OpenTelemetry integration: Use the OpenTelemetry Collector to forward metrics to other systems

For a detailed guide on exporting AWS CloudWatch metrics and logs to external systems, you can refer to Uptrace's guide on CloudWatch metrics and logs, which provides step-by-step instructions for setting up integrations using AWS Data Firehose or Prometheus with yet-another-cloudwatch-exporter.

AWS CloudWatch Alarms

AWS CloudWatch alarms monitor your CloudWatch metrics and trigger actions when metrics breach predefined thresholds. They are essential for proactive monitoring and automated response.

CloudWatch Alarm States

CloudWatch metric alarms have three possible states:

  1. OK - The metric is within the defined threshold
  2. ALARM - The metric has breached the defined threshold
  3. INSUFFICIENT_DATA - The alarm has just started, the metric is not available, or not enough data is available for the metric to determine the alarm state

Creating Basic CloudWatch Alarms

You can create alarms through the AWS Console, AWS CLI, or CloudFormation (AWS::CloudWatch::Alarm resource).

Example using AWS CLI:

bash
aws cloudwatch put-metric-alarm \
  --alarm-name "High-CPU-Alarm" \
  --alarm-description "Alarm when CPU exceeds 70%" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --dimensions "Name=InstanceId,Value=i-1234567890abcdef0" \
  --evaluation-periods 2 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic

CloudWatch Alarms Pricing

The cost of CloudWatch alarms depends on the type:

  • Standard Resolution Alarms: $0.10 per alarm metric per month
  • High Resolution Alarms: $0.30 per alarm metric per month
  • Composite Alarms: $0.50 per alarm metric per month

CloudWatch Monitoring Best Practices

Effective CloudWatch monitoring requires a strategic approach:

  1. Set appropriate thresholds based on application behavior
  2. Use composite alarms for complex conditions
  3. Implement multi-metric alarms for correlated issues
  4. Configure meaningful actions (SNS notifications, Auto Scaling, etc.)
  5. Use anomaly detection for dynamic thresholds
  6. Monitor custom metrics alongside AWS metrics

FAQ

1. What is CloudWatch metrics? CloudWatch metrics are time-ordered data points published to CloudWatch by AWS services and your applications. Each metric represents a variable that changes over time (such as CPU utilization, network throughput, or error counts). AWS CloudWatch metrics provide visibility into resource performance, operational health, and overall AWS environment status.

2. What are the 3 states of the CloudWatch metric alarm? CloudWatch metric alarms have three possible states:

  • OK - The metric is within the defined threshold
  • ALARM - The metric has breached the defined threshold
  • INSUFFICIENT_DATA - There's not enough data to evaluate the alarm state, or the metric isn't being reported

3. What are CloudWatch custom metrics? CloudWatch custom metrics are metrics that you define and publish to CloudWatch yourself, rather than metrics automatically collected by AWS services. Custom metrics allow you to monitor application-specific data points, business metrics, or any other variable important to your workloads. You can publish custom metrics using the AWS SDK, AWS CLI, or CloudWatch agent.

4. Are CloudWatch metrics free? Basic CloudWatch metrics provided by AWS services with standard resolution (data points at 5-minute intervals) are available at no additional charge. However, there are costs associated with:

  • Detailed monitoring (1-minute intervals): Starting at $0.30 per metric per month
  • Custom metrics: $0.30 per metric per month
  • High-resolution custom metrics (1-second intervals): $0.10 per 1,000 metrics
  • API requests: First million API requests per month are free, then $0.01 per 1,000 API requests
  • CloudWatch alarms: Starting at $0.10 per alarm metric per month

Conclusion

AWS CloudWatch metrics are essential for monitoring the health and performance of your AWS resources. This reference guide provides a comprehensive list of the most important metrics for major AWS services, along with ways to retrieve them and understand their storage parameters and costs.

For the most up-to-date and complete information, always refer to the official AWS CloudWatch documentation.

You may also be interested in: