美文网首页API网关Kong实践笔记
Kong[nginx]-09 zipkin插件体验

Kong[nginx]-09 zipkin插件体验

作者: 国服最坑开发 | 来源:发表于2019-08-09 17:19 被阅读110次

    Zipkin是什么?
    Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in service architectures. Features include both the collection and lookup of this data.

    Zipkin是分布式跟踪系统.帮助解决微服务系统中的数据接口时间消耗问题.包含数据收集和查询等功能.

    0x00 本文目标

    • 配置kong的zipkin插件
    • 发起指定格式的接口请求, 向zipkin服务提交有效记录数据

    0x01 配置插件

    如果看过前面几篇文章, 再向kong添加插件就会非常容易.
    这里我们添加一个全局插件(可以监听所有接口请求).


    插件列表 选择zipkin 配置endpoint
    假设我们的zipkin服务也是搭建在, 与kong相同的服务器.
    那么在弹出框中http_endpoint位置输入 http://localhost:9411/api/v2/spans, 并提交即可.
    确认插件配置

    0x02 关于验证

    前几次试验失败的原因是: 简单的认为zipkin插件配置后, 就可以直接监听所有接口了.今天再次阅读了zipkin插件的官方说明 ,才明白一个事情:
    zipkin插件会监听指定格式的请求, 才会向zipkin服务提交监控数据.

    • 那么问题来了, 具体格式是什么样子哩 ?

    The Zipkin plugin is derived from an OpenTracing base.
    A tracer is created with the "http_headers" formatter set to use the headers described in b3-propagation

    详细内容请到这里阅读.

    这里只举个最简单的例子:

    X-B3-TraceId: 80f198ee56343ba864fe8b2a57d3eff7
    X-B3-ParentSpanId: 05e3ac9a4f6e3b90
    X-B3-SpanId: e457b5a2e4d86bd1
    X-B3-Sampled: 1
    

    需要注意的是, openzipkin 里对上面的参数长度是有限定的:

    TraceId
    The TraceId is 64 or 128-bit in length and indicates the overall ID of the trace. Every span in a trace shares this ID.

    SpanId
    The SpanId is 64-bit in length and indicates the position of the current operation in the trace tree. The value should not be interpreted: it may or may not be derived from the value of the TraceId.

    ParentSpanId
    The ParentSpanId is 64-bit in length and indicates the position of the parent operation in the trace tree. When the span is the root of the trace tree, there is no ParentSpanId.

    0x03 验证

    把上一步中介绍的header参数添加到的我们的测试接口, 并发请求:

    curl -i http://cc/v1/user/get -H X-B3-TraceId:80f198ee56343ba864fe8b2a57d3eff7 -H X-B3-ParentSpanId:05e3ac9a4f6e3b90 -H X-B3-SpanId:e457b5a2e4d86bd1 -H X-B3-Sampled:1
    
    命令行请求

    从接口返回上来看, 没什么不同.

    但是这时, 我们在后台数据库, 和zipkin的UI画面, 已经能看到请求的信息了 _

    数据库变化 接口提交成功 接口请求信息

    0x04 后记

    这篇体验篇算是告一段落了.

    但是, 这样的使用体验, 显然不能用于生产啊.
    因为, 目前为止, 我还不知道如何正确生成 traceId, spanId信息 -_-!!!

    另外, 在SpringBoot中,也有关于zipkin的支持了.更大的可能性是使用SpringBoot 去集成zipkin功能了.

    下一篇, 打算进入自定义插件开发的领域.毕竟,不会开发的后端,不是好打野.

    相关文章

      网友评论

        本文标题:Kong[nginx]-09 zipkin插件体验

        本文链接:https://www.haomeiwen.com/subject/rsnhjctx.html