Zipkin
Zipkin 本身是一个由 Twitter 公司开源的分布式追踪系统。
Zipkin 分为 server 端和 client 端,server 用来展示数据,client 用来收集+上报数据。
准备工作
Zipkin 要先把数据存储起来,这里我们使用 Elasticsearch 来存储,所以,首先安装 es 和 es-head。
es 安装命令:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e
"discovery.type=single-node" elasticsearch:7.1.0
安装好后
可视化工具有三种安装方式:
- 直接下载软件安装
- 通过 Docker 安装
- 安装 Chrome/Firefox 插件(公众号后后台回复 es-head ,获取 Chrome 插件的离线包)
这里采用第 3 种方式。
RabbitMQ 安装
Zipkin 安装:
docker run -d -p 9411:9411 --name zipkin -e ES_HOSTS=192.168.91.128 -e STORAGE_TYPE=elasticsearch -e ES_HTTP_LOGGING=BASIC -e RABBIT_URI=amqp://guest:guest@192.168.91.128:5672 openzipkin/zipkin
ES_HOSTS:es 的地址
STORAGE_TYPE:数据存储方式
RABBIT_URI:要连接的 Rabbit 的地址
实践
首先来创建一个Zipkin项目,添加web,sleuth,zipkin,rabbitmq,stream
项目创建好后,配置zipkin和rabbitmq
spring.application.name=zipkin01
# 开启链路追踪
spring.sleuth.web.client.enabled=true
# 配置采样比例,默认为 0.1 也就是说10条消息会有一条消息会存起来
spring.sleuth.sampler.probability=1
# zipkin 地址
spring.zipkin.base-url=http://192.168.91.128:9411
# 开启 zipkin
spring.zipkin.enabled=true
# 追踪消息的发送类型
spring.zipkin.sender.type=rabbit
spring.rabbitmq.host=192.168.91.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
接下来提供一个测试的 HelloController:
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/hello")
public String hello(String name) {
logger.info("zipkin01-hello");
return "hello " + name + " !";
}
}
然后再创建一个 zipkin02,和 zipkin01 的配置基本一致。