《2021 阿里云可观测技术峰会演讲实录合辑(上)》——五、 阿里云Serverless可观测实践【下】

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 《2021 阿里云可观测技术峰会演讲实录合辑(上)》——五、 阿里云Serverless可观测实践【下】

接上篇:

https://developer.aliyun.com/article/1222679?spm=a2c6h.13148508.setting.28.4f394f0em1x0Jq

2. 函数计算内置可观测能力


image.png


上图展示了函数计算所有的可观测能力,由四大部分组成,分别是指标、日志、调用链、APM。


指标:与云监控集成,在函数计算的监控中心上提供云监控的指标。为了兼容SLS用户与Grafana用户的体验,也提供了SLS Dashboard与Grafana Dashboard的解决方案

日志:与日志服务无缝集成,提供了函数日志、请求日志、实例日志等

调用链:与阿里云的链路追踪产品进行了无缝集成,函数计算会默认上报系统内部关键链路的时间。并且将调用链的上下文信息传给用户的runtime,用户可以在函数里基于Jaeger或OpenTelemetry进行自定义埋点

APM:与阿里云的AMS产品集成,用户可查看runtime指标,比如JVM的GC数据、MySQL的连接情况等。考虑客户更喜欢使用三方SaaS的可观测产品,我们也对此提供了集成方案。


image.png


函数计算主要通过数据采集、数据存储、数据处理和数据展示为用户呈现可观测能力。用户的业务代码在函数计算的执行引擎中运行,执行引擎会根据用户设置的函数内存创建不同规格的函数实例,用户函数最终在不同的函数实例中执行。执行引擎为异构的,底层支持ECS与神龙裸金属执行环境,对应的函数实例分别是Docker Container与安全容器。

 

执行引擎的内部实现了agent,负责函数实例生命周期的管理、函数实例健康状态的监测、观测数据的收集处理与上报。


数据处理侧具有三个特点

无侵入:观测数据采集不占用函数实例的CPU内存资源,因为agent是部署在函数实例之外,占用的是函数计算系统的资源。用户无需关心如何处理的,也不占用用户资源,用户无感知,对函数实例也没有侵入

支持异构的执行环境:在不同类型的执行引擎中,日志指标调用链的处理会有一定区别,我们也对这些区别进行了适配,分别适配了ECS执行环境与裸金属环境

支持多租:ECS环境不存在多租的问题,但神龙裸金属的执行环境里,用户是安全容器级别的隔离,执行环境里会有不同用户的函数实例,同一个agent需要支持不同用户实例的日志、指标与调用链的收集。

 

我们最终的目标是为了提供开箱即用的可观测平台,数据存储到用户对应的云产品后,需要提供处理数据平台。我们基于Serverless架构实现了数据处理平台,前端需要查看数据时,由 Serverless架构的Web API从用户云产品里获取原始数据,并进行聚合、格式转化后传递给控制台。控制台上有三个函数,分别对指标、日志与调用链进行处理。

 

经过层层处理后,最终实现了开箱即用的完整统一的可观测平台。平台上罗列了非常丰富的、多层次、多维度的指标上,有集群/服务/函数指标、请求实例级别的指标、计量指标、函数级别的日志、实例级别日志、请求日志、实时日志等,可以实时查看tail日志,也可以根据grab对日志进行搜索。

 

此外,函数计算会自动上报系统内部的调用链,比如冷启动时间、调度时间,可以串联上游函数计算,识别开源调用链的header,如果用户将上游的header传进函数计算即可基于用户的调用链来创建子调用链;也可以串联下游函数字段,将调用链的上下文传给用户的runtime并创建自定义的调用链,比如创建访问数据库的调用链或写本地数据的调用链等。


image.png


每个执行引擎里有agent负责实例生命周期的管理、观测数据的采集与上报。每个agent里都有一个container manager负责管理函数实例生命周期。创建新的函数实例时,container manager会记录一份函数实例的元数据,并分别启动指标采集、日志采集与调链采集的协程。每个函数实例都有自己的协程,各个函数实例的采集互不影响。实例销毁时,观测协程也会随之关闭

 

以上设计使得数据采集具有如下几个特点:

 

