SpringCloud整合分布式服务跟踪zipkin

一、zipkin

zipkin是Twitter的一个开源项目,它基于Google Dapper实现。咱们可使用它来收集各个服务器上请求链路的跟踪数据,并经过它提供的REST API接口来辅助咱们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的API接口以外,它也提供了方便的UI组件来帮助咱们直观的搜索跟踪信息和分析请求链路明细,好比:能够查询某段时间内各用户请求的处理时间等。java

zipkin的架构图以下:git

由上面的架构图能够看出,zipkin有四个核心组件:

  • Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为zipkin内部处理的Span格式,以支持后续的存储、分析、展现等功能。
  • Storage:存储组件,它主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中,咱们也能够修改此存储策略,经过使用其余存储组件将跟踪信息存储到数据库中,目前支持的数据库有Mysql、Cassandra和Elasticsearch。
  • API:API组件,提供给UI组件,展现跟踪信息。
  • UI:UI组件,基于API组件实现的上层应用。经过UI组件用户能够方便而有直观地查询和分析跟踪信息。

二、构建zipkin-server

目前最新版的zipkin-server,是直接到官网获取最新可执行的jar,而后直接运行该jar文件,例如:github

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
复制代码

也能够用docker启动,在此经过docker来启动zipkin-server服务。spring

因为在此存储组件使用Elasticsearch,因此先经过docker将Elasticsearch启动,执行以下命令:sql

docker run -d -p 9200:9200 --name es elasticsearch:6.6.0
复制代码

若是在启动elasticsearch的时候出现以下错误:docker

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
复制代码

能够先执行以下命令解决:数据库

sysctl -w vm.max_map_count=262144
复制代码

接下来,启动zipkin-server服务,执行以下命令:浏览器

docker run -d -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.208.134:9200 -p 9411:9411 --name zipkin openzipkin/zipkin:2.12.1
复制代码

经过浏览器打开http://192.168.208.134:9411页面,若是出现以下界面,则表示zipkin-server服务启动成功了:bash

三、微服务集成zipkin

在原来微服务的pom文件中,添加以下的依赖:服务器

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
复制代码

而后在application.yml文件须要新增以下配置:

spring:
  zipkin:
    base-url: http://192.168.208.134:9411
  sleuth:
    sampler:
      percentage: 1
复制代码

其中spring.sleuth.sampler.percentage表示收集跟踪信息的比例,1表示所有收集,它的值的范围是0-1之间的。

四、部署zipkin-dependencies

因为新版本当中,若是须要查看各个微服务之间的依赖关系,则必须要部署zipkin-dependencies,此处仍是经过docker来部署,因为zipkin-dependencies运行一次就会结束,因此可让其每小时运行一次,即:

docker run -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.208.134:9200 openzipkin/zipkin-dependencies:2.0.4 sh -c 'crond -f'
复制代码

五、参考资料

zipkin.io/

github.com/openzipkin/…

github.com/openzipkin/…

关注我

以你最方便的方式关注我: 微信公众号:

架构与我
相关文章
相关标签/搜索