Zipkin+Sleuth 链路追踪整合
1.Zipkin
是一个开放源代码分布式的跟踪系统
它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现
每个服务向zipkin报告计时数据,zipkin会根据调用关系通过Zipkin UI生成依赖关系图,展示多少跟踪请求经过了哪些服务,该系统让开发者可通过一个web前端轻松地收集和分析数据,可非常方便的监测系统中存在的瓶颈
Zipkin提供了可插拔数据存储方式:In-Memory、MySql、Cassandra以及Elasticsearch
生产数据量大的情况则推荐使用Elasticsearch
2.Spring Cloud Sleuth
为服务之间的调用提供链路追踪,通过使用Sleuth可以让我们快速定位某个服务的问题
分布式服务追踪系统包括:数据收集、数据存储、数据展示
通过Sleuth产生的调用链监控信息,让我们可以得知微服务之间的调用链路,但是监控信息只输出到控制台不太方便查看
Sleuth和Zipkin结合,将信息发送到Zipkin,利用Zipkin的存储来存储信息,利用Zipkin UI来展示信息
1.使用curl下载
curl -sSL https://zipkin.io/quickstart.sh | bash -s
下载了文件zipkin-server-2.19.1-exec.jar
2.启动服务
java -jar zipkin-server-2.19.-exec.jar
通过http://localhost:9411可访问zipkin的监控页面
因为还没有客户端,所以还没有数据
默认启动方式会将日志数据存在内存中,一旦服务重启会清空数据,可以使用es进行持久化存储
3.应用
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring-cloud-dependencies
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
配置
spring.application.name=demo
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0
样本采集量,默认为0.1,为了测试修改为1,正式环境一般使用默认值
package com.example.demo.controller; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class Demo { @RequestMapping("hello")
public String hello() {
return "Hello World!";
}
}
运行示例,在postman里执行http://localhost:8080/hello
再查看http://localhost:9411,出现了刚刚访问的服务,选择并点击追踪
选择demo服务,点击Find Traces
点击调用记录查看详情页面,可以看到每一个服务所耗费的时间和顺序
3.通过ElasticSearch进行存储
ElasticSearch安装启动(安装说明)
zipkin服务启动命令改为
java -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://localhost:9200 -jar zipkin-server-2.19.1-exec.jar
zipkin会在es中创建以zipkin开头日期结尾的index,并且默认以天为单位分割
使用kibana查看数据(kibana使用)
https://zipkin.io/pages/quickstart.html
最新文章
- jQuery.extend和jQuery.fn.extend的区别【转】
- web.config中的HttpCookie.HttpOnly属性
- BZOJ1407 [Noi2002]Savage
- h5 canvas 小球移动
- 九度oj 1349 数字在排序数组中出现的次数
- heritrix启动问题修正
- NodeJS - Express 4.0下使用app.dynamicHelpers错误
- ASP.NET 常识
- POJ 1811 Prime Test 素性测试 分解素因子
- tree conflict svn 怎么解决
- 二维数组int[3][2]在内存中的分布方式
- 05_Linux网络配置及CRT远程
- Jenkins redeploy artifacts
- 20165312 2017-2018-2 《JAVA程序设计》第5周学习总结
- PAT 1013 数素数
- Redis select选择数据库
- BZOJ1407: [Noi2002]Savage exgcd
- Discuz x3.2利用阿里云cdn处理https访问亲测教程
- ListView的优化问题
- Learning PHP Design Patterns
热门文章
- CSS float 父元素高度自适应
- C 语言项目中.h文件和.c文件的关系
- POJ2139-Six Degrees of Cowvin Bacon-(Floyd_Warshall)
- Good Article Good sentence HDU - 4416 (后缀自动机)
- BZOJ 1818: [Cqoi2010]内部白点 扫描线+树状数组
- java 参数传递、对象、封装
- luogu_1156: 垃圾陷阱
- P3350 [ZJOI2016]旅行者
- 一起学Makefile(六)
- 在itop4412移植linux4.14和设备树遇到的问题及解决