采集函数调用产生的Metrics、Logs、Traces

不侵入用户runtime,不占用用户资源

支持多租,能够并发收集不同用户的数据

支持不同执行环境

数据采集随实例生命周期启停。

 

指标采集主要是请求级别的指标与实例级别的指标。其中请求级别指标包括请求执行时间、错误类型、调用类型、资源类型等;实例级别指标包括实例CPU、内存、网络流量等。

 

日志采集上,收集函数输出到标准输出的日志,包括函数日志和实例日志。调用链基于 OpenTracing 的协议自动上报系统关键链路的耗时、冷启动耗时、异步调用的队列积压耗时等。


image.png


用户登录控制台查看数据,前端收到了用户查看数据的请求后,需要由Web API为前端返回数据。Web API负责从用户的云产品里获取原始数据,再到业务逻辑里处理这些数据,然后将它以与前端约定的格式返回给前端。我们将Web API的处理逻辑移至函数计算上,充分享受了Serverless架构的红利。

 

此外,架构可实现毫秒级扩容,可以轻松应对突发流量。业务开发者只需关注业务逻辑的实现,无需关注底层用了多少台计算资源,也无需维护服务器,开发运维效率更高了。

 

为了保障服务的可用性与可靠性,我们在国内外多个区域进行了部署,尽可能避免跨洋网络访问慢的问题。


image.png


最终,我们为用户提供了开箱即用的统一可观测平台,提供了非常丰富的函数级别、服务级别、集群级别、请求级别以及实例级别的指标。指标的聚合粒度有秒级、分钟级、小时级。平台尽可能地将函数计算内部的指标暴露给客户,让客户更信任底层的执行环境。还提供了请求粒度的监控、请求的调用结果、请求的执行时间、内存使用量、日志、调用链等。

 

在请求调用链里,可以看到函数计算系统上报的调用链、调度的时间、进行调度计算资源的时间、系统冷启动的时间、下载代码/下载自定义镜像的时间、启动执行环境的时间以及真正执行用户代码invocation的时间等,以上指标都由系统自动上报,用户无需进行任何操作,开箱即用。


image.png


其次,平台兼容了传统开发者的开发习惯,提供了实例级别的监控、实例级别的指标,可以查看CPU内存、网络流量、请求数等;也可以查看函数维度的聚合,比如函数的CPU情况、实例数量、每个实例的指标,提供了实例级别的日志,还可以登录到实例里,让用户对自己的执行环境更有信心。

 

最后,数据开放,协议开源部分。FC将所有观测产品都存入用户的云产品里,实现了数据开放;链路追踪遵循开源的OpenTracing协议,可以串联上游,识别上游开源的协议头,也可以连接下游,将trace的上下文传入用户runtime。用户可以基于当前调用链根据Jeager或OpenTelemetry进行自定义埋点。

 

上图右下角为MNS Trigger的示例。上游用户记录了Publish Message与在MNS队列里等待的时间。到了函数计算后,函数计算自动记录了调度时间、在函数计算的异步消息队列里堆积的时间以及冷启动的时间。然后将调用链传给下游,用户埋点了自定义的调用链,即可看到完整的端到端的调用链。此时如果有一个请求端到端的时间很长,通过调用链即可明确时间花在哪里,能够进行更有针对性的排查与定位。

 

下文将通过两个demo来展示可观测能力。


Demo1:函数错误问题定位


image.png


从监控大盘可见函数有41个错误,点击“41”可查看错误列表页面,如下图。


image.png


先查看服务级别的错误,再查看函数级别的错误数,最后即可定位到出错的请求。


image.png


点击详细错误可以查看其请求日志刷新。处理过程从指标下钻到请求,再到日志,最终实现快速问题定位。

Demo2:冷启动耗时分析


image.png


从监控大盘发现某请求执行时间特别长,但业务逻辑并不复杂,预计为百毫秒级别,而端到端的请求却执行了7秒。


image.png


点击查看其调用链,发现函数执行时间只有170毫秒,但遇到了冷启动。其中下载代码花费将近3秒,函数实例启动花费4秒多,最终总共花费7秒。

 

