应用监控eBPF 版调研

参考:

https://www.toutiao.com/article/7327353509735596559/?app=news_article×tamp=1717488680&use_new_style=1&req_id=20240604161119838096AAE4AD4F44788E&group_id=7327353509735596559&wxshare_count=1&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_android&utm_campaign=client_share&share_token=b4685197-c1c1-43b6-ae92-0e1d9d77d29a&source=m_redirect&wid=1717555127344

应用实时监控服务(ARMS)-阿里云帮助中心 ​

1.概述

阿里云应用监控 eBPF 版是一套针对K8s集群的一站式可观测性产品,为K8s集群安装应用监控 eBPF 版组件后,即可查看基于K8s集群下的指标、应用链路、日志和事件,为IT开发运维人员提供整体的可观测性方案。

eBPF(extended Berkeley Packet Filter)是一种在Linux内核中运行的技术,它允许用户编写并在内核中运行小型程序,以实现高效的数据包过滤、监控和分析。eBPF程序可以用于实时数据分析、性能监控、安全审计等方面。

在数据采集方面,eBPF可以用于实时监控系统的网络流量、性能指标、进程活动等。通过编写适当的eBPF程序,可以实现对特定数据的捕获、分析和记录。

2.特性

代码无侵入:通过旁路技术,不需要对代码进行埋点即可获取到丰富的网络性能数据。

语言无关:在内核层进行网络协议解析,支持任意语言,任意框架。

高性能:基于eBPF技术,能以极低的消耗获取丰富的网络性能数据。

资源关联:通过网络拓扑,资源拓扑展示相关资源的关联。

数据多样:支持可观测的各种类型数据(监控指标、链路、日志和事件)。

整体性:通过控制台的场景设计,关联起架构感知拓扑、Prometheus监控、告警配置。

3.功能说明

3.1.应用监控

3.1.1.应用概述

支持对各种类型数据进行可视化展示。应用的请求数、错误数、平均耗时、实例数、CPU使用率、内存使用量、请求数的服务排行、错误数排行和平均耗时服务排行。

3.1.2.应用拓扑

通过监控分析网络请求,自动解析网络协议,构建网络拓扑便于查看服务依赖状态、关联网络性能、错慢请求明细。

3.1.3.提供、依赖服务

应用提供的接口的调用详情。其中接口概述可以查看对应接口的调用详情,包括请求数、错误数、平均耗时,同时展示HTTP状态统计和慢调用;调用链,可以查看对应接口的Span调用详情。

说明:接口的Span调用详情通常指的是在分布式系统中使用分布式追踪工具(如Jaeger、Zipkin等)记录和展示接口调用链的详细信息。这些工具通过在代码中插入特定的Span(跨度)来跟踪请求在不同服务之间的传递和处理过程。

具体来说,当一个请求进入系统时,会创建一个根Span,然后在处理过程中,每个服务或组件都会创建自己的Span,并在Span中记录相关信息,如开始时间、结束时间、耗时、标签、日志等。这些Span会形成一个调用链,展示了请求在系统中的流转路径和耗时情况。

通过查看接口的Span调用详情,可以了解每个接口调用的耗时、调用链路、错误信息等,帮助分析系统性能问题、排查故障、优化服务调用顺序等。

3.1.4.调用链分析

显示整体调用情况(调用链采样率为5%),包括调用次数、HTTP错误数和耗时百分位。

3.1.5.数据库分析

支持查看目标数据库的名称、类型、SQL语句、请求数、慢请求数、平均耗时,以及对应的时序曲线和分布情况。

3.1.5.实例监控

服务监控:CPU使用量、内存使用量、请求数、平均耗时和错误数

网络监控:应用接收的包数、TCP RTT、重传次数、TCP Drop次数和发送的包数;

容器监控查看容器视角的CPU、内存、Disk(磁盘)、Load(负载)、网络流量和网络数据包的各项指标。

3.1.6.持续剖析

可以有效发现应用程序中因为CPU导致的瓶颈问题,并且按照方法名称、类名称和行号进行细分统计,最终协助开发者优化程序、降低延迟、增加吞吐、节约成本。

当前持续剖析的能力是基于eBPF实现的,因为无侵入的特点,针对Go等有Debug符号信息的语言,Profiling的数据能够显示具体的函数调用,如果遇到unknown的函数,表示当前函数无法在内核中找到对应的符号表信息。

