2021-10-07 17:20:06
可观测性是 Serverless 架构中保障系统稳定运行的核心能力,尤其在函数计算场景下,通过 Logging(日志)、Metrics(指标)、Tracing(链路追踪)三大支柱,开发者可以快速定位问题、优化性能并预测风险。以下从基础概念、函数计算中的实现方式及典型问题排查场景展开介绍。
可观测性通过外部表现判断系统内部状态,在函数计算中主要体现在以下三方面:
Logging(日志)记录函数运行时的离散事件信息,如错误堆栈、关键变量值等。日志是问题定位的直接依据,例如通过错误日志与代码行号匹配可快速定位异常原因。
Metrics(指标)聚合数据以图表形式展示,反映系统整体健康度。核心指标包括:
调用次数(Invocations)
错误率(Error Rate)
平均执行时间(Avg Duration)
并发度(Concurrency)指标可用于趋势分析,例如并发度持续上升可能预示业务规模扩张,需提前扩容。
Tracing(链路追踪)追踪请求在分布式系统中的完整路径,记录各环节耗时。例如:
函数冷启动时间
数据库查询延迟
依赖服务调用耗时通过时延瀑布图可直观分析性能瓶颈。

配置方式函数计算与日志服务(SLS)深度集成,开发者需在服务配置中指定 Log Project 和 Logstore,所有函数日志将自动收集至此。
日志记录
各语言标准输出(stdout)均可被捕获,例如:
Node.js:console.log()
Python:print()
Go:fmt.Println()
每条日志自动附加请求 ID(RequestID),便于关联同一请求的多条日志。
查看方式
函数计算控制台:
简单查询:按 RequestID 筛选日志。
高级查询:支持 SQL 语句分析日志(如统计错误类型分布)。
日志服务控制台:提供更复杂的查询与分析能力。
示例代码(Node.js):
exports.handler = async (event) => { console.log('RequestID:', event.requestId); // 自动附加 RequestID console.error('Error occurred:', new Error('Sample error')); return { status: 'OK' };};2. 指标(Metrics)系统指标函数计算控制台默认提供以下指标:
调用次数、错误率、平均耗时
并发度、冷启动次数
内存/CPU 使用率(按实例维度)
自定义指标通过日志服务关联业务日志生成自定义指标,例如:
统计特定接口的调用量
计算订单处理成功率
查看方式
函数详情页的“监控”标签页直接查看系统指标。
在日志服务中配置仪表盘,整合系统与业务指标。
自动追踪函数计算作为链路中的一环,默认上报以下时延:
系统冷启动时间
函数执行时间
FC SDK 调用耗时(如调用其他函数或 API)
手动埋点在代码中手动记录外部服务调用耗时,例如:
const start = Date.now();await db.query('SELECT * FROM users');console.log(`DB query took ${Date.now() - start}ms`);查看方式在链路追踪服务控制台查看时延瀑布图,分析各环节耗时占比。
立即回滚版本,避免故障扩大。
在日志服务中筛选新版本发布后的错误日志,定位异常代码路径。
修复问题后重新发布,持续观察指标确认恢复。
开启链路追踪,查看时延瀑布图。
发现数据库查询耗时占比过高(如 2.5 秒)。
优化 SQL 或添加缓存,将耗时降至 500ms 以内。
结合业务数据确认是否因推广活动导致流量激增。
提前在函数计算控制台调整并发度上限至 200。
监控指标确认扩容后系统稳定运行。
通过系统化的可观测性建设,开发者可以更高效地管理 Serverless 应用,将精力从“救火”转向业务创新。如需深入学习,可参考阿里云 Serverless 公开课: