Zipkin是SpringCloud官方推荐的一款分布式链路监控的组件,使用它我们可以得知每一个请求所经过的节点以及耗时等信息,并且它对代码无任何侵入,我们先来看一下Zipkin给我们提供的UI界面都是提供了哪些信息。

  1. zipkin首页为我们提供了对于调用链路的搜索查询及展示的功能
  2. 第二个选项卡里提供了历史数据的导入功能
  3. 第三个选项卡里展示了各个微服务之间的关系
  4. 我们再次回到首页,我们点开一个调用链路之后就会看到此次链路调用的详情
  5. 现在我们点开详情中的一个service,可以看到此次调用在这个微服务中的详细信息。

如何使用Zipkin

虽然在SpringBoot2.0以后官方不推荐我们自定义Zipkin服务端,而是使用官方提供的jar包。但是作为开发者来说,如果不能去看一看源码,修改一些自定义的配置的话就好像生命掌握在别人手里一样,哪天碰到一个莫名奇妙的bug可就不开心了。所以本例中使用zipkin最新2.11.8release版本来构建一个服务端

1. 创建一个微服务 cloud-demo-zipkin-server
1. pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2. yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server:
port: 9411
spring:
application:
name: zipkin-server management:
metrics:
web:
server:
auto-time-requests: false
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
3. 启动注解
1
2
3
@EnableEurekaClient
@EnableZipkinServer
@SpringBootApplication

需要注意的是EnableZipkinServer注解是zipkin2.server.internal包下的。

2. 创建一个微服务 cloud-demo-zipkin-server

改造一下我们原先的两个微服务:cloud-demo-consumer-feign-hystrix,cloud-demo-provider

首先为它们都加上zipkin客户端的依赖

1
2
3
4
5
6
7
8
<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>

yml中指定zipkin-server的url,并且指定日志发送方式为web

1
2
3
4
5
spring:
zipkin:
base-url: http://localhost:19411
sender:
type: web
3. 查看结果

此时我们所有的准备工作已经做好了,我们启动Eureka、zipkin、cloud-demo-consumer-feign-hystrix、cloud-demo-provider几个微服务,调用几次cloud-demo-consumer-feign-hystrix的user/getUser接口。然后访问http://localhost:9411应该就可以看到zipkin的UI界面。

这个时候可能有的童鞋看到有数据,有的没有数据,这个不是你的配置错了,而是因为zipkin客户端默认收集10%的数据,你可以使用下方的配置更改zipkin的采样频率。

1
2
3
4
spring:
sleuth:
sampler:
probability: 1.0

GitHub地址:https://github.com/shiyujun/spring-cloud-demo。代码所在模块:cloud-demo-zipkin-server,cloud-demo-consumer-feign-hystrix,cloud-demo-provider

如果对您有所帮助,请记得帮忙点一个star哦

本文出自http://zhixiang.org.cn,转载请保留。

每天学点SpringCloud(十二):Zipkin全链路监控的更多相关文章

  1. springcloud(十二):Ribbon客户端负载均衡介绍

    springcloud(十二):Ribbon客户端负载均衡介绍 Ribbon简介 使用分布式微服务脚骨的应用系统,在部署的时候通常会为部分或者全部微服务搭建集群环境,通过提供多个实例来提高系统的稳定型 ...

  2. 全链路监控系统开源Pinpoint入门视频教程(最新版本1.8)

    pinpoint支持的模块 源码:https://github.com/naver/pinpoint技术概述:https://skyao.gitbooks.io/learning-pinpoint/c ...

  3. 每天学点SpringCloud(二):服务注册与发现Eureka

    相信看过 每天学点SpringCloud(一):简单服务提供者消费者调用的同学都发现了,在最后消费者调用提供者的时候把提供者的地址硬编码在了代码中,这样的方式肯定是不行的,今天,我们就是要Eureka ...

  4. springcloud(十二):使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪

    随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位 ...

  5. 从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包

    wireshark:是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前 ...

  6. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十二):链路追踪(Sleuth、Zipkin)

    在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个 ...

  7. Linux就该这么学 20181009(第十二章 SAMBA)

    参考链接https://www.linuxprobe.com Samba 跨平台的文件共享 linux-linux linux-windows /etc/samba/smb.conf 里面 []这个名 ...

  8. 菜鸟学SSH(十二)——Hibernate与Spring配合生成表结构

    前几天向大家介绍了一种用工具类生成数据表的方法,只是之前的方法须要使用一个跟项目关系不大的工具类.不免让人认为有些多余,所以呢.今天再向大家介绍一种方法.即Hibernate与Spring配合生成表结 ...

  9. 一步一步学Vue(十二)

    为了提升代码的逼格,之后代码改为Vue文件组件,之前代码虽然读起来容易理解,而且适合在小的项目中使用,但是有如下缺点: 全局定义(Global definitions) 强制要求每个 componen ...

随机推荐

  1. CMakeLists 的使用,大型工程使用cmake 的构件过程

    CMakeLists 的使用,大型工程使用cmake 的构件过程 CMakeLists_1 PROJECT(hello_2) cmake_minimum_required(VERSION 2.8) # ...

  2. PEP8 规范

    Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style ...

  3. 爬坑记-tomcat 项目启动两次的的解决

    项目就启动了两次,程序倒是正常运行,关键我里边写了个while 循环,不能让它启动两次啊 百度了一下,有人说是tomcat server.xml或者tomcat新建服务的时候设置出了问题 ....最终 ...

  4. HDU2034

    #include <bits/stdc++.h> using namespace std; int main() { int n,m,val; set<int>::iterat ...

  5. 教你如何用ps制作紫色光斑效果

    1.新建800x800画布 2.设置前景色和背景色分别为#b38adb ,#212121;执行"滤镜"-"渲染"-"云彩"操作 3.执行&q ...

  6. 快速实现抖音的分享&登录(android)

    快速实现抖音分享与第三方登录 准备工作 1.注册抖音的key到抖音开放平台,点击这里查看步骤: 2.集成ShareSDK到Mob官网文档页面查看即可,点击这里查看集成: 业务代码 分享要求: 视频: ...

  7. HDU-4763 Theme Section KMP

    题意:求最长的子串E,使母串满足EAEBE的形式,A.B可以任意,并且不能重叠. 题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4763 思 ...

  8. web前端开发过程遇到的问题及解决方式(一)

    1. CSS样式优先级问题 <style> .className input(可换其他元素){ type:val !important; } </style> <body ...

  9. 别人的Linux私房菜(14)Linux账号管理和ACL权限设置

    用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...

  10. vue2.0在android5.0白屏, es6转es5保证浏览器兼容性

    1. 安装 npm install --save-dev babel-preset-es2015 2. 安装 npm install --save-dev babel-preset-stage-3 3 ...