从零入门 Serverless | 函数计算的可观测性

从零入门 Serverless | 函数计算的可观测性
最新回答
因你在

2021-10-07 17:20:06

从零入门 Serverless:函数计算的可观测性

可观测性是 Serverless 架构中保障系统稳定运行的核心能力,尤其在函数计算场景下,通过 Logging(日志)、Metrics(指标)、Tracing(链路追踪)三大支柱,开发者可以快速定位问题、优化性能并预测风险。以下从基础概念、函数计算中的实现方式及典型问题排查场景展开介绍。

一、可观测性基础概念

可观测性通过外部表现判断系统内部状态,在函数计算中主要体现在以下三方面:

  • Logging(日志)记录函数运行时的离散事件信息,如错误堆栈、关键变量值等。日志是问题定位的直接依据,例如通过错误日志与代码行号匹配可快速定位异常原因。

  • Metrics(指标)聚合数据以图表形式展示,反映系统整体健康度。核心指标包括:

    调用次数(Invocations)

    错误率(Error Rate)

    平均执行时间(Avg Duration)

    并发度(Concurrency)指标可用于趋势分析,例如并发度持续上升可能预示业务规模扩张,需提前扩容。

  • Tracing(链路追踪)追踪请求在分布式系统中的完整路径,记录各环节耗时。例如:

    函数冷启动时间

    数据库查询延迟

    依赖服务调用耗时通过时延瀑布图可直观分析性能瓶颈。

(Logging、Metrics、Tracing 的关系示意图)

二、函数计算中的可观测性实现

1. 日志(Logging)
  • 配置方式函数计算与日志服务(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 使用率(按实例维度)

  • 自定义指标通过日志服务关联业务日志生成自定义指标,例如:

    统计特定接口的调用量

    计算订单处理成功率

  • 查看方式

    函数详情页的“监控”标签页直接查看系统指标。

    在日志服务中配置仪表盘,整合系统与业务指标。

3. 链路追踪(Tracing)
  • 自动追踪函数计算作为链路中的一环,默认上报以下时延:

    系统冷启动时间

    函数执行时间

    FC SDK 调用耗时(如调用其他函数或 API)

  • 手动埋点在代码中手动记录外部服务调用耗时,例如:

    const start = Date.now();await db.query('SELECT * FROM users');console.log(`DB query took ${Date.now() - start}ms`);
  • 查看方式在链路追踪服务控制台查看时延瀑布图,分析各环节耗时占比。

(请求在各链路的时延瀑布图示例)

三、典型问题排查场景

场景 1:新版本发布后错误率升高
  1. 现象:监控指标显示错误率从 0.1% 突增至 5%。
  2. 排查步骤

    立即回滚版本,避免故障扩大。

    在日志服务中筛选新版本发布后的错误日志,定位异常代码路径。

    修复问题后重新发布,持续观察指标确认恢复。

场景 2:函数执行超时
  1. 现象:部分请求因超时失败(默认超时时间 3 秒)。
  2. 排查步骤

    开启链路追踪,查看时延瀑布图。

    发现数据库查询耗时占比过高(如 2.5 秒)。

    优化 SQL 或添加缓存,将耗时降至 500ms 以内。

场景 3:并发度接近上限
  1. 现象:并发度指标持续上升至 80%(假设上限为 100)。
  2. 排查步骤

    结合业务数据确认是否因推广活动导致流量激增。

    提前在函数计算控制台调整并发度上限至 200。

    监控指标确认扩容后系统稳定运行。

四、总结与建议

  • 日志、指标、追踪需结合使用:日志定位具体错误,指标反映整体趋势,追踪分析性能瓶颈。
  • 提前配置告警规则:对错误率、并发度等关键指标设置阈值告警,避免被动响应故障。
  • 利用自动化工具:通过函数计算的日志分析、指标仪表盘等功能减少人工排查成本。

通过系统化的可观测性建设,开发者可以更高效地管理 Serverless 应用,将精力从“救火”转向业务创新。如需深入学习,可参考阿里云 Serverless 公开课:

免费观看链接