Trace链异常检测汇总

        微服务应用与单块应用完全不同,一个微服务系统少则有几十个微服务组成,多则可能有上百个服务。比如BAT级别的互联网公司,一般都超过上百个服务,服务之间的依赖关系错综复杂,如果没有有效的监控手段,那么出现问题很难快速排查,最终会导致业务损失。在微服务监控领域,当分布式系统发生故障时,由于服务之间复杂且动态的互相依赖关系,诊断与定位故障根因往往是非常困难的, 调用链监控是比较有效的手段,它不仅可以实时监控服务调用性能,也可以实时跟踪服务的依赖关系,出现问题的时候,通过调用链监控,可以帮助我们快速定位问题和排障,可以说微服务离不开调用链监控。

假设有3个服务,service1, service2, service3. 他们之间是有调用关系的。当外部请求进来的时候:用户请求先到service1, service1调用redis缓存(红色小方块),redis返回service1数据。service1调用service2,service2调用mysql,mysql返回service2数据。service2调用service3, service3返回给service2service2返回给service1service1返回给用户。

架构知识

微服务系统一般采用K8S(Kubernetes)微服务架构,在这个架构下,与trace链相关的概念有三个:pod,node,service,通常做trace链异常定位时,需要知道是pod级别还是node级别或者service级别的故障,并且需要知道对应的编号(如node-1)。

Kubernetes创建了一个Pod来放置你的应用实例,pod是Kubernetes上最小部署单元。Pod是Kubernetes中的一个抽象概念,一个Pod包含了一组应用容器(比如Docker或者rkt)和这些容器共用的资源。pod模拟出了一个应用运行所需要的“逻辑主机”;一个Pod总是运行在一个Node上。在Kubernetes中一个Node是一个执行具体工作的机器,它可用是虚拟机也可用是物理机,这个取决于所在的集群。每个Node都由Master统一管理。每个Node上面可用有多个Pod,Kubernetes Master会自动在Node之间处理调度相关的处理。Master自动调度会记录每个Node上的可用资源。

按故障粒度来分的话,service最粗糙,node次之,pod最细粒度,node可以理解成一个物理虚拟机,pod可以理解成一个虚拟机上的容器(如docker这种),每个service可以调用不同虚拟机上的容器服务(一个service包含3-4个pod),但是这个3-4pod不一定部署在一台虚拟机上(分布式系统的特点,能最大程度利用资源)。

trace链实现异常检测与根因定位

Trace链做异常检测时,是以每条trace链作为研究对象或一个样本,由于trace调用结构有差异性,所以需要先要确定trace的常用标准模式,然后在常用标准模式下构建模型训练集去判断是否异常;判断完一条trace链异常之后需要做根因定位,根因定位的研究对象是trace链上的每一个节点(span、service等视数据粒度而定),一般定位结果[cmdb_id, fault_type, prob, topk],其中cmdb_id可以理解为是哪个级别(pod、node、service)的故障,fault_type(结合metic指标,如容器类故障、磁盘故障等),prob指故障概率,topk是指出现故障的前K个节点,这个取K不一定根据异常分数,也需要考虑调用顺序。

trace链构建算法输入

Trace链中一个样本可以是一个trace也可以是一个span,当样本为一个trace时,特征一般为trace下子节点(span、operation等)的时延、日志、状态码信息,当以span作为子节点时,每条trace的节点长度不一致(除非采取类似于词向量embedding的方式编码成等长的向量),导致模型输入特征长度不一致,需要构建多个trace异常检测模型对trace链进行异常检测,由于实际数据中的标签缺乏,通常问题会定义为无监督、半监督的问题。一般来说,适用span作为一个样本时,主要是用来做根因检测,由于trace链数据频率高且多,所以做根因定位时不应用较为复杂的方法,通常会对每个trace模式下的span进行统计上异常判断。

1)对每一个trace_id进行LOUDS编码(30年前,现在有surf),LOUDS利用每个trace下的服务(span_id、operation)进行编码形成调用树,调用树表示调用结构,可以还原调用关系,除此之外会对trace_id和operation进行重新编码、去重,对每一个operation,存储其时延信息。

2)在训练集上分别统计normal和fault的trace调用模式,筛选调用次数多(>5000次)的作为调用的关键模式,目的为了提高搜索匹配效率

3)实时检测时,对一定时间间隔内(5分钟内)的调用信息中的每一个trace先进行编码,与调用模式库进行匹配(只匹配标准模式),对于标准模式匹配上的调用树,导出对应trace模式下的训练集,先进行无监督或半监督的异常检测,判断待检测trace链是否异常。如若异常,则对trace链从上至下进行时延6_sigma进行异常检测,超出6sigma的视为异常,同时统计历史样本中该服务的次数与异常次数,将其比值作为后验概率,加入trace链异常检测理论上能搞提高检测效率,因为新来一条trace不一定都要做根因分析。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[计算机知识] 各种小问题思考

哈希算法以及哈希冲突 哈希算法:将任何长度的输入通过散列函数转换成固定长度的字符串 哈希冲突:不同的输入经过哈希函数处理后得到相同的哈希值 因为哈希函数的输出域是有限的 解决哈希冲突: 1. 开放寻址:产生哈希冲突后&…

Vue - 1( 13000 字 Vue 入门级教程)

