2. AWS可观测性核心服务概览

在AWS上做可观测性与故障诊断,最容易踩的坑不是“工具不够”,而是“工具用错”。同一个问题,用CloudWatch查指标可能只看到CPU飙高,用CloudTrail却能发现是某个IAM策略变更导致权限被拒,用X-Ray才能定位到是下游Lambda冷启动拖慢了整条链路。因此,理解每个服务的功能边界,比记住它们的名字更重要。

我们可以把AWS可观测性服务按“观测对象”和“回答的问题”两个维度来划分。CloudWatch回答“系统现在运行得怎么样”,CloudTrail回答“谁在什么时候做了什么操作”,X-Ray回答“一个请求在分布式链路中慢在哪一段”,VPC Flow Logs回答“网络层哪些IP和端口在通信、是否被拒绝”,Config回答“资源配置是否符合预期、何时发生了变更”。这五个服务覆盖了指标、日志、链路、网络、配置五个不同的观测面,彼此互补而非替代。

AWS可观测性五类服务:观测对象与核心问题 按“观测面”划分,每个服务回答不同的问题,组合使用才能完成故障闭环 被观测的AWS工作负载 EC2 / Lambda / ECS / RDS / API Gateway / VPC CloudWatch 观测面:指标 / 日志 / 告警 • 指标:CPU、延迟、队列深度 • 日志:应用日志、Lambda日志 • 告警:阈值触发SNS/ASG • 回答:系统“现在怎么样” CloudTrail 观测面:API操作审计 • 记录:谁、何时、做了什么 • 来源:控制台、CLI、SDK • 用途:安全审计、变更追溯 • 回答:谁“改了什么” AWS X-Ray 观测面:分布式调用链 • 追踪:请求跨服务完整路径 • 定位:慢在哪一段、错误在哪 • 采样:可配置采样率 • 回答:请求“慢在哪” VPC Flow Logs 观测面:网络流量 • 记录:源/目的IP、端口、协议 • 状态:ACCEPT / REJECT • 用途:安全组、NACL排查 • 回答:网络“通不通” AWS Config 观测面:资源配置与合规 • 记录:资源配置变更历史 • 规则:合规性自动评估 • 用途:配置漂移、合规审计 • 回答:配置“对不对” 选型决策:从故障现象反推该用哪个服务 现象:CPU/内存/延迟异常 → 先用 CloudWatch 指标+告警 现象:权限被拒/资源被删 → 查 CloudTrail 操作记录 现象:请求慢但不知哪段慢 → 用 X-Ray 追踪调用链 现象:连接超时/端口不通 → 查 VPC Flow Logs 的 REJECT 现象:配置被意外修改 → 用 Config 查变更时间线 组合使用示例:API 5xx 升高 → CloudWatch 告警 → X-Ray 定位下游 Lambda → CloudTrail 确认是否有人改了函数配置 → Config 确认配置漂移 单一服务只能看到局部,五类服务组合才能形成“指标→链路→操作→配置→网络”的完整证据链 选型原则:先明确“要回答什么问题”,再选服务;不要用 CloudWatch 日志去替代 CloudTrail 审计,也不要用 X-Ray 去查网络拒绝。

从图中可以清晰看到,五个服务各自对应一个观测面,且底部给出了从“故障现象”反推“该用哪个服务”的决策路径。接下来逐一说明每个服务的功能边界和典型使用场景。

CloudWatch:指标、日志与告警的中枢

CloudWatch是AWS可观测性的默认入口。它接收三类数据:指标(Metrics)、日志(Logs)和事件(Events)。EC2的CPU使用率、ALB的请求数和延迟、Lambda的调用次数和错误数、SQS的队列深度,都会自动以指标形式进入CloudWatch,默认保留15个月,粒度从1分钟到1天可调。日志方面,应用可以通过CloudWatch Logs Agent或SDK把日志推送到日志组,Lambda则自动把每次调用的日志写入/aws/lambda/<函数名>日志组。

CloudWatch最实用的能力是告警(Alarm)。告警基于指标阈值触发,可以绑定SNS主题发邮件、触发Auto Scaling、或调用Lambda做自动修复。例如,为ALB的HTTPCode_ELB_5XX_Count设置“5分钟内求和大于10”的告警,就能在5xx错误集中出现时第一时间通知。需要注意的是,CloudWatch指标是聚合数据,它告诉你“出了问题”,但不告诉你“为什么出问题”——后者需要日志和链路追踪来补充。

CloudTrail:API操作的审计底账

CloudTrail记录的是“控制平面”操作:谁通过控制台、CLI、SDK或AWS服务调用了哪个API,在什么时间、从哪个IP、请求参数是什么、返回结果如何。默认情况下,CloudTrail在创建AWS账户时自动开启,保留90天的管理事件历史。要长期保留或分析数据事件(如S3对象级操作),需要创建跟踪(Trail)并把日志投递到S3桶。

