CloudWatch 指标、命名空间与维度
了解 AWS 服务内置指标,从应用程序发布自定义指标,并按维度筛选以深入查看特定资源
CloudWatch 指标、命名空间与维度 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
什么是 Amazon CloudWatch
Amazon CloudWatch 是 AWS 统一的可观测性服务,可从您的 AWS 资源和应用程序收集指标、日志和跟踪信息。它能够全面展示您的基础设施运行状况,帮助您检测异常、设置警报,并自动响应运行变化。CloudWatch 与几乎所有 AWS 服务深度集成,也是 SAA-C03 考试中重点考查的主要监控工具。
理解 CloudWatch 指标
CloudWatch 指标是按时间排序的数据点集合,用于表示资源某个可测量方面随时间变化的值,例如每分钟测量一次 EC2 实例的 CPUUtilization。指标由其命名空间、名称和维度标识。AWS 会自动发布数百个内置指标,您也可以从应用程序代码或脚本中发布自己的自定义指标。
命名空间:组织指标
命名空间是 CloudWatch 指标的容器,可以防止来自不同来源的指标发生名称冲突。AWS 服务使用的命名空间包括 AWS/EC2、AWS/RDS、AWS/Lambda 和 AWS/S3。发布自定义指标时,您可以选择自己的命名空间,例如 MyApp/OrderService。不同命名空间中的指标彼此完全隔离,即使它们使用相同的指标名称也是如此。
# List all namespaces in your account
aws cloudwatch list-metrics \
--query 'Metrics[].Namespace' \
--output text | tr '\t' '\n' | sort -u
# List metrics in the AWS/EC2 namespace
aws cloudwatch list-metrics \
--namespace AWS/EC2 \
--query 'Metrics[].MetricName' \
--output text | tr '\t' '\n' | sort -u维度:筛选指标
维度是键值对,用于在命名空间内唯一标识一个指标。例如,在 AWS/EC2 命名空间中,可以使用维度 InstanceId=i-0123456789abcdef0 筛选 CPUUtilization,以查看某个特定实例;也可以使用 AutoScalingGroupName=my-asg,以查看整个实例群组的聚合指标。单个指标最多可以有 30 个维度,AWS 会预先定义每项服务指标可用的维度。
# Get CPU utilization for a specific EC2 instance
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z \
--period 300 \
--statistics Average标准监控与详细监控
默认情况下,AWS 服务会以5 分钟间隔向 CloudWatch 发布指标,标准监控不收取额外费用。对于对时间敏感的工作负载,您可以启用详细监控,以获得1 分钟粒度的数据。EC2、Auto Scaling、ELB、RDS 及其他服务都支持详细监控,但会产生额外的 CloudWatch 费用。对于 SAA-C03,请记住,使用阶梯扩缩容的 Auto Scaling 策略依赖 CloudWatch 警报,而 1 分钟指标能让这些警报更及时地工作。
# Enable detailed (1-minute) monitoring for an EC2 instance
aws ec2 monitor-instances \
--instance-ids i-0123456789abcdef0
# Verify monitoring state
aws ec2 describe-instance-status \
--instance-ids i-0123456789abcdef0 \
--query 'InstanceStatuses[].Monitoring'发布自定义指标
您可以使用 put-metric-data API 或 CloudWatch Agent,从任何应用程序向 CloudWatch 推送自定义指标。常见的自定义指标包括业务 KPI(每分钟订单数)、应用程序级延迟、队列深度和错误率。自定义指标会根据其分辨率保留 15 个月,并按每项指标每月计费。CloudWatch 也支持高分辨率自定义指标(1 秒粒度),但费用更高。
# Publish a custom metric from the CLI
aws cloudwatch put-metric-data \
--namespace 'MyApp/OrderService' \
--metric-name 'OrdersProcessedPerMinute' \
--value 47 \
--unit Count \
--dimensions Environment=Production,Region=us-east-1
# Publish from application code (Python boto3)
# cloudwatch.put_metric_data(
# Namespace='MyApp/OrderService',
# MetricData=[{'MetricName': 'ErrorRate', 'Value': 0.5, 'Unit': 'Percent'}]
# )用于 EC2 指标的 CloudWatch Agent
CloudWatch Agent 是一种软件代理,您可以将其安装在 EC2 实例和本地服务器上,用于收集内置 EC2 虚拟机监控程序无法提供的指标,例如内存利用率、磁盘空间和网络连接数。该代理还会收集日志并将其发送到 CloudWatch Logs。内存利用率是考试中的常见场景——它不是 EC2 的默认指标,必须通过 CloudWatch Agent 进行收集。
# Install and start the CloudWatch Agent on Amazon Linux 2
sudo yum install -y amazon-cloudwatch-agent
# Use the wizard to generate a config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# Start the agent with the generated config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-s \
-c ssm:/AmazonCloudWatch-linux指标数学与异常检测
指标数学允许您对现有指标执行算术运算来创建新的时间序列,而无需将结果作为单独的指标存储。例如,您可以直接在 CloudWatch 控制面板表达式中使用 Errors / Requests * 100 计算错误率。异常检测会将机器学习应用于历史指标数据,以创建预期值范围;您可以创建警报,在指标偏离该范围时触发,即使没有固定阈值也可以。
# Get metric data using metric math
aws cloudwatch get-metric-data \
--metric-data-queries '[
{"Id":"e1","Expression":"m1/m2*100","Label":"ErrorRate%"},
{"Id":"m1","MetricStat":{"Metric":{"Namespace":"MyApp","MetricName":"Errors"},"Period":60,"Stat":"Sum"}},
{"Id":"m2","MetricStat":{"Metric":{"Namespace":"MyApp","MetricName":"Requests"},"Period":60,"Stat":"Sum"}}
]' \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z指标保留期限
CloudWatch 会根据分辨率以不同期限存储指标:1 秒分辨率的数据保留 3 小时,1 分钟数据保留15 天,5 分钟数据保留63 天,1 小时数据保留15 个月。CloudWatch 会随着时间推移,自动将高分辨率数据聚合为低分辨率数据。这意味着,如果您需要分析长期趋势,看到的将是 1 小时平均值,而不是几个月前最初的 1 分钟读数。
在 CloudWatch 控制台中查看指标
CloudWatch 控制台提供指标资源管理器和指标浏览器,您可以在其中选择任意命名空间、指标和维度组合,并将数据随时间变化可视化。您可以在同一张图表上叠加多个指标、更改聚合周期,并将指标添加到控制面板。对于编程访问,GetMetricStatistics 和 GetMetricData API 可以返回原始数据点或聚合统计值(Average、Sum、Minimum、Maximum、SampleCount)。
# Get average CPU for all instances in an ASG over the last hour
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=AutoScalingGroupName,Value=my-asg \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 300 \
--statistics Average Maximum关键 EC2 和 RDS 指标
对于 SAA-C03 考试,请掌握以下关键指标:EC2——CPUUtilization、NetworkIn/Out、DiskReadOps/WriteOps(仅限实例存储);EC2 默认不提供:内存、磁盘空间(请使用 CloudWatch Agent)。RDS——DatabaseConnections、FreeStorageSpace、ReadLatency、WriteLatency、ReplicaLag。ELB——RequestCount、TargetResponseTime、UnHealthyHostCount。Lambda——Invocations、Errors、Duration、Throttles、ConcurrentExecutions。
快速检查
测试您对本课 AWS Solutions Architect (SAA-C03) 概念的理解。
课程回顾
在本课中,您学习了:命名空间按服务组织指标并防止名称冲突;维度可以将指标筛选到特定资源,例如单个 EC2 实例或 ASG;而且内存利用率不是 EC2 的默认指标,需要使用 CloudWatch Agent 进行收集。接下来,我们将学习 CloudWatch Alarms 和 Composite Alarms,以实现自动化告警。
常见问题解答
「CloudWatch 指标、命名空间与维度」课时是免费的吗?
是的 — 「CloudWatch 指标、命名空间与维度」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「CloudWatch 指标、命名空间与维度」这节课中我会学到什么?
了解 AWS 服务内置指标,从应用程序发布自定义指标,并按维度筛选以深入查看特定资源 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「CloudWatch 指标、命名空间与维度」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CloudWatch 指标、命名空间与维度
- CloudWatch 警报与复合警报
- CloudWatch 日志与日志洞察
- CloudWatch 控制面板与容器洞察