可以先看能否缩小代码包,减少下载代码的时间。另外,优化启动时的逻辑,减少函数启动的时间。如果对冷启动时间特别敏感,也可以使用预留实例来完全规避冷启动。平台还给出了冷启动优化的最佳实践,用户可以基于最佳实践进行自定义配置。

 

1. 函数计算对开源和可观测能力的探索


image.png


大多数可观测服务提供商的SDK都是后台定时采集数据,批量发送。而FC实例在请求执行完成后会立即冻结实例,下次请求来时才解冻。如果发送时间刚好处于实例冻结时期,则会导致数据发送失败。

 

FC Service代表函数计算系统,这里主要是函数的执行引擎。Function Runtime是函数实例中的runtime。实例启动之后会先调用Initialize接口,用户可以在其中做自定义初始化操作,比如建立数据库、初始化全局配置、启动ARMS的采集,初始化结束后执行Invoke逻辑,Invoke 结束后系统会立即冻结函数实例。如果此时后台的Flash interval发送观测数据,则必定发送失败;如果后台的观测数据发送时间刚好落在实例的活跃时间内,则可发送成功。

 

不做任何处理的情况下,运气好可发送成功,运气不好则发送失败。函数实例的生命周期由函数计算系统控制,用户不可见,因此用户无法预知这些观测数据发送是否能成功,这会导致数据的缺失与可观测功能不稳定。

 

为了解决上述问题,函数计算扩展了编程模型,允许用户监听实例的生命周期,用户可以自己实现冻结和解冻的函数逻辑。在Freeze前会告诉用户将执行Prefreeze代码,可以在Prefreeze里Flush观测数据;在回收销毁函数实例前,会执行用户的Prestop函数,用户可以在Prestop里关闭连接,停止数据采集。基于以上技术,可观测数据即可稳定发送。


image.png


也是基于以上技术,我们内部得以与ARMS APM进行集成,也提供了集成三方SaaS厂商如NewRelic的解决方案。

 

上图列出了FC目前已经应集成或已经提供解决方案的产品与技术,我们也将在此方向进行持续探索。

 

今天的分享就到这里,谢谢大家。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
1月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
1月前
|
人工智能 运维 Cloud Native
阿里云Serverless计算产品入选Gartner®报告「领导者」象限!
近日,Gartner® 发布了 2025 年度全球《云原生应用平台魔力象限》报告,阿里云凭借 Serverless 应用引擎 SAE(以下简称 SAE)和函数计算 FC,成为亚太地区唯一入选「领导者象限」的科技公司。
187 16
|
6天前
|
消息中间件 存储 运维
嘉银科技基于阿里云 Kafka Serverless 提升业务弹性能力,节省成本超过 20%
云消息队列 Kafka 版 Serverless 系列凭借其秒级弹性扩展、按需付费、轻运维的优势,助力嘉银科技业务系统实现灵活扩缩容,在业务效率和成本优化上持续取得突破,保证服务的敏捷性和稳定性,并节省超过 20% 的成本。
|
1月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
28天前
|
DataWorks 数据挖掘 Serverless
阿里云EMR Serverless StarRocks 内容合集
阿里云 EMR StarRocks 提供存算分离架构,支持实时湖仓分析,适用于多种 OLAP 场景。结合 Paimon 与 Flink,助力企业高效处理海量数据,广泛应用于游戏、教育、生活服务等领域,显著提升数据分析效率与业务响应速度。
121 0
|
2月前
|
消息中间件 人工智能 Serverless
喜报!阿里云首批通过 Serverless 云服务能力要求 - 消息队列评估
2025可信云大会发布Serverless云服务能力评估结果,阿里云作为首批入选单位,凭借ApsaraMQ for RocketMQ和Kafka展现出卓越能力。ApsaraMQ全系产品已完成Serverless化升级,具备全场景覆盖、低成本、高稳定、高效率及生态集成优势,广泛应用于电商、游戏、出行、旅游等多个行业,助力企业实现降本增效。未来将持续推动高弹性、智能化、免运维的消息服务创新。
|
5月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
507 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
3月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
203 0

相关产品

  • 函数计算