Trace链异常检测汇总

news2024/12/23 9:37:04

        微服务应用与单块应用完全不同,一个微服务系统少则有几十个微服务组成,多则可能有上百个服务。比如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.coloradmin.cn/o/1571390.html

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

相关文章

【Linux】Linux进程学习(基本认知)

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言一、冯诺依曼体系二、系统管理三、进程理解3.1 代码与数据3.2 进程控制块 四…

向量数据库 | AI时代的航道灯塔

向量数据库 | AI时代的航道灯塔 什么是向量检索服务拍照搜商品 你使用过向量数据库吗?使用体验?为什么向量数据库能借由大模型引起众多关注向量数据库在当前AI热潮中是昙花一现,还是未来AI时代的航道灯塔? 今天的话题主要是讨论向…

华清远见STM32MP157开发板助力嵌入式大赛ST赛道MPU应用方向项目开发

第七届(2024)全国大学生嵌入式芯片与系统设计竞赛(以下简称“大赛”)已经拉开帷幕,大赛的报名热潮正席卷而来。嵌入式大赛截止今年已连续举办了七届,为教育部认可的全国普通高校大学生国家级A类赛事&#x…

Linux制作C++静态库和动态库并使用示例

创建动态库&#xff1a; 编写源文件&#xff1a; // sub.h 显式调用 #include <iostream>extern "C" int sub(int a, int b);// sub.cpp #include "sub.h"int sub(int a, int b) {return a - b; }// quadrature.h 隐式调用 #include <iostream&…

云服务器centos提示 Cannot prepare internal mirrorlist: No URLs in mirrorlist的解决办法

yum update -y CentOS-8 - AppStream 118 B/s | 38 B 00:00 Error: Failed to download metadata for repo AppStream: Cannot prepare internal mirrorlist: No URLs in mirrorlist 执行下面的命令就可…

LeetCode题练习与总结:合并区间--56

一、题目描述 示例 1&#xff1a; 输入&#xff1a;intervals [[1,3],[2,6],[8,10],[15,18]] 输出&#xff1a;[[1,6],[8,10],[15,18]] 解释&#xff1a;区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2&#xff1a; 输入&#xff1a;intervals [[1,4],[4,5]] 输出&a…

springCloudAlibaba集成gateWay实战(详解)

一、初识网关&#xff1f; 1、网关介绍 ​ 在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢&#xff1f;如果没有网关的存在&#xff0c;我们只能在客户端记录每个微服务的地址&#xff0c;然后分别去调用。这样的话…

我与C++的爱恋:类与对象(一)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&…

【每日力扣】198.打家劫舍与213.打家劫舍II与337.打家劫舍 III

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 198.打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&…

谷歌AI搜索革新:探索高级搜索服务背后的未来趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Redis -- 缓存穿透问题解决思路

缓存穿透 &#xff1a;缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。 常见的解决方案有两种&#xff1a; 缓存空对象 优点&#xff1a;实现简单&#xff0c;维护方便 缺点&#xff1a; 额外…

STM32之HAL开发——不同系列SPI功能对比(附STM32Cube配置)

不同系列STM32——SPI框图 F1系列框图 F4系列框图 TI模式时序图特性 F7系列框图 H7系列框图 注意&#xff1a;F7系列以及H7系列支持Quad-SPI模式&#xff0c;可以连接单&#xff0c;双或者四条数据线的Flash存储介质。 SPI——Cube配置流程 RCC时钟源配置 SYS系统调试模式配…

【SCI绘图】【箱型图系列1 python】多类对比及各类下属子类对比

SCI&#xff0c;CCF&#xff0c;EI及核心期刊绘图宝典&#xff0c;爆款持续更新&#xff0c;助力科研&#xff01; 本期分享&#xff1a; 【SCI绘图】【箱型图系列1】多类对比各类下属子类对比 文末附带完整代码&#xff1a; 1.环境准备 python 3 from matplotlib import p…

Go语言hash/fnv应用实战:技巧、示例与最佳实践

Go语言hash/fnv应用实战&#xff1a;技巧、示例与最佳实践 引言hash/fnv概览使用hash/fnv的初步步骤导入hash/fnv库创建哈希器实例 hash/fnv在实际开发中的应用生成唯一标识符数据分片与负载均衡快速查找 高级技巧和最佳实践避免哈希碰撞动态调整哈希表大小利用sync.Pool优化哈…

【蓝桥杯】GCD与LCM

一.概述 最大公约数&#xff08;GCD&#xff09;和最小公倍数&#xff08;Least Common Multiple&#xff0c;LCM&#xff09; 在C中&#xff0c;可以使用 std::__gcd(a, b)来计算最大公约数 1.欧几里德算法/辗转相除法 int gcd(int a,int b){return b?gcd(b, a%b):a; } 2…

HTML5动画设计工具 Hype 4 Pro v4.1.14中文激活版

Hype Pro是一款功能丰富、易用且灵活的HTML5动画设计工具&#xff0c;适用于设计师、开发者和创作者创建各种精美的交互式网页动画。它的强大功能和可视化编辑界面使用户能够快速而轻松地实现复杂的动画效果&#xff0c;同时支持多种输出格式和交互方式&#xff0c;满足用户对网…

内网安全之-kerberos协议

kerberos协议是由麻省理工学院提出的一种网络身份验证协议&#xff0c;提供了一种在开放的非安全网络中认证识别用户身份信息的方法。它旨在通过使用秘钥加密技术为客户端/服务端应用提供强身份验证&#xff0c;使用kerberos这个名字是因为需要三方的共同参与才能完成一次认证流…

中科驭数DPU技术开放日秀“肌肉”:云原生网络、RDMA、安全加速、低延时网络等方案组团亮相

2024年3月29日&#xff0c;中科驭数以“DPU构建高性能云算力底座”为主题的线上技术开放日活动成功举办。在开放日上&#xff0c;中科驭数集中展现了其在低时延网络、云原生网络及智算中心网络三大关键场景下的技术成果与五大核心DPU解决方案&#xff0c;凸显了中科驭数在高性能…

RDD算子(四)、血缘关系、持久化

1. foreach 分布式遍历每一个元素&#xff0c;调用指定函数 val rdd sc.makeRDD(List(1, 2, 3, 4)) rdd.foreach(println) 结果是随机的&#xff0c;因为foreach是在每一个Executor端并发执行&#xff0c;所以顺序是不确定的。如果采集collect之后再调用foreach打印&#xf…

使用CSS计数器,在目录名称前加上了序号,让目录看起来更加井然有序

目录&#xff08;Text of Contents缩写为TOC&#xff09;&#xff0c;其实就是一篇文章的概要或简述。这好比&#xff0c;去书店买书&#xff0c;先是被这本书的标题所吸引&#xff0c;而后我们才会&#xff0c;翻开这本书目录&#xff0c;看看这本书主要是在讲些什么&#xff…