grafana结合Skywalking追踪Trace(一)

2023-09-18 16:29:36

SW应用中对Trace的跟踪一直占有重要的地位,即可以用户指定的tag值,可以筛选出感兴趣的trace(跟踪链),用户可以通过跟踪链追踪各个Span的详细情况。 但是在使用SW OAP原生页面中会存在两个问题:
1) Trace数量太多了,需要反复搜索才能找到
2) 找到的Trace,往往代表一类业务,但原生的OAP无法提供Trace聚合图表,比如此类业务耗时的平均延时图
我们尝试用grafana+Graphql+SW解决,前文可参考 grafana结合Skywalking生成组合图表

首先我们用SW OAL提供的queryBasicTraces查询trace列表

query {totaltraces:
 queryBasicTraces(
    condition: {
        serviceId: "$serviceId"
        serviceInstanceId: ""
        endpointId: "$endpointId"
        traceState: ALL
        traceId: ""
        queryDuration: {start: "${__from:date:YYYY-MM-DD HHmm}",end: "${__to:date:YYYY-MM-DD HHmm}", step: MINUTE}
        tags: $tags
        queryOrder: BY_START_TIME
        paging: {
            needTotal: false
            pageNum:1
            pageSize: 100
        }
    }
){
    traces{
        traceIds
        duration
        endpointNames
        start
        
    }
}
}

serviceId对应服务Id变量。endpointId对应端点的变量,这里重点说一下tags,支持按tag查询,如果是空对应,tags=[] ,如果非空则是tags={key:“xxnamexx”,value:“xxvaluexx”} , xxnamexx和xxvaluexx定义的tag(参考SW,这里不赘述)
所以最后的设计就是 tags变量,如果空则填[] ,如果非空则填{key:“xxnamexx”,value:“xxvaluexx”} ,当然这有点反人类,未来希望通过插件改造实现,若有更简单的办法,恳请赐教

查询结果,先选择table
在这里插入图片描述
那么后续就是需要解决时间序列的问题,主要是通过gafana提供的transform和域名的Overrides工具,对start(时间)进行改造,实现适配TimeSeries,主要目标就是把start列从UNIX标准时间转换成ISO的标准时间,并指定为时间轴 ,步骤如下:
1 transform: add field from calculation 选Binary operation(列计算) start1 (我不知道为啥,但不加这条,没法转) alias 选starttime (否则就是很中二的 start1… )
2 table选择Overrides 选 starttime, 选Unit 然后转成 Datetime ISO
3 transform: filter by name 去掉start列
4 Convert fieldtype 选starttime 转成时间

在这里插入图片描述
然后把table换成 timeseries OK(注意: GraphStyle选bar比较好)
在这里插入图片描述
然后把Table变成TimeSeries就好了

我为了保留表格,采用了新建Panel然后 DataSource选 dashboard 引入刚才的表格数据,然后再使用transform和override 变成timeseries

更多推荐

【动态规划刷题 16】最长等差数列 (有难度) && 等差数列划分 II - 子序列

1027.最长等差数列https://leetcode.cn/problems/longest-arithmetic-subsequence/给你一个整数数组nums,返回nums中最长等差子序列的长度。回想一下,nums的子序列是一个列表nums[i1],nums[i2],…,nums[ik],且0<=i1<i2<…

AOSP Android 系统源码编译出的framework.jar和android.jar之间的区别

简介AOSP(AndroidOpenSourceProject)编译出的android.jar和framework.jar都是Android平台开发中的重要组件,但它们有不同的作用和用途:android.jar:用途:android.jar包含了AndroidAPI的定义,它是Android应用程序开发的核心库。开发者

【Hadoop】HDFS API 操作大全

🍁博主"开着拖拉机回家"带您GotoNewWorld.✨🍁🦄个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客🎐✨🍁🪁🍁希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁�

多台服务器sessionId共享

目录多台服务器sessionId共享解决方案:ASP.NETCore参考代码(NET7):登录处理登录(请求)过滤器过滤器使用BaseController多台服务器sessionId共享sessionid是服务器首次与浏览器创建连接时,生成的id值,存入浏览器端cookie中,值加密的,下次请求时,浏览器自动带上ses

Flutter——启动页白屏的优化

flutter启动页白屏的优化:使用图片替代白屏结构图核心的代码如上图,修改两个launch_background.xml里的代码为:<item><bitmapandroid:gravity="center"android:src="@mipmap/ic_launcher"/></item>@mipmap/ic_lau

探讨代理IP与Socks5代理在跨界电商中的网络安全应用

在数字化时代,跨界电商已经成为了商业世界中的一大趋势。然而,跨越国界的电商活动也伴随着网络安全挑战。本文将讨论如何利用代理IP和Socks5代理技术来提高跨界电商中的网络安全,同时也探讨了与游戏相关的爬虫应用。1.代理IP和Socks5代理的基本概念1.1代理IP代理IP是一种网络技术,允许用户在访问互联网时使用中间服

JWT令牌

一、JWT(JsonWebToken)能干什么1、安全认证(权限认证)比如登录系统的时候,服务器会检查前端请求数据中携带的token信息,符合标准则允许访问,不符合则拒绝你的访问请求。2、信息传递比如两个系统之间传递信息,a服务器向B服务器发送token信息,b服务器对token进行解签名,发现签名对的上就接收数据,对

进程程序替换

✅<1>主页::我的代码爱吃辣📃<2>知识讲解:Linux——进程替换☂️<3>开发环境:Centos7💬<4>前言:我们创建子进程的目的是什么?想让子进程帮我们执行特定的任务。那么如何让子进程去执行一段新的代码呢?一.背景二.子进程程序替换三.替换函数1.execv2.execlp3.execle4.命名理解四.

打工人的灵魂,五天在囚笼里,剩下两天在骂街

点击文末“阅读原文”即可参与节目互动剪辑、音频/卷圈运营/SandLiu卷圈监制/姝琦封面/姝琦@midjourney产品统筹/bobo场地支持/声湃轩天津录音间在不想上班这件事上,从古至今,从名人大师到渺小如我们,所有人的想法都是一样的。高尔基他老人家说过:工作是快乐时,人生便是幸福;工作是义务时,人生便是苦役。按照

FastAPI学习大纲

FastAPI是一个现代的、快速的(高性能的)、基于标准Python类型的Web框架,用于构建APIs。它基于标准的Python类型提示,并且它的主要优点是速度、类型安全以及自动的API文档生成。如果您要使用FastAPI,以下是一些必须了解的关键点及相关命令:安装:pipinstallfastapi[all]pipi

第三、四、五场面试

第三场共享屏幕做题(三道简单题)替换空格成%20(双指针)删除升序链表中的重复元素(指针)有效的括号(栈)第四场、第五场自我介绍项目拷打整个项目架构rpc模块的情况分析的数据从那里获取,如何获取整个项目还有哪些不足与改进docker模块的主要工作说一下DNSmap底层的红黑树跟二叉搜索树有什么区别?介绍一下HTTP介绍

热文推荐