学习笔记:微服务-23 调用链路监控spring cloud zikpin+kafka+mysql

微服务多了,A服务调用B服务,B服务调用C服务,关系的追踪,检查各环节耗时等就显得重要,spring cloud zikpin 就为此而生

借用一张图理解

多个微服务把追踪信息发给kafka,zipkin获取kafka管道信息,ui展示给浏览器,并把获取的信息保存到mysql持久化。

一、zipkin server安装配置

1. 获取服务打包的可执行jar文件

代码及配置参见网址 :https://github.com/openzipkin/zipkin

因为zipkin 在新版本不再建议用户自己编译配置,提供一个直接生成并下载jar文件的方式

$ curl -sSL https://zipkin.io/quickstart.sh | bash -s

执行后可以看到目录下有了文件 zikpin.jar

$ java -jar zipkin.jar

即可在浏览器查看服务,默认是9411端口

是不是很简单。

2. 因为需要使用kafka,先启动kafka,如何安装kafka见我的另外文章。

cd  kafka_2.12-2.1.0

bin/zookeeper-server-start.sh config/zookeeper.properties &

bin/kafka-server-start.sh config/server.properties &

3.创建数据库和表

方法参见官方github网址:https://github.com/openzipkin/zipkin/tree/master/zipkin-storage/mysql-v1

[root@centos7 ~]# mysql -uroot -p -e "SET GLOBAL innodb_file_format=Barracuda"
[root@centos7 ~]# mysql -uroot -p -e "show global variables like 'innodb_file_format'"
[root@centos7 ~]# mysql -uroot -p -e "create database if not exists zipkin"
下载 https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql
[root@centos7 ~]# mysql -uroot -p  -Dzipkin < mysql.sql

创建后进入mysql可以看到如下表。

MariaDB [zipkin]> show tables;
+---------------------+
| Tables_in_zipkin    |
+---------------------+
| zipkin_annotations  |
| zipkin_dependencies |
| zipkin_spans        |
+---------------------+
4. 在做好以上准备后,重新运行 zikpin.jar, 带上环境变量

$KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092  STORAGE_TYPE=mysql MYSQL_USER=root MYSQL_PASS=123  java -jar zipkin.jar

需要指定其他环境变量参见官网,比如mysql的详细配置

* `MYSQL_DB`: The database to use. Defaults to "zipkin".
* `MYSQL_USER` and `MYSQL_PASS`: MySQL authentication, which defaults to empty string.
* `MYSQL_HOST`: Defaults to localhost
* `MYSQL_TCP_PORT`: Defaults to 3306
* `MYSQL_MAX_CONNECTIONS`: Maximum concurrent connections, defaults to 10
* `MYSQL_USE_SSL`: Requires `javax.net.ssl.trustStore` and `javax.net.ssl.trustStorePassword`, defaults to false.

二、被监控微服务配置 (zikpin client)

1. pom.xml 加入:

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

<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>

2. application.properties 增加

spring.zipkin.enabled=true  
spring.zipkin.sender.type=kafka
spring.kafka.bootstrap-servers=centos7.linbsoft.com:9092
spring.zipkin.base-url=http://centos7.linbsoft.com:8441
spring.sleuth.sampler.probability=1.0    

其中 spring.sleuth.sampler.probability=1.0 表示监控100%的调用,实际应用应该小一点,比如 0.1 表示10%的调用会被监控,实际使用100%可能会把mysql挤破了。

客户端微服务修改后重启即可。

三、测试

1. kafka查看topic

 bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list

可以看到有个zipkin名字的topic

2.启动一个kafka消费者监控信息

bin/kafka-console-consumer.sh --bootstrap-server centos7.linbsoft.com:9092 --topic zipkin --from-beginning

3. 浏览器 调用zikpin-client微服务(即按上面二中安装配置了的微服务)

4.再在浏览器中监控zikpin服务器

可以看到有数据了

5. 查看某条记录的依赖图,可以看到微服务间调用关系

6.查看上面2中的kafka的监控窗口

7.查看数据库

猜你喜欢

转载自blog.csdn.net/oLinBSoft/article/details/86653142
今日推荐