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

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: 本文主要分为三个部分:概述中介绍可观测性的基本概念,主要包括 Logging、Metrics、Tracing 三个方面;然后详细介绍函数计算上的 Logging、Metrics、Tracing;最后以几个常见场景为例,介绍在函数计算中如何快速定位问题并解决问题。

头图.jpg

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

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

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

概述

可观测性是什么呢?维基百科中这样说:可观测性是通过外部表现判断系统内部状态的衡量方式。

在应用开发中,可观测性帮助我们判断系统内部的健康状况。在系统出现问题时,帮助我们定位问题、排查问题、分析问题;在系统平稳运行时,帮助我们评估风险,预测可能出现的问题。评估风险类似于天气预报,预测到明天下雨,那出门就要带伞。在函数计算的应用开发中,如果观察到函数的并发度持续升高,很可能是业务推广团队的努力工作导致业务规模迅速扩张,为了避免达到并发度限制触发流控,开发者就需要提前提升并发度。

1.PNG

可观测性包括三个方面: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. 链路追踪

2.png
(请求在各个链路的延时瀑布图)

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

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

问题排查

函数计算提供了很多可观测性相关的功能,那究竟怎样定位问题呢?以几个场景为例。

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

首先发布版本后要观察函数各项指标,一旦错误率升高要立即回滚避免故障,查看函数日志定位错误原因,修复问题再次上线。

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

开启 tracing 功能,在函数内部可能耗时的地方进行埋点,查看请求的瀑布图,定位执行时间长的原因,修复问题。

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

通过 metrics 查看当前并发度,观察到并发度持续上升时,及时联系函数计算开发同学,提升并发度。

课程推荐

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

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

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

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
5月前
|
消息中间件 运维 Serverless
函数计算产品使用问题之如何部署Stable Diffusion Serverless API
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
机器学习/深度学习 监控 Serverless
无服务器架构(Serverless)
无服务器架构(Serverless)
116 4
|
5月前
|
运维 前端开发 Serverless
Serverless痛点解决问题之将 WordPress 工程部署到函数计算中如何解决
Serverless痛点解决问题之将 WordPress 工程部署到函数计算中如何解决
55 1
|
5月前
|
存储 运维 Serverless
Serverless 支撑赛事转播问题之利用函数计算实现图片处理的实时性和成本节约如何解决
Serverless 支撑赛事转播问题之利用函数计算实现图片处理的实时性和成本节约如何解决
|
5月前
|
消息中间件 运维 Serverless
Serverless 支撑赛事转播问题之利用函数计算处理视频直播截帧服务如何解决
Serverless 支撑赛事转播问题之利用函数计算处理视频直播截帧服务如何解决
|
5月前
|
JavaScript Serverless
Serverless 架构问题之Midway FaaS开源框架的设计如何解决
Serverless 架构问题之Midway FaaS开源框架的设计如何解决
44 0
|
5月前
|
Serverless 数据安全/隐私保护 开发者
Serverless 架构问题之阿里云函数计算在事件生态层面如何解决
Serverless 架构问题之阿里云函数计算在事件生态层面如何解决
56 0
|
5月前
|
Serverless 测试技术 Go
Serverless 函数计算问题之无法压测如何解决
高德在函数计算压测中发现单实例TPS达300时延迟剧增,通过登录实例使用profiling工具定位到性能瓶颈并完成优化。在Go的custom runtime中执行`go tool pprof`需先确保Go环境安装,再运行命令进行CPU分析。产生的分析文件可通过ossutil64上传至OSS存储,以便进一步分析处理。[详细解答链接](https://developer.aliyun.com/ask/666283)。
56 0
|
5月前
|
监控 Serverless API
Serverless 函数计算问题之环境变量不生效如何解决
在函数实例详情页面登录实例的方法是在“监控指标-实例指标”区域点击特定实例ID进入详情页,之后在右上方找到并点击“登录实例”按钮即可开始操作。使用Golang SDK调用`InstanceExec` API执行命令并通过回调处理输出的具体方式为:首先构建`InstanceExecInput`对象设置服务名、函数名、实例ID及命令
55 0
|
9天前
|
存储 人工智能 Serverless
7分钟玩转 AI 应用,函数计算一键部署 AI 生图大模型
人工智能生成图像(AI 生图)的领域中,Stable Diffusion WebUI 以其强大的算法和稳定的输出质量而闻名。它能够快速地从文本描述中生成高质量的图像,为用户提供了一个直观且高效的创作平台。而 ComfyUI 则以其用户友好的界面和高度定制化的选项所受到欢迎。ComfyUI 的灵活性和直观性使得即使是没有技术背景的用户也能轻松上手。本次技术解决方案通过函数计算一键部署热门 AI 生图大模型,凭借其按量付费、卓越弹性、快速交付能力的特点,完美实现低成本,免运维。

相关产品

  • 函数计算