zipkin+elasticsearch全链路跟踪(springcloud)
来源:互联网 发布:apk优化 编辑:程序博客网 时间:2024/05/21 03:28
公司最近搭建springcloud架构,我在做sleuth+zipkin做链路跟踪时发现zipkin将trace存在内存中,而一旦访问量上去,zipkin就容易被压崩,网上搜索资料发现基本都是kafka+zk+elasticsearch做解决方案的,如图
这种方案在各种springcloud书上和各种文章上有很多说明,再次不多做叙述,而我没有采用这个方案,第一是觉得无端侵入kafka或者其他消息队列和zk,略有些重,以kafka为例,吞吐量基本是每秒百万级数的,而做链路跟踪时本身就是异步写入的,所以觉得再应用消息队列意义不大(当然了,使用消息队列可以解耦)第二是想应用eureka的注册发现机制,在链路调用时用Thrift写tracer传入zipkin,可以做集群部署提高可用性。综合考虑下决定使用zipkin,内存使用elasticsearch做存储,不使用过多使用中间件,配置和代码如下:
server端
pom.xml
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin</artifactId><version>1.28.1</version></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-server</artifactId><version>1.28.1</version></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-autoconfigure-ui</artifactId><version>1.28.1</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId><version>1.23.0</version><optional>true</optional></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
application.properties
server.port=63500spring.sleuth.enabled=false#采样率,推荐0.1,百分之百收集的话存储可能扛不住spring.sleuth.sampler.percentage=1zipkin.storage.StorageComponent=elasticsearchzipkin.storage.type=elasticsearch#可以做集群,我用的本地测试没有部署elastic集群zipkin.storage.elasticsearch.hosts=127.0.0.1:9200zipkin.storage.elasticsearch.cluster=elasticsearchzipkin.storage.elasticsearch.index=zipkinzipkin.storage.elasticsearch.index-shards=5zipkin.storage.elasticsearch.index-replicas=1maxHttpHeaderSize=8192
ZipkinApplication.java
@SpringBootApplication@EnableZipkinServer@EnableAutoConfigurationpublic class ZipkinApplication {public static void main(String[] args) {SpringApplication.run(ZipkinApplication.class, args);}}
client端
pom文件:加入
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sleuth-zipkin</artifactId></dependency>
application.properties:加入
spring.zipkin.base-url=http://127.0.0.1:63500spring.sleuth.sampler.percentage=1.0
补充:链路跟踪基本就差不多了,另外需要配合日志收集可以考虑配合ELK等做日志收集分析,需要用EUREKA做服务治理也可以补上服务发现等。(有问题意见欢迎补充)
阅读全文
0 0
- zipkin+elasticsearch全链路跟踪(springcloud)
- SpringCloud Zipkin
- Java分布式跟踪系统Zipkin(一):初识Zipkin
- Java分布式跟踪系统Zipkin(七):Zipkin源码分析-Zipkin的源码结构
- 分布式跟踪系统:Zipkin
- Java分布式跟踪系统Zipkin(八):Zipkin源码分析-KafkaCollector
- 分布式跟踪系统(一):Zipkin的背景和设计
- 微服务之分布式跟踪系统(springboot+zipkin)
- 分布式跟踪系统(二):Zipkin的Span模型
- 微服务之分布式跟踪系统(springboot+zipkin)
- 微服务之分布式跟踪系统(springboot+zipkin+mysql)
- 分布式跟踪系统(一):Zipkin的背景和设计
- SpringBoot微服务之分布式跟踪系统(springboot+zipkin)
- 分布式跟踪系统(一):Zipkin的背景和设计
- 分布式跟踪系统(一):Zipkin的背景和设计
- 分布式跟踪系统(一):Zipkin的背景和设计
- 分布式跟踪系统(二):Zipkin的Span模型
- SpringBoot微服务之分布式跟踪系统(springboot+zipkin)
- 程序员的自我修养--可执行文件的装载与进程
- 剑指offer 二维数组的查找
- 位操作算法基本操作1
- 让你的 WordPress 网站更安全的5 个方法
- java String[] args理解
- zipkin+elasticsearch全链路跟踪(springcloud)
- jenkins+selenium grid实现分布式自动化测试
- 【功能笔记】Ubuntu查看系统资源占用(内存,cpu和进程) {转载}
- php get url
- Thread必须知道的几个概念
- Combinatorics——HDUOJ 1294
- 用geotools自己写WMS服务
- CSS中块级元素(block element)和行内元素/内联元素(inline element)
- ArrayList中toArray(T[] a)方法分析