失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Spring Cloud 全链路追踪实现

Spring Cloud 全链路追踪实现

时间:2018-12-21 16:37:29

相关推荐

Spring Cloud 全链路追踪实现

1 简介

在微服务架构下存在多个服务之间的相互调用,当某个请求变慢或不可用时,我们如何快速定位服务故障点呢?链路追踪的实现就是为了解决这一问题,本文采用 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 界面,可以实现汇总、分析和搜索重要数据日志。

2 快速上手

2.1 Zipkin 服务端

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

1)添加依赖

<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>2.11.8</version></dependency><dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> <version>2.11.8</version></dependency><dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-collector-rabbitmq</artifactId> <version>2.11.8</version></dependency><dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId> <version>2.8.4</version></dependency>

2)添加配置

spring: application: name: zipkin-serverserver: port: 8033eureka: client: serviceUrl: defaultZone: http://localhost:8088/eureka/ instance: prefer-ip-address: truemanagement: metrics: web: server: auto-time-requests: falsezipkin: collector: rabbitmq: addresses: 192.168.233.128 port: 5672 username: zipkin password: zipkin virtual-host: vh1 queue: zipkin storage: StorageComponent: elasticsearch type: elasticsearch elasticsearch: hosts: 192.168.233.171:9200 cluster: elasticsearch index: zipkin index-shards: 5 index-replicas: 1

3)启动类

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

访问 http://localhost:8033/zipkin/ ,如图所示:

2.2 Zipkin 客户端

1)添加依赖

<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>

2)添加配置

spring: sleuth: sampler: probability: 1.0 zipkin: sender: type: RABBIT rabbitmq: addresses: 192.168.233.128 port: 5672 username: zipkin password: zipkin virtual-host: vh12.3 测试

1)访问 Zipkin 客户端服务,如我本地 user-server http://localhost:8061/user/findAll

2)点 “Find Traces”,看一下 Zipkin 服务端,如图所示:

3)访问 http://192.168.233.171:5601 ,看一下 Kibana,配置一个index pattern,如图所示:

4)修改默认时间格式,如图所示:

5)看一下效果

如果觉得《Spring Cloud 全链路追踪实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。