一:Vue 导语 1.1 什么是 Vue Vue.js(通常称为Vue)是一款流行的开源JavaScript框架,用于构建用户界面。Vue由尤雨溪在2014年开发,是一个轻量级、灵活的框架,被广泛应用于构建单页面应用(SPA&am…

创建和启动线程

概述 Java语言的JVM允许程序运行多个线程,使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。 Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,因此把run()方法体称为线程执行体。…

使用神经网络-遗传算法优化神经网络-风电预测故障(BP,GABP,matlab)

本项目是故障预测,不是时序预测,本质还是分类问题 1 数据集介绍 特征文件: 标签文件:共计4个标签,其中大多数都是正常的,其他是3个不正常的类别 2 使用BP网络 2.1 读取数据,然后选择几个…

【深度学习】图像自然语言描述生成

案例 6:图像自然语言描述生成(让计算机“看图说话”) 相关知识点:RNN、Attention 机制、图像和文本数据的处理 1 任务目标 1.1 任务和数据简介 ​ 本次案例将使用深度学习技术来完成图像自然语言描述生成任务,输入…

MySQL复制拓扑2

文章目录 主要内容一.配置基本复制结构1.分别在三台主机上停止mysqld服务,并对状态进行确认:代码如下(示例): 2.对三个MySQL服务器的配置文件分别进行编辑,在[mysqld] 选项组中添加以下红色条目:3.在数据目…

深入理解Java异常处理机制(day20)

异常处理 异常处理是程序运行过程产生的异常情况进行恰当的处理技术 在计算机编程里面,异常的情况比所我们所想的异常情况还要多。 Java里面有两种异常处理方式; 1.利用trycatchfinaly语句处理异常,优点是分开了处理异常代码和程序正常代码…

深入浅出 -- 系统架构之负载均衡Nginx反向代理

一、Nginx反向代理-负载均衡 首先通过SpringBootFreemarker快速搭建一个WEB项目:springboot-web-nginx,然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下: Controller public class IndexNginxControl…

【放假第3天】幻兽帕鲁 雾锁王国 我的世界 游戏云服务器选购指南 附最新价格对比表 新手、小白秒懂

更新日期:4月6日(半年档 价格回调,京东云采购季持续进行) 本文纯原创,侵权必究 【云服务器推荐】价格对比!阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文档&#xf…

前端三剑客 —— CSS (第四节)

目录 内容回顾: 1.常见样式 2.特殊样式 特殊样式 过滤效果 动画效果 动画案例: 渐变效果 其他效果: 多列效果 字体图标(icon) 内容回顾: 1.常见样式 text-shadow x轴 y轴 阴影的模糊程度 阴影的…

【话题:工作生活】2022年工作总结--疫情下的上海,疫情中的我。

现在是阳历2023年11月27日星期一,我再次开始撰写自己的年终工作总结。希望再过1、2个月,这份年终总结能够出炉,与大家相遇。 给自己定个小目标,年终的工作生活总结坚持写10年。我2017年毕业,之后就开始写每年的年终总结…

软考117-上午题-【计算机网络】-杂题+小结

一、杂题 真题1: 真题2: 真题3: 真题4: 真题5: 真题6: 真题7: 真题8: 真题9: 真题10: 真题11: 真题12: 真题13: 真题14&a…

c# wpf LiveCharts MVVM绑定 简单试验

1.概要 c# wpf LiveCharts MVVM绑定 简单试验 2.代码 <Window x:Class"WpfApp3.Window3"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://s…

Unity性能优化篇(十四) 其他优化细节以及UPR优化分析器

代码优化&#xff1a; 1. 使用AssetBundle作为资源加载方案。 而且经常一起使用的资源可以打在同一个AssetBundle包中。尽量避免同一个资源被打包进多个AB包中。压缩方式尽量使用LZ4&#xff0c;少用或不要用LZMA的压缩方式。如果确定后续开发不会升级Unity版本&#xff0c;则可…

MySql并发事务问题

事务 事务概念&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff1a;ACID&#xff1a; 小…

鸿蒙实战开发-如何使用Stage模型卡片

介绍 本示例展示了Stage模型卡片提供方的创建与使用。 用到了卡片扩展模块接口&#xff0c;ohos.app.form.FormExtensionAbility 。 卡片信息和状态等相关类型和枚举接口&#xff0c;ohos.app.form.formInfo 。 卡片提供方相关接口的能力接口&#xff0c;ohos.app.form.for…

开源流程图表库(04):mxGraph,都是可视化编辑,导出使用。

mxGraph是一个用于创建和展示图形的JavaScript库。它提供了丰富的功能和工具&#xff0c;可以用于构建各种类型的图形应用程序&#xff0c;包括流程图、组织结构图、网络拓扑图等。 mxGraph的编辑器 一、mxGraph的特点和功能 以下是一些mxGraph的特点和功能&#xff1a; 强大…

耐腐蚀耐高温实验室塑料烧杯进口高纯PFA材质反应器特氟龙烧杯

PFA烧杯在实验过程中可作为储酸容器或涉及强酸强碱类实验的反应容器&#xff0c;用于盛放样品、试剂&#xff0c;可搭配电热板加热、蒸煮、赶酸用。 外壁均有凸起刻度&#xff0c;直筒设计&#xff0c;带翻边&#xff0c;便于夹持和移动&#xff0c;边沿有嘴&#xff0c;便于倾…

数学矩阵GCD和lCM(详解)

矩阵乘法 知阵乘法是《线性代数》中的基础内容&#xff0c;但在考察数学的算法题中也会出现。 本节我们学习基础的矩阵乘法规则。 每个矩阵会有一个行数和一个列数&#xff0c;只有当相乘的两个矩阵的左矩阵的列数等于右矩阵的行数 时&#xff0c;才能相乘&#xff0c;否则不允…

做网站搭建程序员时,客户诉求及解决方案分享

今天总结在给客户搭建电商独立站时&#xff0c;经常遇到的客户诉求及解决方案。 客户在搭建电商网站时经常提出的诉求和相应的解决方案如下&#xff1a; 1. **网站设计和用户体验**&#xff1a; - 诉求&#xff1a;希望有吸引力、易用性强的网站设计&#xff0c;提升用户体…