AWS Lambda 指标监控完全指南
Lambda 核心指标详解:调用量、错误、并发、Duration 与冷启动 Init Duration、内存利用率、节流与迭代器延迟;每个指标的含义、告警建议与优化方向。
Lambda 是托管的,但不是"免监控"的——它的失败模式(冷启动、节流、超时、并发打满)全都藏在指标里。CloudWatch 自动采集 Lambda 指标,本文讲清每个指标的含义、正常水位与告警建议。
一、调用类指标
| 指标 | 含义 | 关注什么 |
|---|---|---|
| Invocations | 调用次数 | 流量基线;异常下跌 = 上游停了 |
| Errors | 失败的调用数 | 持续非零就该查 |
| DeadLetterErrors | 异步调用进死信队列失败的次数 | 非零 = 坏消息在丢 |
| Throttles | 被限流的调用数 | 并发配额不够的信号 |
Errors 要区分两类:Unhandled error(代码抛异常)和系统错误(Lambda 服务本身)。告警建议按错误率(Errors/Invocations)而非绝对数——流量波动时绝对数会误报。
二、性能指标
Duration 与 Billed Duration
单次执行时长与计费时长。盯 P95/P99 而非平均值——平均值掩盖长尾。Duration 持续上涨通常是下游依赖变慢的先兆。
Init Duration(冷启动)
新实例初始化花的时间。这是 Lambda 性能的第一痛点:Java 运行时冷启动轻松 1-3 秒。监控它的占比——如果 P99 延迟远高于 P50,多半是冷启动在作怪。缓解手段:预置并发(Provisioned Concurrency)、SnapStart(Java)、精简部署包。
MaxMemoryUsed vs MemorySize
实际使用内存 vs 分配内存。Lambda 的 CPU 与内存挂钩(内存翻倍 CPU 也翻倍)——内存长期用不满一半,说明资源配多了在浪费钱;贴近上限则有 OOM 风险。
三、并发指标
- ConcurrentExecutions:当前并发实例数。接近账户/函数级并发上限时,新请求会被限流;
- ProvisionedConcurrencySpilloverInvocations:预置并发用尽后溢出的调用(这些调用要吃冷启动)。
四、流式场景:IteratorAge
Kinesis/DynamoDB Streams/SQS 触发时,IteratorAge(记录积压时长,毫秒)是最重要的健康指标——它直接回答"我的消费速度跟不跟得上生产速度"。持续上涨 = 消费能力不足(调大批量、提并发、优化处理逻辑)。
告警配置建议
| 指标 | 阈值建议 | 级别 |
|---|---|---|
| 错误率 | > 1% 持续 5 分钟 | 紧急 |
| Throttles | > 0 | 警告 |
| Duration P99 | > 超时的 50% | 警告 |
| IteratorAge | 持续上涨 15 分钟 | 紧急 |
| Invocations | 跌为 0(该有流量的时段) | 警告 |
观测云对照
观测云支持云厂商指标采集(含 AWS CloudWatch),Lambda 的调用、错误、时长、并发指标可直接汇聚到观测云统一视图,与私有部署服务的指标、日志、Trace 同屏分析——混合云架构下不必在 CloudWatch 和自建监控之间来回切换;告警策略统一配置,Lambda 节流、冷启动异常、错误率突增都能按统一值班通道触达。
常见问题(FAQ)
Q:Lambda 超时设多少合适?
A:按 P99 Duration 的 1.5-2 倍设。API 网关后面的函数注意网关自身 29 秒上限。长任务考虑 Step Functions 编排或迁移到 ECS/Fargate。
Q:函数一直没被调用,监控什么?
A:定时触发的函数(EventBridge 调度)恰恰要监控 Invocations==0——调度规则失效是静默故障,用心跳式监控兜底。
Q:X-Ray 和指标是什么关系?
A:指标回答"出问题了没有",X-Ray 追踪回答"问题在哪一段"。观测云 APM 同样支持 Lambda 场景的链路追踪,与指标联动分析。