基于Skywalking开发分布式监控(二)

续上篇,上一篇主要是讲了为啥选skywalking,以及怎么有针对性改造SW Agent,现在我们继续看看如何构建自定义Trace跟踪链

  1. 要对SW Agent插件做适当剪裁,原来包括customize插件在内SW 8.9有100多个插件,如果没有作用也就罢了,但是有些插件会产生大量trace和span数据,用处不大,但是会干扰需要聚焦的数据,例如一次最多查10000个trace,但有可能绝大部分都不是用户关注的,而用户关注的数据,又被淹没在无用数据中——因为运行中系统还在大量产生新的数据。
    裁剪的原则是,根据应用实际,用户关注什么技术/框架,就留什么SW Agent,然后漏掉什么加什么,比如需要跟踪kafka再加,我们最终裁剪到大约30个左右,专门建立一个目录,然后把目录路径加载到JVM变量里。
    另外需要注意,不同节点/服务所使用插件可以不同,但要注意衔接,例如dubbo,生成者服务和消费者服务都需要配置相关的有效SW Agent。

  2. 构建customize-enhance.xml
    这部分的基本方法就不赘述了,可以看官方文档https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/customize-enhance-trace/
    这里说两点:
    1) tag标签设计,customize-enhance中的tag数据如果设计得当不仅仅能显示运行时的状态,而且可以在筛选指定类型trace方面发挥作用,这个需要和SW OAP配置文件application.yml中searchableTracesTags配置项配合使用,可以通过UI组件 Trace板块中实现按tag搜索所需的trace list,实际上可以实现在整个业务流程中根据标签精准跟踪相关业务,后续可以进一步结合导出SW OAP数据进行深加工
    例如

<enhanced><class class_name="com.quant.trade.service.baseImpl.OrderServiceImpl"><method method="sendOrder(com.quant.trade.service.contract.OrderVO)" operation_name="/sendOrder" static="false"><operation_name_suffix>arg[0].modelId</operation_name_suffix><tag key="modelId">arg[0].modelId</tag><tag key="userNumber">arg[0].userNumber</tag><tag key="refId">arg[0].refId</tag><tag key="systemFlag">arg[0].getSystemFlag()</tag><log key="infoMsg">arg[0].getSystemFlag()</log></method>...
</class>
...
</enhanced>

OAP的application.yml中配置

# Define the set of span tag keys, which should be searchable through the GraphQL.
searchableTracesTags: ${SW_SEARCHABLE_TAG_KEYS:http.method,status_code,db.type,db.instance,mq.queue,mq.topic,mq.broker,modelId,refId,systemFlag}

其中modelId(策略编号),refId(报价编号),systemFlag(系统标志,)是用户自定义增加的, 可以在UI组件按上述tags进行查询
例如,按systemFlag=2查询
按
2) 关于customize-enhance.xml 跟踪方法入参如果是复杂类型怎么提取tag数据,这部分官网说的不太清楚,可以参考我之前的写的blog
关于Skywalking Agent customize-enhance-trace对应用复杂参数类型取值
总之要对入参的类型和方法要有充分了解,不要机械套用官网的说明

完成Agent的修补和customize-enhance.xml 就可以构建自定义Trace链,可以在UI的查询,一般可以用两种方式定位Trace
1) 按Service Instance Endpoint名字搜索定位,注意 Endpoint需要SW Agent构建的EntrySpan才能搜索,如果是自定义的Local则不能用这个办法
在这里插入图片描述

2) 用刚才提到的tag查询,不再赘述。

到目前位置,我们已经完成自定义监控构建,那是不是已经万事大吉了,还没有,思考几个问题

  1. Scope Metrics 只有SW Agent构建的标准化的Endpoint,instance和Service才有比较多监控项,但是用户定义的Trace却没有办法计算和展示监控项(metrics)

  2. 虽然SW UI结合Tags搜索较为灵活,但终究是作用于一个span上,即同一个操作或者方法上,但如果要求同时满足,调用方法1(span1)按策略号搜索,且endpointName为XXX的trace,则力不从心。比如搜索 网页发起(按endpointName)的某个策略号(tag systemFlag=2)统计跟踪情况,就无能为力了

  3. 如果要深入分析哪些操作方法最耗时的,需要跨trace综合分析span的信息,肯定也是做不到的

拿怎么解决这个问题呢,下一篇我们会讨论基于GraphQL用户接口的二次开发,解决上述问题

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

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

相关文章

Spring Cloud使用ZooKeeper作为注册中心的示例

简单的Spring Cloud应用程序使用ZooKeeper作为注册中心的示例&#xff1a; 1.新建模块&#xff1a; 2.勾选依赖&#xff1a; 3.在pom.xml文件中做出部分修改及添加Spring Cloud Zookeeper 依赖版本&#xff1a; 完整pom文件 <?xml version"1.0" encoding&q…

【自然语言处理-工具篇】spaCy<1>--介绍及安装指南

目录 前言 安装指南 pip conda spaCy升级 总结 前言 spaCy是一个开源的自然语言处理库,用于处理和分析文本数据。它提供了许多功能,包括分词、词性标注

ES6扩展运算符——三个点(...)用法详解