Self列表示方法在自身的调用栈中所消耗的时间或资源,不包括其子方法调用所消耗的时间或资源。可以用于识别哪些方法在自身内部花费了大量的时间或资源。

Total列包含方法自身消耗的时间或资源,以及其所有子方法调用所消耗的时间或资源。可以帮助了解整个方法调用栈中哪些方法贡献了最多的时间或资源。

如需排查具体的热点代码逻辑,可以通过重点关注Self列或直接查看右侧火焰图中底部的较宽火苗从中定位到高耗时的业务方法,较宽火苗是引发上层耗时高的根源,一般是系统性能的瓶颈所在,可以重点关注。

3.2.告警监控

提供开箱即用的告警模板,可以根据预置的告警模板创建告警规则,也可以自定义针对特定k8s集群的告警规则。当告警规则被触发时,系统的通知策略会以指定的告警方式向联系人发送告警信息,以提醒告警联系人采取必要的问题解决措施。

3.2.1.阈值检测

根据需求选择对应的告警应用、指标类型和筛选条件设置告警触发模式(单/多条件)、告警条件、通知策略等可以制定针对特定的告警规则。当告警规则被触发时,系统会以指定的通知方式向告警联系人或钉群发送告警信息,以提醒采取必要的解决措施。

支持jvm、定时任务、异常监控、提供/依赖服务统计、主机监控、线程池、http状态码异常、数据库多种指标类型监控。如下http状态码异常的指标描述:

支持建议阈值功能可以根据选择的应用、接口和告警指标,通过智能算法对该指标的历史数据进行分析,推荐较为合理的静态阈值。该功能还支持实时生成指标和阈值的对比图,方便调节阈值。

3.2.2.区间检测

如果需要检测的指标在正常状态下起伏不定(例如RT和QPS),不同的时间段需要适配的告警阈值不同,那么您可以使用区间检测功能,通过动态阈值对指标数据进行异常检测。当数据点的异常突变超出预设的上下边界时,系统将生成区间异常检测事件,这种检测主要用于监控趋势稳定的数据或指标。

示例:某工作网站的访问量在白天(例如10:00~18:00)访问量低于1000是异常的,但在夜间(例如22:00~06:00)访问量超过1000可能是被攻击了。在这种场景下,指标的正常水位会随着时间变化而不断变化。 如果配置一个固定阈值,例如低于1000就告警,那白天访问异常时可以正常收到告警通知,但夜间如果被攻击则无法及时收到告警通知;如果使用区间检测功能,就可以智能识别正常水位,自动更新阈值区间。

应用场景监测服务的资源使用和响应性能。当某个服务出现异常,可以迅速定位问题,从而使管理员能够快速定位及时调整资源分配避免潜在的系统崩溃优化程序性能确保整个系统的稳定运行。

3.2.3.管理告警规则

可以对告警规则执行启动、停止、编辑、删除、查看告警详情等操作,还可以针对指定告警规则发送测试告警验证告警规则是否生效。

4.运行环境要求和限制

版本:Kubernetes v1.20及以上版本

运行环境:阿里云ACK集群(ACK Serverless集群暂不支持)、其他K8s集群。CentOS集群暂不支持。

支持的网络协议:HTTP1.1、MySQL、Redis、Kafka、DNS

服务器:

环境

要求

架构

x86-64

内存

建议≥4 GB,至少预留300 MB。

CPU

建议≥2 Core,至少预留0.3 Core。

内核版本

≥4.9

操作系统发行版本

Alibaba Cloud Linux 2

Alibaba Cloud Linux 3

其他操作系统:

执行以下命令,查询当前操作系统是否支持。

cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF

如果输出CONFIG_DEBUG_INFO_BTF=y,则表示支持。

如果输出其他内容,则表示不支持。

5.协议解析框架

基于 eBPF 来进行应用监控必须进行协议解析。

5.1.传统框架

主要流程为:数据采集、数据传递、协议解析。

首先eBPF从内核态中抓取到流量事件,包括控制事件如connect、close 等;数据事件如 read、write 等。采用 perf buffer(一种特殊 eBPF Map)来做数据传递,将事件从内核态传递至用户态进行协议解析。

