简介

在微服务架构下存在多个服务之间的相互调用,当某个请求变慢或不可用时,我们如何快速定位服务故障点呢?链路追踪的实现就是为了解决这一问题,本文采用Sleuth+Zipkin+RabbitMQ+ES+Kibana实现。

Spring Cloud Sleuth

Trace:从客户端请求到系统边界,再到系统边界返回客户端响应。

Span:每一次调用埋入一个调用记录,即为 “Span”,一系列有序的Span构成一个Trace。

Zipkin

Zipkin 是由Twitter公司开源的一个分布式追踪系统,用于收集服务的定时数据,实现数据的收集、存储、查找和展现。提供了可插拔的数据存储方式:In-Memory、MySql、Cassandra以及Elasticsearch。

RabbitMQ

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

Elasticsearch

Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。

Kibana

Kibana可以为 Logstash 和 ElasticSearch 提供友好的日志分析 Web 界面,可以实现汇总、分析和搜索重要数据日志。

实现

1、Zipkin服务端

创建zipkin-server项目(也可到官方网站:https://zipkin.io/下载jar包直接使用)

依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
  <groupId>io.zipkin.java</groupId>
  <artifactId>zipkin-server</artifactId>
  <version></version>
</dependency>
<dependency>
  <groupId>io.zipkin.java</groupId>
  <artifactId>zipkin-autoconfigure-ui</artifactId>
  <version></version>
</dependency>
<dependency>
  <groupId>io.zipkin.java</groupId>
  <artifactId>zipkin-autoconfigure-collector-rabbitmq</artifactId>
  <version></version>
</dependency>
<dependency>
  <groupId>io.zipkin.java</groupId>
  <artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId>
  <version></version>
</dependency>

配置

spring:
  application:
    name: zipkin-server
server:
  port:
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8088/eureka/
  instance:
      prefer-ip-address: true
management:
  metrics:
    web:
      server:
        auto-time-requests: false
zipkin:
  collector:
    rabbitmq:
      addresses: 192.168.233.128
      port:
      username: zipkin
      password: zipkin
      virtual-host: vh1
      queue: zipkin
  storage:
    StorageComponent: elasticsearch
    type: elasticsearch
    elasticsearch:
      hosts:
      cluster: elasticsearch
      index: zipkin
      index-shards:
      index-replicas: 

启动类

@SpringBootApplication
@EnableEurekaClient
@EnableZipkinServer
public class ZipkinServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(ZipkinServerApplication.class, args);
  }
}

访问

2、Zipkin客户端

依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<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>

配置

spring:
  sleuth:
    sampler:
      probability: 1.0
  zipkin:
    sender:
      type: RABBIT
  rabbitmq:
    addresses: 192.168.233.128
    port:
    username: zipkin
    password: zipkin
    virtual-host: vh1

3、测试:

访问zipkin客户端服务,如我本地user-server

查看zipkin服务端

访问Kibana,配置一个index pattern

修改默认时间格式

看一下效果

END

欢迎关注微信公众号:牧码笔记,时时获取最新技术分享。

Spring Cloud全链路追踪实现(Sleuth+Zipkin+RabbitMQ+ES+Kibana)的更多相关文章

  1. Spring Cloud 全链路追踪实现

    简介 在微服务架构下存在多个服务之间的相互调用,当某个请求变慢或不可用时,我们如何快速定位服务故障点呢?链路追踪的实现就是为了解决这一问题,本文采用Sleuth+Zipkin+RabbitMQ+ES+ ...

  2. spring cloud 系列第7篇 —— sleuth+zipkin 服务链路追踪 (F版本)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.简介 在微服务架构中,几乎每一个前端的请求都会经过多个服务单元协调来提 ...

  3. springCloud的使用08-----服务链路追踪(sleuth+zipkin)

    sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能) zipkin原理:在服务调用的请求和响应中加入ID,表明上下游请求的关系. 利用这些信息 ...

  4. spring cloud 服务链路追踪 skywalking 6.1

    随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了 ...

  5. spring cloud链路追踪组件sleuth和zipkin

    spring cloud链路追踪组件sleuth     主要作用就是日志埋点 操作方法 1.增加依赖             <dependency>      <groupId& ...

  6. Spring Cloud 整合分布式链路追踪系统Sleuth和ZipKin实战,分析系统瓶颈

    导读 微服务架构中,是否遇到过这种情况,服务间调用链过长,导致性能迟迟上不去,不知道哪里出问题了,巴拉巴拉....,回归正题,今天我们使用SpringCloud组件,来分析一下微服务架构中系统调用的瓶 ...

  7. 分布式链路追踪系统Sleuth和ZipKin

    1.微服务下的链路追踪讲解和重要性 简介:讲解什么是分布式链路追踪系统,及使用好处 进行日志埋点,各微服务追踪. 2.SpringCloud的链路追踪组件Sleuth 1.官方文档 http://cl ...

  8. go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)

    目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...

  9. 基于SLF4J的MDC机制和Dubbo的Filter机制,实现分布式系统的日志全链路追踪

    原文链接:基于SLF4J的MDC机制和Dubbo的Filter机制,实现分布式系统的日志全链路追踪 一.日志系统 1.日志框架 在每个系统应用中,我们都会使用日志系统,主要是为了记录必要的信息和方便排 ...

随机推荐

  1. Android中使用ListView实现自适应表格

    GridView比ListView更容易实现自适应的表格,但是GridView每个格单元的大小固定,而ListView实现的表格可以自定义每个格单元的大小,但因此实现自适应表格也会复杂些(格单元大小不 ...

  2. Latex 琐碎

    χ(\chi),Ξ(\Xi),ξ(\xi) 0. 加颜色 x2+y2=z2({\color{Red} {x^2+y^2=z^2}}) Magenta, Cyan, Emerald(宝石绿) 1. 斜杠 ...

  3. WPF:WebBrowser提示 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容

    原文:WPF:WebBrowser提示 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://bl ...

  4. 字符串匹配:从机器到后缀自己主动KMP

    后缀自己主动机(sam)对字符串匹配 ==== 我们已经配置了一个相对较短的模式字符串sam. 为P="abcabcacab", T[1..i]后缀.因此,它是sam最长前缀长度: ...

  5. sdutoj1225--编辑距离(dp:字符串转换)

    编辑距离 nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; padding-right:0 ...

  6. JS-LINQ

    JS中使用LINQ 详细使用方法可找相关资料 文件在这里 引用: <script type="text/javascript" src="@Url.Content( ...

  7. 常用cl编译命令参数解释

    紧接前文,第一行cl命令如下: 1>  cl /c /IC:\...\include /ZI /nologo- /W3 /WX- /sdl /Od /Oy- /D WIN32 /D _DEBUG ...

  8. postgresql 自带函数

    替换函数 SELECT replace('abcdefabcdef', 'cd', 'XX') 得到 abXXefabXXef ------------------------------------ ...

  9. RHEL 6和RHEL 7(CentOS 6和CentOS 7)恢复ROOT密码

    RedHat 6恢复Root密码: 1.启动RedHat 6的时候在这个界面按任意键 2.出现如下界面,按 e 3.出现如下界面,选择第二个--kernel,然后再按 e 4.出现如下界面,输入 空格 ...

  10. Boost的某些库还是需要生成二进制的库的,必须安装才行,以及使用库的方法

    头文件就是库使用者最常问的问题就是“我该怎么安装Boost”,这个也是我一开始最关心的问题,Boost这点做的很好,将大部分实现都封装在头文件里,所以对于一些基本的Boost库,其实是不需要安装的,只 ...