目录 1 含义 2 替代数组的 apply 方法 3 扩展运算符的应用 &#xff08; 1 &#xff09;合并数组 &#xff08; 2 &#xff09;与解构赋值结合 &#xff08; 3 &#xff09;函数的返回值 &#xff08; 4 &#xff09;字符串 &#xff08; 5 &#xff09;实现了 Iter…

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址&#xff1a;https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的&#xff0c;则直接安装 npm install -g cnpm --regi…

WordPress突然后台无法管理问题

登录WordPress后台管理评论&#xff0c;发现点击编辑、回复均无反应。 尝试清除缓存、关闭CF连接均无效。 查看插件时发现关闭wp-china-yes插件可以解决问题。 后来又测试了下发现加速管理后台这项&#xff0c;在启用时会发生点击无效问题&#xff0c;禁用就好了&#xff0c;不…

【Linux系统学习】6.Linux系统软件安装

实战章节&#xff1a;在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面&#xff0c;我们学习了许多的Linux命令和高级技巧&#xff0c;这些知识点比较零散&#xff0c;进行练习虽然可以基础掌握这些命令和技巧的使用&#xff0c;但是并没有一些具体的实…

详细介绍Python网络编程模块

根据前面对网络分层棋型的介绍&#xff0c;我们知道实际的网络模型大致分为四层&#xff0c;这四层各有对应的网络协议提供支持&#xff0c; 网络层协议主要是 IP&#xff0c;它是所有互联网协议的基础&#xff0c;其中 ICMP&#xff08;Internet Control Message Protocol&…

Junit常用注解

注解是方法的“标签” 说明每个方法的“职责” Q:总共有那些注解? 参见官方的API文档 0.常用主机及其特点 BeforeClass 只会执行一次必须用static修饰常用来初始化测试需要的变量 Before 会执行多次&#xff08;只要写一次&#xff09;在每个Test执行执行之前执行可以和…

滑块验证码识别代码分享

平时我们开发爬虫会遇到各种各样的滑动验证码&#xff0c;如下图所示&#xff1a; 为了解决这个问题&#xff0c;我写了一个通用的滑块验证码识别代码&#xff0c;主要是分析图片&#xff0c;然后计算出滑块滑动的像素距离。但是像素距离大多数情况下都不会等于滑动距离&#x…

企业数字化转型面临什么挑战?

数字化转型是一个复杂且持续的过程&#xff0c;涉及将数字技术集成到组织的各个方面&#xff0c;从根本上改变组织的运营方式和为客户提供价值的方式。虽然具体的挑战可能因企业的性质和规模而异&#xff0c;但一些常见的挑战包括&#xff1a; 1.抵制变革&#xff1a; 文化阻…

Android---Jetpack Compose学习002

Compose 布局。Compose 布局的目标&#xff1a;1&#xff09;实现高性能&#xff1b;2&#xff09;让开发者能够轻松编写自定义布局&#xff1b;3&#xff09;在 Compose 中&#xff0c;通过避免多次测量布局子级可实现高性能。如果需要进行多次测量&#xff0c;Compose 具有一…

【力扣】查找总价格为目标值的两个商品,双指针法

查找总价格为目标值的两个商品原题地址 方法一&#xff1a;双指针 这道题和力扣第一题“两数之和”非常像&#xff0c;区别是这道题已经把数组排好序了&#xff0c;所以不考虑暴力枚举和哈希集合的方法&#xff0c;而是利用单调性&#xff0c;使用双指针求解。 考虑数组 pri…

跟着cherno手搓游戏引擎【22】CameraController、Resize

前置&#xff1a; YOTO.h: #pragma once//用于YOTO APP#include "YOTO/Application.h" #include"YOTO/Layer.h" #include "YOTO/Log.h"#include"YOTO/Core/Timestep.h"#include"YOTO/Input.h" #include"YOTO/KeyCod…

第6节、T型加减速转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本章介绍步进电机T型加减速的控制方法&#xff0c;分三个小节&#xff0c;本小节主要内容为该控制方法的推导与计算。目前各平台对该控制方法介绍的文章目前较多&#xff0c;但部分关键参数并未给出推导…

【PTA|期末复习|编程题】数组相关编程题(一)

目录 7-1 乘法口诀数列 (20分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 样例解释&#xff1a; 代码 7-2 矩阵列平移(20分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; …

电子电器架构 —— 对车载软件开发新阶段的愿景

电子电器架构 —— 对车载软件开发新阶段的愿景 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝…

猫头虎分享已解决Bug || Kubernetes Error: Pods ‘pod-name‘ Not Found

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Linux系统基础 03 IP地址虚拟网络、Linux软件包管理、ssh服务、apache服务和samba服务的简单搭建

文章目录 一、IP地址虚拟网络二、Linux软件包管理1、rpm包管理器2、yum包管理器3、源码安装 三、ssh服务四、apache服务五、samba服务 一、IP地址虚拟网络 1、IP地址格式是点分十进制&#xff0c;例&#xff1a;172.16.45.10。即4段8位二进制 2、IP地址分为网络位和主机位。网…

【Leetcode】236. 二叉树的最近公共祖先

文章目录 题目思路代码结果 题目 题目链接 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可…

品牌如何营造生活感氛围?媒介盒子分享

「生活感」简而言之是指人们对生活的感受和意义&#xff0c;它往往没有充斥在各种重要的场合和事件中&#xff0c;而是更隐藏在细碎平凡的生活场景中。在营销越来越同质化的当下&#xff0c;品牌应该如何打破常规模式&#xff0c;洞察消费情绪&#xff0c;找到更能打动消费者心…