使用 Amazon CloudWatch 的日志与指标

在 AWS 上部署应用

Dunieski Otano

Amazon Web Services Solutions Architect

宕机了吗?

  • 客户反馈应用出故障了
  • 您没有数据来证实或否认
  • CloudWatch 让猜测变成结论

一个带问号的监控仪表盘,不确定服务是否健康或宕机

在 AWS 上部署应用

日志 vs 监控 vs 可观测性

三栏图:区分日志为不可变事件记录,监控为基于阈值的指标告警,可观测性为关联数据以回答新问题

  • Logging:按发生时记录离散事件
  • Monitoring:按阈值跟踪已知指标
  • Observability:用数据回答新问题
  • 三者兼备,才能放心运维
在 AWS 上部署应用

日志组、日志流与保留期

  • Log group:相关日志的命名容器
  • Log stream:单一来源的序列
  • Retention:日志保留时长
  • 日志有成本;请有意识地设置保留期

CloudWatch 日志层级:日志组包含多个日志流,每个流为时间有序事件序列,含保留期设置和成本提示

在 AWS 上部署应用

指标与自定义指标

  • Metrics:时序数值数据
  • AWS 会自动发布多种服务指标
  • Custom metrics:应用自定义上报的数值
  • 维度按属性切分指标

CloudWatch 指标:左侧为自动发布的 AWS 服务指标,右侧为带维度的自定义指标,以及带阈值告警线的时序图表

在 AWS 上部署应用

嵌入式指标格式

一条结构化日志行同时携带指标值,以及一个 _aws 区块,告诉 CloudWatch 哪些字段是指标:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
在 AWS 上部署应用

仪表盘与告警

左侧为 CloudWatch 仪表盘小部件面板,右侧为告警状态机含 OK、ALARM、INSUFFICIENT_DATA 状态,SNS 将通知路由至邮件与自动化

  • Dashboard:一屏图表与小部件
  • Alarm:指标越过阈值即触发
  • 告警路由到 SNS,再到邮件、短信或自动化
  • 监控用户可感知的症状,而非每个指标
在 AWS 上部署应用

结构化日志策略

  • 用 JSON 记录日志,别用纯文本
  • 包含 timestamp、level、request ID、user ID
  • 结构化字段可过滤与查询
  • 跨服务一致,才能关联分析

结构化 JSON 日志行,含 timestamp、level、requestId、userId 字段,Logs Insights 查询展示命名字段如何支持精确过滤与汇总

在 AWS 上部署应用

让我们一起练习吧!

在 AWS 上部署应用

Preparing Video For Download...