• 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
            
        }
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    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

  • 相关阅读:
    SpringBoot整合Redis
    聊一聊被人嘲笑的if err!=nil和golang为什么要必须支持多返回值?
    C++数据结构——红黑树
    渗透测试要学习什么?
    VMWARE 服务器整合为战提供的解决方案
    fiddle手机抓包
    C语言-数组与指针
    HTML简单介绍
    快讯 | ALVA 荣获首届“格物杯”联通物联网应用创新大赛复赛一等奖!
    函数总章C11
  • 原文地址:https://blog.csdn.net/zhyuli/article/details/132500324