这种方案导致CPU、内存占用过高,在高流量场景下错误率较高,主要体现如下:

高内存占用:数据采集中无法筛选协议,导致大量无关数据占满 perf buffer,引发内存过高。

事件丢失风险:高 QPS 导致 perf buffer 迅速填满,处理不及时会丢失事件,特别是控制层事件可能因数据层事件过多而丢失。

解析效率低:需要遍历尝试所有支持协议才能找到正确的协议,导致大量无效解析,增加 CPU 负担。

5.2.高效框架

基于传统框架中存在的问题,提出一种高效的协议解析框架,并在阿里云应用实时监控服务 ARMS “应用监控 eBPF 版”中正式发布。主要流程为:数据采集、协议推断、事件分流、协议解析(包含连接维护、数据分帧、协议解析、请求-响应匹配)。

首先eBPF从内核态中抓取到流量事件,根据协议帧头进行协议推断,可以初步判断是否是支持的协议。如果判断为“是”,后续才传递至用户态进一步解析,否则不处理。

然后根据事件类型进行分流。如控制事件放到control events perf buffer 中,数据事件放到data event perf buffer。

在用户态中,控制事件将用于连接维护。如长连接中,连接元数据信息总是相同的,不必每次都放入 perf buffer 中,只用传递连接 ID 可进一步降低网络带宽。data event perf buffer可以理解为数据流,需要进行分帧处理,从整个数据流中分解出每一帧的数据是进行协议解析的前提。

分解出单独的帧数据后将通过初步推断的协议类型去匹配解析器进一步解析。解析出请求与响应后,需要去匹配请求和响应,完成一个完成的可观测记录,即 record,后续也将通过 record 来生成可观测中的 Span。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/739948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7.6安装RabbitMQ

前言:因为RabbitMQ是ERlang语言编写所以要先安装ERlang再安装RabbitMQ 安装ERlang 借鉴前辈原文地址:https://www.cnblogs.com/fengyumeng/p/11133924.html 第一步:安装依赖 yum -y install gcc glibc-devel make ncurses-devel open…

PDF秒变翻页式电子画册

​在当今数字化时代,将PDF文档转换成翻页式电子画册是一种提升作品展示效果和传播效率的有效方式。以下是将PDF秒变翻页式电子画册的攻略,帮助您轻松掌握数字创作技巧。 首先,选择一个合适的制作工具是关键。目前市场上有多种在线平台和软件可…

HTML5休闲小游戏《猫猫超市》源码,引流、刷广告利器

HTML5休闲小游戏《猫猫超市》源码,直接把源码上传到服务器就能使用了! 下载链接:https://www.huzhan.com/code/goods467910.html

k8s如何使用 HPA 实现自动扩展

使用Horizontal Pod Autoscaler (HPA) 实验目标: 学习如何使用 HPA 实现自动扩展。 实验步骤: 创建一个 Deployment,并设置 CPU 或内存的资源请求。创建一个 HPA,设置扩展策略。生成负载,观察 HPA 如何自动扩展 Pod…

【Oracle安装】Linux安装Oracle内存不够怎么都装不上,卡在46%、60%、36%;内存不足解决办法,疑难杂症

一、问题描述 1.oracle 安装不报错,但就是无法安装成功,卡住 总是中途卡住,不一定卡在哪儿,也许是36%、46%、60%等等 它也不报错,什么都不说,或者过一会儿服务器自己把oracle的安装进程给杀了&#xff08…

echo 反引号 tail 重定向符

echo 作用:在命令行内输出指定内容,类似与 print()语句。 语法:echo 输出内容 当输出内容复杂时,可以使用""包围。 反引号 被 包围的内容,会被当做命令执行,而非普通字符。 tail 作用&…

2024中国·淮安高端人才精英赛北京分站赛首战告捷

“诚意满淮,创赢未来”!6月20-21日,2024中国淮安高端人才精英赛首场分站赛在北京产业创新中心顺利举办。淮安市科技局党组书记、局长胡长青,淮安市委组织部人才处处长沈雪娇,淮安经开区党工委委员、管委会副主任、科技…

【2024德国工作】蓝卡攻略:人在中国,怎么去德国工作?

德国工作签证解析 外国人只要拥有符合德国劳动法的劳动合同,工资符合当地标准(非紧缺专业,税前工资一般需达到49600欧元),并且具备一定的外语能力,就可以申请德国境内工作签证!不申请者还需要有…

