开发者学堂课程【从 0 入门函数计算:函数计算的可观测性】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/645/detail/10725
函数计算的可观测性
内容简介:
一、 函数计算
二、 指标
三、 链路追踪
四、 性能排查
一、函数计算
函数计算的可观测性基本概念主要包括 3 个部分。可观测性是通过外部表现判断系统内部状况的衡量方式,在应用开发里面可观测性可以帮助判断系统内部的健康状况,在系统出现问题的时候帮助定位问题排查问题,分析问题,系统平稳运行的时候能帮助评估风险预测可能出现的问题。
在函数计算的应用开发中,如果观察到函数的并发度持续升高,为了避免达到并发度限制触发的控,开发者就需要提前提升并发度,这个就是预测风险的能力。
可观测性就包括以下 3 个主要的方面:
Logging、mattress 和 training。logging 是日志,日志记录了函数运行的关键信息。
这些信息是离散的并且是具体的,结合错误日志和函数代码可以快速的定位问题。 mattress 是指标,是聚合的数据。通常以图表的形式来呈现错误率等核心指标,可以反映函数的运行情况与健康状况。tracing 是链路追踪,是请求级别的追踪。
在分布式系统中,可以看到请求在各个模块的延时,分析性能瓶颈。函数计算中的Logging、mattress 和 training 的功能,并通过具体的事例介绍使用方式。首先看日志,在函数计算中如何查看函数的值。在传统服务器的开发方式里面,可以将日志记录到磁盘的某个文件中,收集工具收集文件的内容。
在函数计算可以将函数日志进入到开发者提供的日志仓库里面去,也就是logstore。
在代码中直接通过 print 打印日志可以收集到。函数计算收集所有打印到 stl 的日志,并且在这些日志上传到用户的 Lost 里面。函数计算的调用的是请求维度的,每次调用一个函数。请求量非常的大,日志量非常多,区分日志必须要把id一起进入到日志当中,函数计算提供内置的日志语句,打印的每条日志前面都会带上,可以方便日志的筛选。可以登录日志服务控制台,进入刚才设置的 store 里面去查看日志,同时函数的控制台也集成了日志服务,可以在函数计算控制台上面查看日志。
控制有两种查询方式,简单查询,高级查询。简单查询中列出哪个位置,可以通过进行筛选。高级查询的是嵌入了制服的控制台,可以通过仓库语句进行查询好。
以下为 demo:
新建一个服务,首先来看自带的 print 和函数计算提供的 log 有的区别。用函数计算提供的 log 打出来的前面是带有当前的执行时间,另一个打出的就什么都没有,只有打开的内容。
二、 指标
查看指标的两种方式是可以通过函数详情来查看监控指标,也可以配置日志大盘,提供了丰富的系统指标。详情查看监控指标是可以不需要用户任何配置就能够在控制台查看的。然后这个日志大盘不仅可以看到函数计算提供监控指标,同时可以和开发者的日志关联到一起设成自定义的监控指标。
函数详情里面可以看到之前调用的内存使用情况。新建关联,创建监控大盘之后的数据,会有数据显示。
三、链路追踪
链路追踪可以分析分布式系统当中,请求在各个定义的时延。链的追踪是分布式系统排查问题的重要一环,可以分析分布式系统中请求在这个链域的时延由以下几种情况:
第一个阐述计算作为整个电路中的一环,可以看到请求在函数计算上的时延,时延包括系统启动的时间和真正的函数执行时间。可以帮助用户来分析性能瓶;
第二个是函数计算当中调用 SDK,可以默认看到 SDK 的调用实验;
第三个是开发者在函数代码中访问数据库等产品,可以手动在函数中埋点来分析这段实验。函数去调用了其他的服务,比如说去访问 IT S,用户自己买了一个点,名称叫做 custom Style。请求在函数计算整个的延时的分布图,可以帮助用户来分析性能瓶颈。
四、性能排查
详细介绍函数不断提供的问题排查实例。场景一是新版本发布之后函数错误率升高。
首先发布版本之后,要观察函数的各项指标,查看函数日志,定位错误原因,修复问题。
场景二是函数的性能差,总是使执行时间很长,甚至超时。就要开启推送的功能,在函数内部可能耗时的地方进行埋点,查看请求的瀑布图,定位执行时间长的原因,并且修复问题。
场景三用量迅速扩张,通过 lattice 图可以看到 ideas 到达限制。
观察到发作持续上升的时候,就需要来及时联系函数计算的开发同学来提升计划,以免高位业务带来不必要的影响。