VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • SpringCloud 入门实战(12)--Zipkin(2)--安装使用

Zipkin 的介绍参见上一篇文章:SpringCloud 入门实战(11)--Zipkin 使用一(Zipkin 简介)。本文主要介绍 Zipkin 的基本使用,文中所使用到的软件版本:Zipkin 2.23.2、Spring Boot 2.3.11.RELEASE、Spring Cloud Hoxton.SR8、jdk1.8.0_181。

1、Zipkin 安装

1.1、下载应用包

 在能连外网的机器上执行:

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

执行命令完成后,就会下载 Zipkin 的应用包:zipkin.jar。

1.2、存储方式

Zipkin 可以把数据保存在内存、MySQL、Cassandra、Elasticsearch 中,详细的配置说明可参考官方说明:https://github.com/openzipkin/zipkin/tree/master/zipkin-server。

1.2.1、数据保存在内存中

参数:

MEM_MAX_SPANS:保存的最大 span 的数量,超过了会把最早的 span 删除

启动命令例子:

MEM_MAX_SPANS=1000000 java -Xmx1G -jar zipkin.jar

1.2.2、数据保存在 MySQL 中

该种存储方式已不推荐使用,在数据量大的时候,查询较慢。

数据库初始化脚本:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

 mysql.sql

参数:

MYSQL_DB:MySQL 数据库名,默认为 zipkin
MYSQL_USER:用户名
MYSQL_HOST:主机地址
MYSQL_TCP_PORT:端口
MYSQL_MAX_CONNECTIONS:最大连接数据,默认 10
MYSQL_USE_SSL:是否使用ssl,需要 javax.net.ssl.trustStore 和 javax.net.ssl.trustStorePassword, 默认 false
MYSQL_JDBC_URL:自己设置 JDBC 的 url

启动命令例子:

MYSQL_USER=root MYSQL_PASS=123456 MYSQL_HOST=10.40.96.32 MYSQL_TCP_PORT=3306 java -jar zipkin.jar

1.3、采集方式

1.3.1、HTTP Collector

HTTP 方式默认开启,通过 POST /api/v1/spans 和 POST /api/v2/spans 地址接受数据;相关配置如下:

环境变量 属性 描述
COLLECTOR_HTTP_ENABLED zipkin.collector.http.enabled 是否启用 HTTP 方式采集数据,默认 true

1.3.2、Kafka Collector

当 KAFKA_BOOTSTRAP_SERVERS 不为空时该方式生效;相关配置如下:

环境变量 对应 kafka 消费者配置 描述
COLLECTOR_KAFKA_ENABLED   是否启用 Kafka 方式采集数据,默认 true
KAFKA_BOOTSTRAP_SERVERS bootstrap.servers Kafk 地址
KAFKA_GROUP_ID group.id 消费者所属消费者组,默认 zipkin
KAFKA_TOPIC   主题,多个以逗号分隔,默认 zipkin
KAFKA_STREAMS   消费者的线程数,默认 1

启动命令例子:

KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092 java -jar zipkin.jar

2、Zipkin 使用

这里主要介绍在 Spring Cloud 中集成 Zipkin;使用起来还是很方便的,只需引入相关依赖并配置 Zipkin 的地址即可,然后就会把请求的监控数据发往 Zipkin。

2.1、Http 方式发送数据到 Zipkin

2.1.1、引入依赖

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

2.1.2、application.yml

配置 Zipkin 地址

spring:
  zipkin:
    base-url: http://10.40.100.60:9411/
    enabled: true

2.2、Kafka 方式发送数据到 Zipkin

启动 Kafka 并创建 Topic:zipkin;配置 Zipkin 的服务端从 Kafka 接受数据;参见 1.3.2

2.2.1、引入依赖

复制代码
<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.1.2、application.yml

复制代码
spring:
  zipkin:
    enabled: true
    sender:
      type: kafka
    kafka:
      topic: zipkin
  kafka:
    bootstrap-servers: 10.40.100.69:9092
复制代码

2.3、监控 MySQL 操作

这里假设在 2.1 Spring Cloud 项目的基础再进一步对 MySQL 的操作进行监控。

2.3.1、引入依赖

<dependency>
    <groupId>io.zipkin.brave</groupId>
    <artifactId>brave-instrumentation-mysql8</artifactId>
    <version>5.13.3</version>
</dependency>

2.3.2、jdbc url 中增加参数

在 jdbc url 中添加拦截器和服务名:

queryInterceptors=brave.mysql8.TracingQueryInterceptor&exceptionInterceptors=brave.mysql8.TracingExceptionInterceptor&zipkinServiceName=myDatabaseService

例如,配置如下的数据源:

复制代码
spring:
  datasource:
    druid:
      primary:
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://10.40.94.23:3306/test?useUnicode=true&characterEncoding=UTF-8&queryInterceptors=brave.mysql8.TracingQueryInterceptor&exceptionInterceptors=brave.mysql8.TracingExceptionInterceptor&zipkinServiceName=myDB
        username: root
        password: 123456
        initialSize: 2
        minIdle: 2
        maxActive: 5
        validationQuery: SELECT 1
        testWhileIdle: true
        testOnBorrow: true
        testOnReturn: false
        maxWait: 6000
        filters: wall,slf4j
复制代码

3、测试

前台访问 scdemo-client 服务,在 scdemo-client 中又调用 scdemo-server 服务,在 scdemo-server 执行了两次查询 MySQL 的操作。

 出处:https://www.cnblogs.com/wuyongyin/p/14889785.html


相关教程