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不一定都要做根因分析。

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

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

相关文章

风控系统之普通规则条件,使用LiteFlow实现

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 提要 参考:智能风控筑基手册:全面了解风控决策引擎 前面有可配置输入参数的接…

Gson的用法

1. 导入依赖 <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version> </dependency> 2. 使用Gson进行解析 2.1 Gson解析普通对象 package com.jiang.partnetbackend.…

六、企业级架构缓存篇之memcached

一、memcached概述 1、网站架构优化流程&#xff1a; LNMP架构中网站应用访问流程&#xff1a; 浏览器 (app) → web 服务器 → 后端服务 (php) → 数据库 (mysql) 访问流程越多&#xff0c;访问速度越慢&#xff0c;出现问题的几率也越大。 网站访问流程优化思路&#xff1…

软件测试(测试用例详解)(三)

1. 测试用例的概念 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合。 测试环境操作步骤测试数据预取结果 测试用例的评价标准&#xff1a; 用例表达清楚&#xff0c;无二义性。。用例可操作性强。用例的输入与输出明确。一条用例只有…

c语言之向main函数传递参数

在c语言中&#xff0c;main函数也是可以传递传递参数的&#xff0c;业内向main函数传递参数的格式是 main(int argc,char *argv[]) 向main函数传递参数不是通过代码传递的&#xff0c;一般是通过dos命令传递 举个例子 #include<stdio.h> void main(int argc,char *ar…

算法刷题应用知识补充--基础算法、数据结构篇

这里写目录标题 位运算&#xff08;均是拷贝运算&#xff0c;不会影响原数据&#xff0c;这点要注意&#xff09;&、|、^位运算特性细节知识补充对于n-1的理解异或来实现数字交换找到只出现一次的数据&#xff0c;其余数据出现偶数次 >> 、<<二进制中相邻的位的…

算法设计与分析实验报告c++实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、实验目的 1&#xff0e;加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、 编…

为什么mac文件拖拽不了 mac文件拖不进硬盘里 macbookpro文件无法拖进移动硬盘 Tuxera NTFS for Mac 2023绿色

如果你是一位Mac用户&#xff0c;你可能会遇到这样的问题&#xff1a;你想把Mac上的文件拖拽到其他位置&#xff0c;比如桌面、文件夹或者外接硬盘&#xff0c;但是却发现无法操作&#xff0c;这是为什么呢&#xff1f;这篇文章将为你解答为什么mac文件拖拽不了&#xff0c;以及…

Web安全-浏览器安全策略及跨站脚本攻击与请求伪造漏洞原理

Web安全-浏览器安全策略及跨站脚本攻击与请求伪造漏洞原理 Web服务组件分层概念 静态层 &#xff1a;web前端框架&#xff1a;Bootstrap&#xff0c;jQuery,HTML5框架等&#xff0c;主要存在跨站脚本攻击脚本层&#xff1a;web应用&#xff0c;web开发框架&#xff0c;web服务…

Linux从入门到精通 --- 2.基本命令入门

文章目录 第二章&#xff1a;2.1 Linux的目录结构2.1.1 路径描述方式 2.2 Linux命令入门2.2.1 Linux命令基础格式2.2.2 ls命令2.2.3 ls命令的参数和选项2.2.4 ls命令选项的组合使用 2.3 目录切换相关命令2.3.1 cd切换工作目录2.3.2 pwd查看当前工作目录2.4 相对路径、绝对路径和…

vue2+elementUi的两个el-date-picker日期组件进行联动

vue2elementUi的两个el-date-picker日期组件进行联动 <template><el-form><el-form-item label"起始日期"><el-date-picker v-model"form.startTime" change"startTimeChange" :picker-options"startTimePickerOption…

c# wpf template itemtemplate+ListBox

1.概要 2.代码 <Window x:Class"WpfApp2.Window7"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/…

【opencv】示例 3calibration.cpp 利用OpenCV库进行三路相机校准

此代码是一个利用OpenCV库进行三路相机校准的C程序。这个示例程序主要用于校准水平摆放的三台相机。 以下是关键函数及其功能的简要总结&#xff1a; help(char** argv): 显示程序的使用方法。calcChessboardCorners(Size boardSize, float squareSize, vector<Point3f>&…

Vue 事件处理 -- 事件修饰符(prevent、stop、capture、self、once)

1. 事件修饰符 Vue中的事件修饰符&#xff1a; prevent&#xff1a;阻止默认事件&#xff08;常用&#xff09;&#xff1b;stop&#xff1a;阻止事件冒泡&#xff08;常用&#xff09;&#xff1b;once&#xff1a;事件只触发一次&#xff08;常用&#xff09;&#xff1b;cap…

软考 系统架构设计师系列知识点之数据库基本概念(1)

所属章节&#xff1a; 第6章. 数据库设计基础知识 第1节 数据库基本概念 数据&#xff08;Data&#xff09;是描述事务的符号记录&#xff0c;它具有多种表现形式&#xff0c;可以是文字、图形、图像、声音和语言等。信息&#xff08;Information&#xff09;是现实世界事物的…

考研回忆录【二本->211】

备考时长差不多快一年半&#xff0c;从22年的11月底开始陆陆续续地准备考研&#xff0c;因为开始的早所以整个备考过程显得压力不是很大&#xff0c;中途还去一些地方旅游&#xff0c;我不喜欢把自己绷得太紧。虽然考的不是很好&#xff0c;考完我甚至都没准备复试&#xff0c;…

ChatGPT 的核心 GPT 模型:探究其生成式预训练变换架构的革新与应用潜力

GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型是一种深度学习模型&#xff0c;由OpenAI于2018年首次提出&#xff0c;并在随后的几年中不断迭代发展&#xff0c;包括GPT-2、GPT-3以及最新的GPT-4。GPT模型在自然语言处理&#xff08;NLP&#xff09;领域…

JAVA毕业设计132—基于Java+Springboot+Vue的自习室座位预约小程序管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的自习室座位预约小程序管理系统(源代码数据库)132 一、系统介绍 本项目前后端分离带小程序&#xff0c;分为管理员、用户两种角色 1、用户&#xff1a; 注…

跨平台的组播测试工具mping、udp_sender及udp_reciver的源码及使用教程

文章目录 1.前言2.mping工具编译3.mping工具使用3.1 参数说明3.1 组播播发&#xff08;-s&#xff09;3.1 组播播发&#xff08;-r&#xff09;3.3 Linux下mping测试 4.Linux组播udp_sender及udp_reciver使用4.1 udp_sender源码4.1 udp_reciver源码4.3 编译方法4.4 测试使用4.4…

Star GAN论文解析

论文地址&#xff1a;https://arxiv.org/pdf/1912.01865v1.pdf https://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf 源码&#xff1a;stargan项目实战及源码解读-CSDN博客 1. 概述 在传统方法中&#x…