乐趣区

关于云原生-cloud-native:从零入门-Serverless-函数计算的可观测性

作者 | 夏莞 阿里巴巴函数计算团队

本文整顿自 《Serverless 技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。

导读: 本文次要分为三个局部:概述中介绍可观测性的基本概念,次要包含 Logging、Metrics、Tracing 三个方面;而后具体介绍函数计算上的 Logging、Metrics、Tracing;最初以几个常见场景为例,介绍在函数计算中如何疾速定位问题并解决问题。

概述

可观测性是什么呢?维基百科中这样说:可观测性是通过内部体现判断零碎外部状态的掂量形式。

在利用开发中,可观测性帮忙咱们判断零碎外部的健康状况。在零碎呈现问题时,帮忙咱们定位问题、排查问题、剖析问题;在零碎安稳运行时,帮忙咱们评估危险,预测可能呈现的问题。评估危险相似于天气预报,预测到今天下雨,那出门就要带伞。在函数计算的利用开发中,如果察看到函数的并发度继续升高,很可能是业务推广团队的致力工作导致业务规模迅速扩张,为了防止达到并发度限度触发流控,开发者就须要提前晋升并发度。

可观测性包含三个方面:Logging、Metrics、Tracing

  • Logging 是日志,日志记录了函数运行中的要害信息,这些信息是离散且具体的,联合谬误日志与函数代码能够迅速定位问题。
  • Metrics 是指标,是聚合的数据,通常以图表的模式展示。图表中的 tps、错误率等外围指标,能够反映函数的运行状况与健康状况。
  • Tracing 是链路追踪,是申请级别的追踪,在分布式系统中能够看到申请在各个模块的延时、剖析性能瓶颈。

函数计算中的 Logging/Metrics/Tracing

1. 日志

在函数计算中如何查看函数日志呢?在传统服务器开发方式中,能够将日志记录到磁盘中的某个文件中,再通过日志收集工具收集文件的内容;而在函数计算中,开发者不须要保护服务器了,那如何收集代码里打印的日志呢?

1)配置日志

函数计算与日志服务无缝集成,能够将函数日志记录到开发者提供的日志仓库(Logstore)中。日志是服务配置中的一项,为服务配置 LogProject 和 Logstore,同一服务下所有函数通过 stdout 打印的日志,都会收集到对应的 Logstore 中。

2)记录日志

那日志怎么打呢?在代码中间接通过 console.log/print 打印的日志能够收集到吗?答案是能够的。各个开发语言提供的打印日志的库都将日志打印到 stdout,比方 node.js 的 console.log()、python 的 print()、golang 的 fmt.Println() 等。函数计算收集所有打印到 stdout 的日志并将其上传到 Logstore 中。

函数计算的调用是申请维度的,每次调用对应一个申请,也就对应一个 requestID。当申请量很大时,会有海量日志,如何辨别哪些日志属于哪个申请呢?这就须要把 requestID 一起记录到日志中。函数计算提供内置的日志语句,打印的每条日志前都会带上申请 ID,不便日志的筛选。

3)查看日志

当函数日志被收集到日志服务的 Logstore 中,能够登录日志服务控制台查看日志。

同时,函数计算控制台也集成了日志服务,能够在函数计算管制台上查看日志。函数计算控制台有两种查问形式:

  • 简略查问 :简略查问中列出每个 requestID 对应的日志,能够通过 requestID 对日志进行筛选;
  • 高级查问 :高级查问嵌入了日志服务,能够通过 SQL 语句进行查问。

点击链接观看 Demo 演示:https://developer.aliyun.com/lesson_2024_18996

2. 指标

查看指标的形式:

  • 函数详情查看监控指标:FC 提供丰盛的零碎指标,这些指标能够不必任何配置,就能够在函数计算控制台查看。
  • 配置日志大盘: 日志大盘不仅能够看到函数计算提供的监控指标,而且能够与开发者日志关联,生成自定义的监控指标。

3. 链路追踪


(申请在各个链路的延时瀑布图)

链路追踪是分布式系统排查问题的重要一环,链路追踪能够剖析分布式系统中申请在各个链路的时延。有以下几种状况:

  • 函数计算作为整个链路中的一环,能够看到申请在函数计算上的时延,时延包含系统启动的工夫和申请真正的执行工夫,帮忙用户剖析性能瓶颈。
  • 函数计算中调用 FC SDK,能够默认看到 SDK API 的调用时延。
  • 开发者在函数代码中拜访数据库等产品,能够手动在函数中埋点剖析这段时延。

问题排查

函数计算提供了很多可观测性相干的性能,那到底怎么定位问题呢?以几个场景为例。

场景一:新版本公布后,函数错误率升高

首先公布版本后要察看函数各项指标,一旦错误率升高要立刻回滚防止故障,查看函数日志定位谬误起因,修复问题再次上线。

场景二:函数性能差,总是执行工夫很长,甚至超时

开启 tracing 性能,在函数外部可能耗时的中央进行埋点,查看申请的瀑布图,定位执行工夫长的起因,修复问题。

场景三:业务量迅速扩张,并发度行将达到并发度限度

通过 metrics 查看以后并发度,察看到并发度持续上升时,及时分割函数计算开发同学,晋升并发度。

课程举荐

为了更多开发者可能享受到 Serverless 带来的红利,这一次,咱们集结了 10+ 位阿里巴巴 Serverless 畛域技术专家,打造出最适宜开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。

点击即可收费观看课程:https://developer.aliyun.com/learning/roadmap/serverless

Serverless 公众号,公布 Serverless 技术最新资讯,会集 Serverless 技术最全内容,关注 Serverless 趋势,更关注你落地实际中的遇到的困惑和问题。

退出移动版