值得关注的可观测性方向

简介: 【6月更文挑战第1天】讲述了软件系统的可观测性目标和几个关键工具。

可观测性并不是某一种工具所能提供的某种单一能力,它最终的目标是帮助我们随时理解软件系统的状态,无论这种状态我们之前有没有遇到过。

1、用户访问监测 RUM

当下,我们的产品和服务越来越多地以手机 App、小程序、网页等方式呈现给用户,用户使用各种客户端的时间越来越长。努力赚取用户注意力的应用越来越多,产品与服务的更新也越来越频繁。


在这样的大环境下,详细了解用户从哪里来,看了哪些页面,停留多长时间,访问速度是否够快,在哪里会遇到报错等等这些问题,不仅有利于挖掘每一个用户行为背后的真实需求,稳定并提升现存流量的转化率,还能反哺产品与服务,促进它们的双重优化,真正实现用户增长和业绩提升。


采集用户访问数据(英文缩写 RUM)也变得越来越重要,我们需要快速查看和分析各类应用的用户浏览行为及应用相关的性能指标,衡量网站及应用的的最终用户体验效果。


需要通过 RUM 来分析、解决可能会影响用户体验的前端性能问题,确定加载时间缓慢的根本原因(无论是代码、网络还是基础架构的问题);排除和解决前端错误,通过将问题的根本原因精确到代码行来解决 JavaScript 错误;甚至是分析产品使用情况,在用户会话期间自动收集和关联每个资源、错误和用户操作,按浏览器、城市或者其他自定义维度来分析你的移动和 Web 应用程序的使用情况,了解可视化的用户体验。

2、eBPF

eBPF 是一种数据包过滤技术,它是从 BPF (Berkeley Packet Filter)技术扩展而来的。


知道操作系统分为用户空间和内核空间,我们编写的应用程序通常是在用户空间中运行的。但是用户空间应用程序能做的事情很有限,需要通过系统调用接口来请求内核帮它做一些事情。例如,每当用户空间中的应用程序需要连接到硬件时,它都是通过调用内核空间中的 API 来实现的。


eBPF 的作用,就是允许你编写在操作系统内核中运行的自定义代码。你不再需要编写新的内核模块,只要根据需求动态加载和卸载 eBPF 程序就可以了。允许在操作系统中运行沙盒程序之后,应用程序开发人员可以通过 eBPF 程序向操作系统添加额外的功能。然后,操作系统会保证安全性和执行效率,就像借助即时 (JIT,Just in Time) 编译器和验证引擎一样进行本地编译。

3、Profiling

rofiling 是一种分析程序复杂性的动态方法,例如,它可以分析 CPU 利用率、函数调用的频率和持续时间。这种方法可以帮助我们进一步地分析应用程序的性能,准确定位程序中资源消耗最多的地方。


通过 Profiling,我们可以分析一段时间内的系统资源调用情况,包括不同类型下代码方法级别的 CPU、内存或 IO 的使用情况,从而定位、调试和修复与性能相关的问题,将 APM 中的每个分布式跟踪与执行请求的方法和线程的性能联系起来,来确定缓慢请求的根本原因。这样,我们能够找到导致高延迟的方法,并通过优化解决服务瓶颈,改善用户体验。


Profiling 也有不少不错的开源工具,比如 Pyroscope,它是用 Go 语言实现的。Pyroscope 提供了丰富的分析的功能,客户端提供 Go、Java、Python、Ruby、PHP、.NET 等多种语言的支持。

4、OpenTelemetry

OpenTelemetry,这是一套可观测性的工具和框架,它可以帮助你实现不被第三方锁定的可观测性。


自 OpenTelemetry 推出以来,也有越来越多的厂商开始关注它并作出一些贡献,例如, opentelemetry-collector-contrib 。这里的 OpenTelemetry Collector 组件库。当然,厂商的关注重点还集中在如何将观测数据更加便利地导入到自身的服务中,但这也侧面说明了 OpenTelemetry 的普遍接受度。


相关文章
|
2月前
|
监控 Go 数据处理
iLogtail 进化论:重塑可观测采集的技术边界
iLogtail 作为一款开创性的轻量级日志采集器,历经 13 载风雨,始终致力于高效地从多元化的数据源中萃取、处理可观测信息,并无缝传输至阿里云日志服务或各类日志分析平台。今年,适逢 iLogtail 开源两周年的里程碑时刻,我们将回顾 iLogtail 的技术演进之路,领略其不断突破边界、引领可观测采集未来的创新力量。
124 14
|
5月前
|
算法 Java 计算机视觉
图像处理之计算连通区域的角度方向
图像处理之计算连通区域的角度方向
27 0
|
6月前
|
前端开发 JavaScript Java
B/S方向
B/S方向
41 4
|
运维 Kubernetes Cloud Native
[大厂实践] 边缘网络的可观测性
[大厂实践] 边缘网络的可观测性
82 0
|
存储 监控 架构师
【数据网格架构】什么是数据网格——以及如何不将其网格化
【数据网格架构】什么是数据网格——以及如何不将其网格化
【数据网格架构】什么是数据网格——以及如何不将其网格化
3. 模型的方向问题
3. 模型的方向问题
100 0
|
开发者
使用服务网格可观测性为应用服务保驾护航(二)|学习笔记
快速学习使用服务网格可观测性为应用服务保驾护航(二)
106 0
使用服务网格可观测性为应用服务保驾护航(二)|学习笔记
|
自然语言处理 运维 监控
使用服务网格可观测性为应用服务保驾护航(一)|学习笔记
快速学习使用服务网格可观测性为应用服务保驾护航(一)
119 0
使用服务网格可观测性为应用服务保驾护航(一)|学习笔记
|
机器学习/深度学习 算法 数据挖掘
深度聚类近来比较火的方向你知道吗?
聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。
301 0
深度聚类近来比较火的方向你知道吗?
|
消息中间件 监控 Kubernetes
k8s的可观测性
k8s的可观测性