CloudWatch 指标

AWS 监控与故障排查

John Q. Martin

Principal Consultant

CloudWatch 指标结构

 

展示 CloudWatch 指标数据点的命名空间、名称、维度、时间戳和单位的示意图

AWS 监控与故障排查

标准指标 vs 自定义指标

标准

  • 由 AWS 服务自动发布
  • EC2:5 分钟免费,启用详细监控为 1 分钟
  • 示例:EC2 CPUUtilization、RDS DatabaseConnections、Lambda Invocations

自定义

  • 可度量任意内容:页面加载、订单、缓存命中率
  • 完全控制命名空间、维度、单位、分辨率
  • 每个命名空间、名称与维度组合均计费
AWS 监控与故障排查

指标分辨率

比较 CloudWatch 指标从 1 秒到 5 分钟的分辨率

  • 生产用 1 分钟,开发/测试用 5 分钟
  • 1 秒仅在确有需要时使用
  • 标准:自动且免费,但有间隔
  • 自定义:完全可控,但按指标计费
AWS 监控与故障排查

发布自定义指标

用于发布指标的 AWS CLI 图标

  • 使用 CLI 的 put-metric-data 进行快速测试

通过 REST API 发布自定义指标的图标

  • 通过 HTTP POST 的 REST API 直接集成

用于发布指标的 Amazon SDK 图标

  • Amazon SDK

CloudWatch Unified Agent 图标

  • CloudWatch 统一代理
AWS 监控与故障排查

用 CLI 发布

   


aws cloudwatch put-metric-data \
  --namespace "Pipeline/DeployDb" \
  --metric-name "stepDuration" \
  --dimensions Name=Pipeline,Value=ProdApp01 \
  --value 42 \
  --unit "Seconds"

 

用于发布指标的 AWS CLI 图标

  • 任何能调用 CLI 的都可埋点上报
  • 善用维度 Dimensions
AWS 监控与故障排查

用 SDK 发布

  使用 Amazon CloudWatch SDK 发布自定义指标的 C# 代码示例

 

用于发布指标的 Amazon SDK 图标

  • 提供 C#、Java、Go、Rust 等 SDK
  • 从应用代码中发布指标
  • 用维度在应用各部分细分指标
AWS 监控与故障排查

统一代理

CloudWatch 统一代理的 JSON 配置,定义指标与采集间隔

CloudWatch 统一代理图标

  • 采集操作系统层面的指标和日志
  • 运行于 EC2 实例或容器
  • 用 JSON 配置要采集的内容
  • 可为每个指标调节采集间隔
AWS 监控与故障排查

嵌入式指标格式(EMF)

{
  "_aws": {
    "CloudWatchMetrics": [{
      "Namespace": "MyApp",
      "Dimensions": [["functionName"]],
      "Metrics": [{"Name": "latency", "Unit": "Milliseconds"}]
    }]
  },
  "functionName": "checkout",
  "latency": 56
}

 

  • 在日志中以结构化 JSON 写入指标
  • CloudWatch 自动提取这些指标
  • 适合 Lambda 与容器,无需额外 API 调用
  • 一次写入同时获得指标与日志
AWS 监控与故障排查

指标流

 

  • 持续导出数据到外部目标
  • S3 或合作伙伴如 New Relic、Datadog
  • 支持比单独 CloudWatch 更丰富的分析
  • 混合云的统一视图

CloudWatch 指标流导出到外部目标的概览图

AWS 监控与故障排查

流式传输到 Amazon S3

指标从 CloudWatch 通过 Kinesis Data Firehose 流向 S3 存储桶的示意图

AWS 监控与故障排查

流式传输到合作伙伴方案

指标通过 Kinesis Firehose 流向合作伙伴方案端点并以 S3 备份的示意图

AWS 监控与故障排查

小结

指标与自定义指标

  • 度量工作负载属性
  • 为您自己的应用创建自定义指标
  • 善用维度

 

用于检测的分辨率

  • 细粒度很重要
  • 免费 vs 付费
  • 依赖具体服务

发布自定义指标

  • 为进程与应用埋点
  • 用维度做分类
  • 通过 SDK 或 CLI(经由 API)

 

指标流

  • 发送到 S3 或合作伙伴方案
  • 自定义分析
  • 统一视图
AWS 监控与故障排查

让我们一起练习吧!

AWS 监控与故障排查

Preparing Video For Download...