↑↓ 选择 · ↵ 打开 · 共索引 377 篇

    基于 Jaeger 的全链路追踪系统构建实战指南

    本文将给大家介绍如何基于 Jaeger 做你的全链路追踪系统。

    ARCHIVE 这篇写于 2017 年,距今 8 年多了。里面的版本、链接和做法可能都已经过时,看的时候留个心眼。

    本文我将带大家基于 Jaeger 构建全链路追踪系统,也包括一些我在这个过程中遇到的一些问题总结,希望能够对大家有所帮助。
    

    Stargazers over time

    Stargazers over time

    分布式全链路跟踪系统是什么?

    分布式链路跟踪的核心基本都是 Google Dapper 论文所述,使用全局 TraceID 表示一条调用链,连接各个服务调用(用 SPAN 表示),通过分析 SPAN 之间的父子关系形成跟踪树。 另外通过中间件的埋点和业务自定义的 Annotation ,记录日志并采用收集器进行离线和在线分析,从而实现调用链跟踪、优化决策等信息。

    Dapper 是什么?

    Dapper 是 Google 发表的分布式链路跟踪的论文。

    Jaeger 是什么?

    Jaeger 是 Uber 基于 Google Dapper 开发的分布式链路跟踪系统的实现。

    其他

    • Ziplin

    实战演示

    1. 本地运行 Docker jaegertracing/all-in-one:latest,打开 http://localhost:16686 如果能够看到 Jaeger UI 即表示运行成功了;
    2. git clone https://github.com/yangwenmai/jaeger-opentracing-examples.git;
    3. GOOS=linux GOARCH=amd64 go build . 将生成 jaeger-opentracing-examples 的二进制可执行文件;
    4. docker build -t jaeger-opentracing-examples:dev . 制作一个本地 jaeger-opentracing-examples 的 Docker 镜像;
    5. docker run -it --name=jaeger-opentracing-examples -p 0.0.0.0:8080:8080 jaeger-opentracing-examples:dev
    6. 本地访问 http://localhost:8080,然后打开 http://localhost:16686 Search 即可查看到你注册的全链路跟踪请求了。

    坑/问题

    1. Docker 运行要特别注意网络互通,默认 Docker 网络的 IP 是 172.17.0.x。
    2. 实际运行中可能存在一定时间的延时,所以你访问请求之后需要等一会儿才可以在 Jaeger UI 上查看到请求。
    3. 注意上报服务器地址是 Reporter中的LocalAgentHostPort;
    4. 注意本文是使用 dep 包管理工具,特别要注意 vendor 中的 github.com/apache/thrift/ 版本,如果你使用 github.com/apache/thrift master 分支,那么你将编译不通过;

    欲知更多,请前往 jaeger-opentracing-examples

    参考资料

    1. http://ginobefunny.com/post/learning_distributed_systems_tracing/
    2. https://bigbully.github.io/Dapper-translation/
    3. https://tech.meituan.com/mt-mtrace.html
    4. https://github.com/jaegertracing/jaeger
    5. https://github.com/alextanhongpin/go-jaeger-trace
    6. http://github.com/jukylin/trace_example
    7. http://github.com/jukylin/blog/blob/master/Uber分布式追踪系统Jaeger使用介绍和案例【PHP%20%20%20Hprose%20%20%20Go】.md
    8. http://www.infoq.com/cn/articles/evolving-distributed-tracing-at-uber-engineering

    茶歇驿站

    一个可以让你停下来看一看,在茶歇之余给你帮助的小站,这里的内容主要是后端技术,个人管理,团队管理,以及其他个人杂想。

    打赏