grafana结合Skywalking追踪Trace(一)

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 (否则就是很中二的 start 1... )

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

相关推荐
GIS数据转换器1 分钟前
智慧林草“一张图“平台
java·大数据·服务器·前端·javascript·数据库·人工智能
gis开发之家12 分钟前
Spring Boot 4 深度解析,JdbcTemplate 实战——轻量级数据库操作方案
java·数据库·spring boot·后端
mqiqe44 分钟前
AgentScope Java 2.0 技能仓库(Skill Repository)完全实战指南
java·开发语言·elasticsearch
Mr数据杨1 小时前
【Codex】用学生支持周报模块跟踪个性化支持进展
android·java·javascript·django·codex·项目开发
JavaPub-rodert1 小时前
Apache Jena 详解:Java 开发者如何真正搭起一套知识图谱与语义服务
java·apache·知识图谱
lhldsg1 小时前
线上住宿预约系统开发实战:从需求分析到接口设计
java·大数据·小程序·需求分析
剑指offer.2 小时前
Linux多任务-线程篇
java·jvm·算法
2601_962063972 小时前
Spring Boot拦截器(Interceptor)详解
java·spring boot·后端
这是程序猿2 小时前
深入剖析Java HashMap:底层原理、数据结构与核心机制全解析
java·开发语言·数据结构
不才不才不不才2 小时前
Spring 源码系列(25): @EnableTransactionManagement 与 TransactionInterceptor
java·数据库·spring