CloudWatch 警报与通知

AWS 监控与故障排查

John Q. Martin

Principal Consultant

什么是 CloudWatch 警报

 

核心概念

  • 在一段时间内监控单个指标
  • 当指标越过阈值时执行操作

 

CloudWatch 警报的六个核心组件:metric、threshold、period、evaluation periods、datapoints to alarm 和 actions

AWS 监控与故障排查

警报状态

CloudWatch 警报的三种状态:OK、ALARM 和 INSUFFICIENT_DATA

随着指标数据到达,CloudWatch 警报在不同状态间转换的示意图

AWS 监控与故障排查

警报评估

 

  1. 按指定间隔收集数据点
  2. 在周期上应用统计量(Average、Sum、Max、Min)
  3. 将结果与阈值比较
  4. 统计越界的评估周期数
  5. 若达到 datapoints-to-alarm 阈值则变更状态

 

Metric: CPUUtilization > 80%
Period: 5 min | 
Eval Periods: 3 | 
Datapoints to Alarm: 2 of 3

Period 1: 85% (breach) | 
Period 2: 75% (ok) | 
Period 3: 90% (breach)
Result: ALARM — 2 of 3 breached
AWS 监控与故障排查

评估策略

 

三种警报评估策略:连续、部分、单次越界及其灵敏度权衡

AWS 监控与故障排查

警报操作类型与触发点

 

触发条件

  • OK
  • ALARM
  • INSUFFICIENT_DATA

 

操作类型

  • SNS 通知
  • Auto Scaling
  • EC2 操作(stop/terminate/reboot/recover)
  • Systems Manager
AWS 监控与故障排查

缺失数据行为

 

缺失数据处理选项:notBreaching、breaching、ignore 和 missing

AWS 监控与故障排查

创建标准警报:AWS CLI

aws cloudwatch put-metric-alarm \
  --alarm-name HighCPUUtilization \
  --alarm-description "Alert when CPU exceeds 80%" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic
AWS 监控与故障排查

复合警报:概念与动机

问题

  • 相关警报各自触发,造成告警疲劳

解决方案

  • 使用逻辑运算符合并警报

复合警报逻辑:用 AND、OR、NOT 组合子警报

AWS 监控与故障排查

创建复合警报:AWS CLI

aws cloudwatch put-composite-alarm \
  --alarm-name CriticalSystemHealth \
  --alarm-description "Critical when CPU and Memory both high" \
  --actions-enabled \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:critical-alerts \
  --alarm-rule "ALARM(HighCPUAlarm) AND ALARM(HighMemoryAlarm)"
复杂规则示例
--alarm-rule "(ALARM(HighErrorRate) OR ALARM(HighLatency)) \
  AND NOT ALARM(MaintenanceMode)"
AWS 监控与故障排查

阈值选择策略

阈值选择策略:基线偏差、容量上限、SLA 目标、变化率

AWS 监控与故障排查

多层级警报策略

 

多层级警报响应:warning、critical、emergency 分别路由到不同 SNS 主题

示例: CPU 警告 75%,严重 90%,分别推送到不同 SNS 主题

AWS 监控与故障排查

异常检测警报

aws cloudwatch put-metric-alarm \
  --alarm-name AnomalousTraffic \
  --comparison-operator LessThanLowerOrGreaterThanUpperThreshold \
  --metrics '[
    {"Id":"m1","MetricStat":{"Metric":{"Namespace":"AWS/ApplicationELB",
      "MetricName":"RequestCount"},"Period":300,"Stat":"Average"}},
    {"Id":"e1","Expression":"ANOMALY_DETECTION_BAND(m1, 2)"}
  ]'
  • ML 模型学习指标的正常行为
  • 生成可配置的动态阈值带
  • 适应每日/每周模式
  • 减少手动调阈工作
AWS 监控与故障排查

资源警报:Lambda 与 ALB

Lambda 警报

推荐的 Lambda 警报:关注错误数、限流、持续时间接近超时上限

ALB 警报

推荐的 ALB 警报:关注目标响应时间、不健康主机和 5xx 错误数

AWS 监控与故障排查

警报管理最佳实践

  • 命名:<Service>-<Metric>-<Resource>-<Severity>
  • 描述:监控内容、阈值、排障提示、runbook 链接
  • 标签:Environment、Team、Severity
  • 每月回顾:调阈、清理过时、更新操作
aws cloudwatch set-alarm-state \
  --alarm-name MyAlarm \
  --state-value ALARM \
  --state-reason "Testing alarm notification"
AWS 监控与故障排查

视频小结

  • 三种状态:OK、ALARM、INSUFFICIENT_DATA
  • 评估策略:连续、部分、单次越界
  • 复合警报:用 AND、OR、NOT 组合多个警报
  • 四种阈值策略:统计、容量、SLA、变化率
  • 分级告警:warning → critical → emergency
  • 资源警报:Lambda(错误、限流、持续时间)与 ALB(5xx、延迟)
AWS 监控与故障排查

让我们一起练习吧!

AWS 监控与故障排查

Preparing Video For Download...