在故障诊断中,CloudTrail的价值在于“变更追溯”。比如某台EC2突然无法访问,CloudWatch显示CPU正常、网络正常,但应用报权限错误。此时查CloudTrail,可能会发现10分钟前有人调用了ModifyInstanceAttribute修改了安全组,或者调用了DetachRolePolicy移除了实例角色策略。CloudTrail不直接告诉你“服务挂了”,但它能告诉你“谁在什么时候动了什么”,这是排查人为变更类故障的关键证据。

AWS X-Ray:分布式调用链的显微镜

X-Ray解决的是“一个请求跨多个服务时,慢在哪一段、错在哪一段”的问题。它通过在应用代码中集成X-Ray SDK,为每个请求生成Trace ID,并在服务间传递。每个被追踪的片段称为Segment,子片段称为Subsegment。X-Ray把这些片段聚合成服务地图(Service Map),直观展示调用关系和每段的耗时、错误率。

典型场景:API Gateway → Lambda → DynamoDB 的请求延迟升高。CloudWatch只能看到API Gateway的总体延迟和Lambda的Duration指标,但无法区分是Lambda冷启动、DynamoDB查询慢,还是网络往返耗时。X-Ray的Trace详情会显示每个Subsegment的耗时,比如DynamoDB的GetItem耗时800ms,而Lambda自身逻辑只有50ms,问题就定位到了DynamoDB的查询效率或容量配置上。X-Ray默认采样率为每秒1个请求加5%的额外请求,高流量场景下需要调整采样规则以控制成本。

VPC Flow Logs:网络层的通断证据

VPC Flow Logs捕获的是VPC内弹性网卡(ENI)的IP流量元数据,包括源IP、目的IP、源端口、目的端口、协议、包数、字节数以及ACCEPT/REJECT状态。它不记录包内容,只记录“谁和谁在通信、是否被允许”。Flow Logs可以投递到CloudWatch Logs或S3,前者便于实时查询,后者便于长期存储和Athena分析。

排查网络问题时,Flow Logs的REJECT记录是最直接的线索。例如,EC2无法连接RDS,安全组看起来配置正确,但Flow Logs显示从EC2到RDS 3306端口的记录状态为REJECT,说明流量被某个安全组或NACL规则拒绝。此时再对照安全组规则和NACL规则,就能快速定位是哪条规则拦截了流量。需要注意的是,Flow Logs只覆盖VPC内的ENI流量,不覆盖VPC对等连接、Transit Gateway或本地网关的流量,这些场景需要结合其他工具。

AWS Config:资源配置的合规与变更时间线

Config持续记录AWS资源的配置状态和变更历史,并可以基于规则(Config Rules)自动评估资源是否符合合规要求。例如,可以定义规则“所有S3桶必须开启版本控制”或“所有安全组不得允许0.0.0.0/0访问22端口”。当资源配置发生变化时,Config会记录变更前后的配置快照,并触发规则评估,标记为COMPLIANT或NON_COMPLIANT。

在故障诊断中,Config的“配置时间线”功能非常实用。当某个资源行为异常时,可以查看它的配置变更历史,确认是否有人修改了关键参数。比如Lambda函数突然报超时,Config的时间线可能显示有人把超时时间从30秒改成了3秒。Config不直接采集指标或日志,但它提供了“配置是否正确、何时被改”的维度,与CloudTrail的操作审计形成互补:CloudTrail记录“谁调用了API”,Config记录“调用后资源配置变成了什么”。

选型依据与组合使用

选择哪个服务,取决于你要回答的问题。如果问题是“系统当前性能如何”,用CloudWatch;如果问题是“谁改了什么”,用CloudTrail;如果问题是“请求慢在哪一段”,用X-Ray;如果问题是“网络通不通”,用VPC Flow Logs;如果问题是“配置是否符合预期”,用Config。实际故障排查中,这五个服务往往需要组合使用。

举一个组合排查的示例:某API的5xx错误率突然升高。第一步,CloudWatch告警触发,显示ALB的5xx指标异常;第二步,用X-Ray查看Trace,发现错误集中在调用下游Lambda时;第三步,查CloudTrail,发现有人在该时间段调用了UpdateFunctionConfiguration修改了Lambda的环境变量;第四步,用Config查看该Lambda的配置时间线,确认环境变量被改成了错误的数据库地址;第五步,如果涉及网络连接,再用VPC Flow Logs确认Lambda到数据库的流量是否被拒绝。这样一条证据链,单靠任何一个服务都无法完成。

选型速记:指标异常找CloudWatch,操作变更找CloudTrail,链路慢找X-Ray,网络不通找Flow Logs,配置漂移找Config。先定位“问题属于哪个观测面”,再选对应服务,避免用错工具导致排查方向偏离。
常见误区:不要用CloudWatch Logs替代CloudTrail做审计——CloudWatch Logs记录的是应用日志,不包含API调用者身份和请求参数;也不要用X-Ray去查网络层拒绝,X-Ray追踪的是应用层调用链,网络层拒绝需要Flow Logs的REJECT记录来确认。

掌握这五个服务的功能边界后,下一步需要理解它们各自的数据采集方式、保留策略和成本模型,这样才能在实际架构中合理部署,既保证可观测性覆盖,又避免不必要的费用。