基于 Kafka+ES+Zipkin 搭建链路追踪服务

前言

本文是记录一下 Window 下 使用 Kafka + ES + Zipkin 搭建一套链路追踪服务教程, 旨在减少各位在学习过程中安装部署引起的麻烦. 一起学习,共同进步!

1. 所需软件

  • JDK 1.8 环境
  • kafka 最新版本
  • ElasticSearch-5.6.9(使用版本7 显示过高,索性找了个靠谱点的)
  • Zipkin-server-2.12.9-exec

2. 配置参数

毕竟只是在 window 做个简单样例, 而这些服务默认都需要分配上G的JVM 内存, 资源宝贵, 所以修改各自服务的 JVM 参数, 避免还没开始,就已结束(系统资源耗尽).

给个参考值: Zipkin 128M, Kafka 256M, ElasticSearch 256M

  • kafka 修改目录文件: bin\window\kafka-server-start.bat

    需要区别 32位 和 64位系统, 按图示统一修改为 256M 即可

    在这里插入图片描述

  • ES 目录文件: config\jvm.options

    这个修改相对简单一点, 找到 -Xms -Xmx 这两个参数, 分别设为 256M 即可

  • Zipkin 会随着命令行启动时指定

3. 启动服务

  1. 启动 Kafka 服务

    需要依次启动 zookeeper , kafka server, 创建名为 zipkin 的主题

    Kafka 相关操作可参考这边博文 https://blog.csdn.net/YY_WG/article/details/104154823

  2. 启动 ES

    进入 ES 安装 bin目录, 双击 elasticsearch.bat 即可, 启动成功之后, 浏览器访问 http://localhost:9200 查看ES 版本信息, 如下图
    在这里插入图片描述

  3. 启动 zipkin

    进入到 zipkin 存放目录, 进入命令行执行以下命令

    java -DKAFKA_BOOTSTRAP_SERVERS=localhost:9092 -DKAFKA_TOPIC=zipkin -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://localhost:9200 -Xms256M -Xmx256M -jar zipkin-server-2.12.9-exec.jar
    

    浏览器访问 http://localhost:9411 验证 zipkin 服务是否成功
    在这里插入图片描述

4. 测试

启动 kafka 生产者

输入以下数据, 这是一段文本,中间没有回车符

[{“traceId”:“5982fe77008310cc80f1da5e10147517”,“name”:“get”,“id”:“bd7a977555f6b982”,“timestamp”:1458702548467000,“duration”:386000,“localEndpoint”:{“serviceName”:“zipkin-query”,“ipv4”:“192.168.1.2”,“port”:9411},“annotations”:[{“timestamp”:1458702548467000,“value”:“sr”},{“timestamp”:1458702548853000,“value”:“ss”}]},{“traceId”:“5982fe77008310cc80f1da5e10147517”,“name”:“get-traces”,“id”:“ebf33e1a81dc6f71”,“parentId”:“bd7a977555f6b982”,“timestamp”:1458702548478000,“duration”:354374,“localEndpoint”:{“serviceName”:“zipkin-query”,“ipv4”:“192.168.1.2”,“port”:9411},“tags”:{“lc”:“JDBCSpanStore”,“request”:“QueryRequest{serviceName=zipkin-query,spanName=null,annotations=[],binaryAnnotations={},minDuration=null,maxDuration=null,endTs=1458702548478,lookback=86400000,limit=1}”}},{“traceId”:“5982fe77008310cc80f1da5e10147517”,“name”:“query”,“id”:“be2d01e33cc78d97”,“parentId”:“ebf33e1a81dc6f71”,“timestamp”:1458702548786000,“duration”:13000,“localEndpoint”:{“serviceName”:“zipkin-query”,“ipv4”:“192.168.1.2”,“port”:9411},“remoteEndpoint”:{“serviceName”:“spanstore-jdbc”,“ipv4”:“127.0.0.1”,“port”:3306},“annotations”:[{“timestamp”:1458702548786000,“value”:“cs”},{“timestamp”:1458702548799000,“value”:“cr”}],“tags”:{“jdbc.query”:“selectdistinctzipkin_spans.trace_idfromzipkin_spansjoinzipkin_annotationson(zipkin_spans.trace_id=zipkin_annotations.trace_idandzipkin_spans.id=zipkin_annotations.span_id)where(zipkin_annotations.endpoint_service_name=?andzipkin_spans.start_tsbetween?and?)orderbyzipkin_spans.start_tsdesclimit?”,“sa”:“true”}},{“traceId”:“5982fe77008310cc80f1da5e10147517”,“name”:“query”,“id”:“13038c5fee5a2f2e”,“parentId”:“ebf33e1a81dc6f71”,“timestamp”:1458702548817000,“duration”:1000,“localEndpoint”:{“serviceName”:“zipkin-query”,“ipv4”:“192.168.1.2”,“port”:9411},“remoteEndpoint”:{“serviceName”:“spanstore-jdbc”,“ipv4”:“127.0.0.1”,“port”:3306},“annotations”:[{“timestamp”:1458702548817000,“value”:“cs”},{“timestamp”:1458702548818000,“value”:“cr”}],“tags”:{“jdbc.query”:“selectzipkin_spans.trace_id,zipkin_spans.id,zipkin_spans.name,zipkin_spans.parent_id,zipkin_spans.debug,zipkin_spans.start_ts,zipkin_spans.durationfromzipkin_spanswherezipkin_spans.trace_idin(?)”,“sa”:“true”}},{“traceId”:“5982fe77008310cc80f1da5e10147517”,“name”:“query”,“id”:“37ee55f3d3a94336”,“parentId”:“ebf33e1a81dc6f71”,“timestamp”:1458702548827000,“duration”:2000,“localEndpoint”:{“serviceName”:“zipkin-query”,“ipv4”:“192.168.1.2”,“port”:9411},“remoteEndpoint”:{“serviceName”:“spanstore-jdbc”,“ipv4”:“127.0.0.1”,“port”:3306},“annotations”:[{“timestamp”:1458702548827000,“value”:“cs”},{“timestamp”:1458702548829000,“value”:“cr”}],“tags”:{“jdbc.query”:“selectzipkin_annotations.trace_id,zipkin_annotations.span_id,zipkin_annotations.a_key,zipkin_annotations.a_value,zipkin_annotations.a_type,zipkin_annotations.a_timestamp,zipkin_annotations.endpoint_ipv4,zipkin_annotations.endpoint_port,zipkin_annotations.endpoint_service_namefromzipkin_annotationswherezipkin_annotations.trace_idin(?)orderbyzipkin_annotations.a_timestampasc,zipkin_annotations.a_keyasc”,“sa”:“true”}}]

上面的数据是使用的 zipkin 官网 Data Model 中的示例数据, 只是将回车符全部去掉了, 因为使用 kafka 客户端发送消息, 一个回车符 代表一条消息, 这样发送到 zipkin 中是不完整的.

之后在 zipkin 页面中按 traceId 搜索, 即会看到和官网图示一样的结果
在这里插入图片描述
在这里插入图片描述
至此, 介绍完毕.

5. 补充

ES 中 浏览器查看数据, 没有装 head 插件, 可以使用 rest api 来了解一些ES 存储情况

  • 查看记录数: http://localhost:9200/_cat/count
  • 查看所有数据: http://localhost:9200/_search?pretty (数据多慎用)
  • 查看各索引数据量: http://localhost:9200/_cat/indices?pretty

*参考资料:*

Kafka 官网
ES 官方API
Zipkin 官网

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值