Amazon CloudWatch

统一监控和分析 AWS 资源与应用程序的指标、日志和事件的全托管监控服务

概述

Amazon CloudWatch 是实时监控 AWS 资源和应用程序性能与运行状态的监控服务。自动收集 EC2 CPU 使用率、RDS 数据库连接数、Lambda 执行时间、ALB 请求数等 AWS 服务指标。通过 CloudWatch Logs 汇聚、搜索和分析应用日志与系统日志,通过 CloudWatch Alarms 在指标超过阈值时触发 SNS 通知或 Auto Scaling 操作。可创建 CloudWatch Dashboards 自定义仪表板,一目了然地掌握运行状况。CloudWatch Logs Insights 使用类 SQL 查询语言高速分析日志数据,可用于故障调查和性能分析。使用自定义指标还可以将应用特有的指标 (订单数、错误率等) 纳入 CloudWatch 统一管理。

告警设计与 Composite Alarms

CloudWatch Alarms 是在指标超过阈值时执行操作的机制,在 OK、ALARM、INSUFFICIENT_DATA 三种状态间转换。状态变化时可触发 SNS 通知、Auto Scaling 策略执行、EC2 实例停止/重启、Systems Manager OpsItem 创建等。仅使用单一指标告警容易产生误报,使用 Composite Alarms 可以用 AND/OR/NOT 组合多个告警定义复合条件,例如实现"CPU 使用率高 AND 内存使用率也高"时才通知的高精度告警。Anomaly Detection 功能通过机器学习自动学习指标的正常范围,提供固定阈值难以检测的季节性变化和趋势变化的异常检测。

Logs Insights 日志分析

CloudWatch Logs 是汇聚应用日志、系统日志和 AWS 服务日志的平台,使用 Logs Insights 可以用类 SQL 查询语言高速分析。例如汇总最近 1 小时的错误日志、计算延迟的 P99、跨日志组搜索特定请求 ID 相关的日志等操作可在数秒内完成。设置指标过滤器可以自动提取日志中特定模式 (ERROR、TIMEOUT 等) 的出现次数作为自定义指标,并与告警联动。Azure Monitor 的 Log Analytics 使用 Kusto Query Language (KQL),支持更高级的连接查询和时序分析,但 Logs Insights 与 AWS 服务的集成更为无缝,搭建成本更低是其优势。监控运维技术书 (Amazon) 详细解析了日志分析的实践模式。

仪表板设计与三层指标策略

CloudWatch 的监控设计采用业务指标、应用指标和基础设施指标三层构成最为有效。业务层使用自定义指标追踪订单数、营收、错误率等业务指标。应用层监控 Lambda 执行时间、API Gateway 延迟、DynamoDB 限流次数等。基础设施层追踪 EC2 CPU/内存、RDS 连接数、EBS IOPS 等。仪表板分为运维团队用 (详细指标和告警状态) 和管理层用 (业务 KPI 摘要),分别显示适当粒度的信息。启用 Container Insights 可自动收集 ECS/EKS 容器级指标,可视化每个 Pod 或任务的资源使用率。指标分辨率标准为 1 分钟间隔,使用高分辨率指标可实现 1 秒间隔的监控。

共有するXB!