SpringCloud使用Zipkin

本文介绍了如何下载和启动Zipkin服务,包括通过命令行启动以及在微服务中集成Zipkin以追踪调用链路。还详细讲解了如何配置Zipkin使用RabbitMQ和MySQL进行数据持久化。

一、zipkin服务

1、下载

下载地址:https://github.com/openzipkin/zipkin

2、启动

(1)cmd进到zipkin目录
(2)java -jar zipkin-server-2.24.2-exec.jar

访问:http://127.0.0.1:9411

二、微服务集成zipkin

这里演示两个服务:intr服务通过feign调用calculate服务

intr服务和calculate服务都需要以下依赖和配置

1、依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

2、配置

spring:
  zipkin:
    #zipkin服务所在地址
    base-url: http://127.0.0.1:9411/
    sender:
      # web 默认,通过HTTP方式发送链路追踪信息到Zipkin
      # kafka/rabbit 客户端将踪迹日志数据传递到mq进行中转
      type: web
    #配置采样百分比
    sleuth:
      sampler:
        probability: 1 # 将采样比例设置为 1.0,也就是全部都需要。默认是0.1也就是10%,一般情况下,10%就够用了

3、测试

启动intr和calculate,调intr的接口

查看zipkin界面

 SHOW按钮 点进去

三、zipkin使用RabbitMq

1、zipkin启动

启动参数里面需要加上RabbitMq地址,RabbitMq相关参数如下

Property

Environment Variable

Description

zipkin.collector.rabbitmq.concurrency

RABBIT_CONCURRENCY

Number of concurrent consumers. Defaults to 1

zipkin.collector.rabbitmq.connection-timeout

RABBIT_CONNECTION_TIMEOUT

Milliseconds to wait establishing a connection. Defaults to 60000 (1 minute)

zipkin.collector.rabbitmq.queue

RABBIT_QUEUE

Queue from which to collect span messages. Defaults to zipkin

zipkin.collector.rabbitmq.uri

RABBIT_URI

RabbitMQ URI spec-compliant URI, ex. amqp://user:pass@host:10000/vhost

如果你没有修改rabbit默认配置(默认5672端口,用户名密码都是guest) ,也可以只指定RABBIT_ADDRESSES这一个参数。

Property

Environment Variable

Description

zipkin.collector.rabbitmq.addresses

RABBIT_ADDRESSES

指定RabbitMQ地址 例如. localhost:5672,127.0.0.1:5673

zipkin.collector.rabbitmq.password

RABBIT_PASSWORD

RabbitMQ登录密码(默认guest)

zipkin.collector.rabbitmq.username

RABBIT_USER

RabbitMQ登录用户名(默认guest)

zipkin.collector.rabbitmq.virtual-host

RABBIT_VIRTUAL_HOST

RabbitMQ virtual host to use. Defaults to /

zipkin.collector.rabbitmq.use-ssl

RABBIT_USE_SSL

Set to true to use SSL when connecting to RabbitMQ

 例如:

java -jar zipkin-server-2.24.2-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672 --RABBIT_USER=guest --RABBIT_PASSWORD=guest

用户名密码本来就是guest的时候,可以省略,直接这样即可:

java -jar zipkin-server-2.24.2-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672

或者

java -jar zipkin-server-2.24.2-exec.jar --zipkin.collector.rabbitmq.addresses=127.0.0.1:5672

当Zipkin成功启动以后,在rabbitmq会有一个叫做zipkin的队列:

 2、配置

intr和calculate,这个type改成rabbit即可

 3、测试

启动intr和calculate,调intr的接口,同上

四、持久化到mysql

Zipkin 默认是将监控数据存储在内存的,如果 Zipkin 挂掉或重启的话,那么监控数据就会丢 失。所以如果想要搭建生产可用的 Zipkin,就需要实现监控数据的持久化。而想要实现数据 持久化,自然就是得将数据存储至数据库。好在 Zipkin 支持将数据存储至:

      内存(默认)

      MySQL

      Elasticsearch

     Cassandra

Zipkin 支持的这几种存储方式中,内存显然是不适用于生产的。而使用MySQL 的话,当数据量大时,查询较为缓慢,也不建议使用。Twitter 官方使用的是 Cassandra作为 Zipkin 的存储数据库,但国内大规模用 Cassandra 的公司较少,而且 Cassandra 相关文档也不多。Zipkin-server不处理跟踪数据的保留管理。使用ElasticSearch推荐的工具管理数据保留或群集 会无限增长!(这使用Elasticsearch 5 + 功能) 综上,故采用 Elasticsearch 是个比较好的选择。

我这里为了方便,演示持久化到mysql

1、新建数据库

新建数据库zipkin并执行建表脚本

zipkin的初始化建表sql在项目里面有,可以去官网下载:

https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

 2、zipkin启动

启动参数加上:

--MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_DB=zipkin --STORAGE_TYPE=mysql

完整如下:

java -jar zipkin-server-2.24.2-exec.jar --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_DB=zipkin --STORAGE_TYPE=mysql

如果rabbitmq和mysql同时使用:

java -jar zipkin-server-2.24.2-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672 --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_DB=zipkin

3、测试

调接口,查看数据库zipkin的表,发现有数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值