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

相关推荐
秋恬意30 分钟前
IBatis和MyBatis在细节上的不同有哪些
java·mybatis
齐 飞1 小时前
BeanFactory和FactoryBean
java·sprint
大霞上仙1 小时前
lxml 解析xml\html
java·服务器·网络
Xiaoweidumpb1 小时前
tomcat temp临时文件不清空,占用硬盘,jdk字体内存泄漏
java·tomcat
AI人H哥会Java2 小时前
【Spring】控制反转(IoC)与依赖注入(DI)—IoC容器在系统中的位置
java·开发语言·spring boot·后端·spring
不能只会打代码2 小时前
Java并发编程框架之综合案例—— 分布式日志分析系统(七)
java·开发语言·分布式·java并发框架
自律的kkk2 小时前
SpringBoot中使用AOP切面编程实现登录拦截
java·spring boot·aop·切面编程·登录拦截
丁总学Java2 小时前
nohup java -jar productQualification.jar --spring.profiles.active=prod $
java·spring·jar
lfl183261621602 小时前
thingsboard 自定义html
java·前端·html