原创

Spring Cloud 2 集成Zipkin server方案(完成)

温馨提示:
本文最后更新于 2019年10月09日,已超过 1,660 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

该篇文章基于上次没有完成的部分说起(Spring Cloud 2 集成Zipkin server方案(第一阶段))。

之前Simon已经大概说了一下背景,因为springboot默认使用了tomcat作为WEB容器,而zipkin在2.7之后使用了armeria替代Tomcat,这样,按照上一次我们的配置,会出现服务启动后,springboot中的tomcat和armeria同时启动的问题,这样就会有两个服务端口,即springcloud一个服务端口,zipkin-server一个服务端口。

原来计划将zipkin-server集成的armeria尝试剔除掉,改用springboot的tomcat,但是,经过代码分析发现,在不改动源码的情况下,zipkin的配置注解已经强制使用armeria,所以,只能考虑将springboot中的tomcat剔除。

配置如下:

pom.xml文件中,剔除spring-boot-starter-web的依赖。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>


yml文件中,端口配置使用server.port的,这样服务启动只需要一个端口即可。

armeria:
ports:
- port: ${server.port}
protocols:
- http
gracefulShutdownQuietPeriodMillis: -1
gracefulShutdownTimeoutMillis: -1

增加如下配置,剔除springcloud的web应用

spring:
main:
web-application-type: none

其余的跟前一篇文章保持一致即可。

完整的application.yml文件配置如下:

server:
#服务端口
port: 8007

armeria:
ports:
- port: ${server.port}
protocols:
- http
gracefulShutdownQuietPeriodMillis: -1
gracefulShutdownTimeoutMillis: -1

spring:
application:
name: dc-sleuth-server
datasource:
url: jdbc:mysql://127.0.0.1:3306/zipkin?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
username: sit_mysql_user
password: 123654
driver-class-name: com.mysql.jdbc.Driver

main:
allow-bean-definition-overriding: true
web-application-type: none

zipkin:
collector:
#消息队列配置
rabbitmq:
addresses: 127.0.0.1:5672
username: guest
password: guest
virtual-host: /
queue: zipkin
storage:
type: elasticsearch
elasticsearch:
hosts: 10.239.32.47:9200
cluster: elasticsearch
index: zipkin
index-shards: 1
index-replicas: 1

eureka:
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
metadata-map:
cluster: dc
client:
service-url:
defaultZone: http://localhost:8001/eureka


# 加载所有的端点/默认只加载了 info / health
management:
endpoints:
web:
exposure:
include: "*"
metrics:
web:
server:
auto-time-requests: false
endpoint:
health:
show-details: always
enabled: true


看下启动的效果:


这个是zipkin-UI打开的效果:



然后,我们再看下springcloud是的注册是否正常。


OK,这就是目前springcloud2集成zipkin-server 2.7+的方案。


正文到此结束
本文目录