通过 Amazon CloudWatch 构建统一监控 - 指标、日志与告警的设计
通过指标、日志和告警三大支柱构建统一监控。介绍 Logs Insights 的交互式分析、复合告警的高精度通知以及 Embedded Metric Format 的使用方法。
CloudWatch 概述与 AWS 监控基础
CloudWatch 是提供 AWS 资源和应用程序监控、日志管理和告警的全托管服务。通过指标(数值数据)、日志(文本数据)和告警(阈值通知)三大支柱实现统一监控。自动从 EC2、Lambda、RDS、DynamoDB 等 70 多个 AWS 服务收集指标,无需额外配置即可开始基本监控。免费套餐提供基本指标收集和 10 个告警,小规模环境无需额外成本即可启动监控。
指标与自定义指标的应用
AWS 服务自动将 CPU 使用率、网络 I/O、请求数等标准指标发送到 CloudWatch。自定义指标通过 PutMetricData API 发送,监控业务指标(订单数/分钟、销售额/小时)。使用 Embedded Metric Format (EMF) 可以在输出日志的同时生成指标,简化 Lambda 函数的自定义指标发送。高分辨率指标支持 1 秒间隔的数据收集,适用于对延迟敏感的工作负载分析。指标保留期根据分辨率最长 15 个月,支持长期趋势分析。
告警与异常检测
告警在单个指标超过阈值时触发 SNS 通知或 Lambda 执行。除静态阈值外,异常检测 (Anomaly Detection) 提供动态阈值,机器学习模型学习指标正常模式并自动检测偏差。复合告警通过 AND/OR 逻辑组合多个告警减少误报。告警触发的操作包括 SNS 主题通知、EC2 实例停止/重启、Auto Scaling 策略执行和 Systems Manager Automation 启动。通过 SNS 集成可同时向邮件、SMS、Slack、PagerDuty 等多渠道发送通知,大幅缩短从故障检测到初始响应的时间。
Logs Insights 与 Contributor Insights
CloudWatch Logs Insights 是交互式日志分析查询引擎,使用专有查询语言搜索和聚合日志数据。组合 fields、filter、stats、sort 命令执行错误日志汇总、延迟分布分析和特定模式搜索。自动字段检测从 JSON 格式日志提取结构化数据,轻松进行聚合和过滤。设置指标过滤器可将特定日志模式出现次数记录为指标,实时检测错误率激增。Contributor Insights 自动识别日志数据中 Top N 贡献者(产生最多错误的 API、请求最多的 IP 地址)。Lambda Insights 自动收集 Serverless 函数的性能指标(冷启动、内存使用率、执行时间)。 如需深入了解监控运维知识,专业书籍 (Amazon)可供参考。
CloudWatch 的成本优化
CloudWatch 的主要成本因素是自定义指标(每个指标月费 0.30 美元)、日志摄取(每 GB 约 0.50 美元)和日志存储(每 GB 月费约 0.03 美元)。EC2 和 RDS 的基本指标免费收集。区分使用标准分辨率(60 秒)和高分辨率(1 秒)指标,限制需要高分辨率的指标。按日志组设置保留期,调试日志设为 7 天,审计日志设为 1 年等进行差异化管理以降低存储成本。通过 Embedded Metric Format 从应用日志自动提取指标,减少 PutMetricData API 调用。定期清理不必要的指标过滤器和告警。
总结
CloudWatch 是与 70 多个 AWS 服务原生集成的全托管监控基础设施。通过 Logs Insights 执行交互式日志分析,通过异常检测和复合告警实现高精度通知。SNS 集成的多渠道通知和 Systems Manager 集成的自动修复提升运维自动化水平。Embedded Metric Format 和 Contributor Insights 可灵活采集应用特有的指标。