Perplexily首席执行官Aravind Srinivas斯里尼·瓦斯回应抄袭和侵权指控

Perplexity的“答案引擎”工作原理是收集网络上的海量信息,构建一个庞大的内容数据库(索引)。用户无需输入关键字,只需在Perplexity的平台或应用中提问,就能获得包含引文及网络内容链接的详细回答。 网站通过“机器人…

通过ETLCloud实现SQL Server数据同步至Oracle

SQL Server与Oracle作为全球两大主流的关系型数据库管理系统(RDBMS),在企业级应用中扮演着至关重要的角色。它们各自凭借独特的技术优势、强大的数据处理能力以及高度的可扩展性,支撑着从中小型企业到大型跨国公司的各类复杂业务需…

Web渗透-XSS漏洞深入及xss-labs靶场实战

一、简介 xss全称(cross site scripting)跨站脚本攻击,是最常见的web应用程序安全漏洞之一,位于owasptop102013年度第三名xss是指攻击者在网页中嵌入客户端脚本,通常是javascrip编写的危险代码,当用户使用浏览网页时&…

推荐系统三十六式学习笔记:原理篇.模型融合13|经典模型融合办法:线性模型和树模型的组合拳

目录 为什么要融合?“辑度组合”原理逻辑回归梯度提升决策树GBDT二者结合 总结 推荐系统在技术实现上一般划分为三个阶段:挖掘、召回、排序 。 为什么要融合? 挖掘的工作是对用户和物品做非常深入的结构化分析,各个角度各个层面…

【从零开始认识AI】梯度下降法

目录 1. 原理介绍 2. 代码实现 1. 原理介绍 梯度下降法(Gradient Descent)是一种用于优化函数的迭代算法,广泛应用于机器学习和深度学习中,用来最小化一个目标函数。该目标函数通常代表模型误差或损失。 基本思想是从一个初始…

《Nest系列 - 3. 掌握常见Nest 装饰器,奠定坚实基础!!!!!!》

nest 一个核心就是依赖注入,而中的大部分功能都是通过装饰器来实现的,那什么是装饰器呢? 就是一个 xxx ,诸如 Module,controller, Get, Post 那这样有什么好处呢? 可以把他理解成一个方法,在不改…

【干货】客户裂变实战:策略与案例分享

在当今竞争激烈的市场环境中,客户裂变成为了许多企业快速增长的关键策略。客户裂变,即利用现有客户的社交网络和影响力,吸引更多潜在客户,从而实现客户数量的快速增长。本文将分享一些客户裂变的实战策略及成功案例。 一、客户裂…

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024)

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024) 2024 International Conference on Image, Geological Surveying and Remote Sensing Technology(ICIGSRST 2024) ▶会议简介 2024年图像、地质…

第二届“讯方杯”全国大学生信息技术应用及创新大赛圆满落幕!

6月21日-23日,2023-2024“讯方杯”全国大学生信息技术应用及创新大赛全国总决赛在广东科技学院松山湖校区圆满举办。本届全国总决赛由深圳市讯方技术股份有限公司主办,广东科技学院承办,深圳市职前通教育有限责任公司协办。 广东科技学院副校…

艺术家电gorenje x 设计上海丨用设计诠释“生活的艺术”

2024年6月19日—22日,艺术家电gorenje亮相“设计上海”2024,以“gorenje是家电更是艺术品”为题,为人们带来融入日常的艺术之美。设计上海2024不但汇集了国内外卓越设计品牌和杰出独立设计师的家具设计作品,还联合国内外多名设计师…

国内Mac安装Homebrew方法

文章目录 前言步骤 参考:https://blog.csdn.net/itwangyang520/article/details/134125435 前言 今天尝试下载git,官方给的建议是使用Homebrew下载,但发现新电脑里没有,于是尝试Homebrew下载,但发现Homebrew不存在&am…

NAPI篇【4】——NAPI应用点亮一个LED

OpenHarmony的NAPI功能为开发者提供了JS与C/C不同语言模块之间的相互访问,交互的能力,使得开发者使用C或者C语言实现应用的关键功能。如操作开发板中某个GPIO节点的状态(OpenHarmony并没有提供直接操作GPIO口状态的API)&#xff0…