前言

参考资料

《Spring Microservices in Action》

《Spring Cloud Alibaba 微服务原理与实战》

《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

Zipkin 允许开发人员以图形方式查看事务占用的时间量,并分解在调用中涉及的每个微服务所用的时间。在微服务架构中,Zipkin 是识别性能问题的宝贵工具;


1. Zipkin 基础知识

1.1 Zipkin 链路监控的原理

  • 上图表示一请求链路,一条链路通过 Trace Id 唯一标识,Span 标识发起的请求信息,各 Span 通过 Parent id 关联起来;
  • Span 表示调用链路来源,通俗的理解 Span 就是一次请求信息;
  • 简略理解图如下:



2. 下载 Zipkin 服务器

Spring Cloud 从 F 版起不需要自己构建 Zipkin Server 了,只需调用 jar 包即可;

2.1 下载 zipkin-server-2.12.9-exec.jar 包

2.2 启动 Zipkin Server

  • 使用命令启动 Zipkin Server:java -jar zipkin-server-2.12.9-exec.jar

2.3 *Docker 部署方式

也可以使用 Docker 部署省去下载的麻烦;

  • docker run -d -p 9411:9411 openzipkin/zipkin

3. 手动安装和配置 Zipkin 服务器

虽然 Spring Cloud 从 F 版起不需要自己构建 Zipkin Server,但这里还是提供手动构建的方法;

3.1 引入 pom.xml 依赖文件

<!-- 用于创建 Zipkin 服务器所需的核心类 -->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<!-- 用于运行 Zipkin 服务器的 UI 部分所需的核心类 -->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>

3.2 在主程序类上添加注解

  • @EnableZipkinServer:创建相对简单。缺点是 Zipkin 服务器不可用时数据会丢失;

    • 注意:该注解不是 Spring Cloud 提供的,是 Zipkin 提供的;
  • @EnableZipkinStreamServer:需要创建和配置正在跟踪的服务以发布消息到 RabbitMQ 或 Kafka。优点是即使 Zipkin 服务器不可用,也可以继续收集跟踪数据,直到 Zipkin 服务器可用于处理消息记录;
    • 该注解是 Spring Cloud 提供的;

3.3 配置跟踪数据存储方式

  • Zipkin 支持四种不同的后端数据存储,如下:

    • 内存数据;
    • MySQL;
    • Cassandra;
    • Elasticsearch;
  • 默认情况下 Zipkin 使用内存数据来存储跟踪数据,可以进行配置到其他存储方式;

4. 使用 Zipkin 进行分布式跟踪

4.1 添加 pom.xml 依赖文件

需要给 Zuul 网关服务、消费者服务、提供者服务等所有服务添加依赖;

<!-- 包含在服务中启用 sleuth 的基本库 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency> <!-- 【可选】当开发人员需要以编程方式与 sleuth 交互时添加 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-core</artifactId>
</dependency> <!-- 与 Zipkin 集成 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

4.2 修改 application.yml 配置文件

在每个想与 Zipkin 进行通信的服务的 application.yml 配置文件中进行修改;

spring:
zipkin:
baseUrl: http://localhost:9411 #Zipkin 服务器的地址
sleuth:
sampler:
percentage: 1 #设置跟踪级别,也即定义每个服务应该向 Zipkin 写入数据的频率,默认 10%
  • spring.sleuth.sampler.percentage = 0 表示不发送任何事物数据;
  • 上述 spring.sleuth.sampler.percentage = 1 属性也可用下面的代码替代。表示为所有服务发送跟踪信息;
@Bean
public Sampler defaultSampler() {
return new AlwaysSampler();
}

4.3 访问 9411 端口查看可视化日志

  • 先调用服务 API;
  • 再进入:http://localhost:9411
  • 即可查看 Zipkin 的日志捕获跟踪结果;
  • Zipkin 界面可以查询一些基本的信息:



  • 点击事务后可以查看更详细的信息:



  • 点击组织服务跨度,可以查看调用中的额外细节:

  • 点击依赖,可以查看依赖关系:


最后

新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

微服务架构 | 10.3 使用 Zipkin 可视化日志追踪的更多相关文章

  1. 微服务架构 | 10.2 使用 Papertrail 实现日志聚合

    目录 前言 1. Papertrail 基础知识 1.1 Papertrail 特点 1.2 Papertrail 是什么 2. 使用 Papertrail 进行日志聚合的示例 2.1 创建 Pape ...

  2. .NET Core微服务之基于Steeltoe使用Zipkin实现分布式追踪

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  3. 微服务架构之spring cloud zipkin

    Spring Cloud Zipkin是微服务的链路跟踪组件,帮助详细了解一次request&response的总计时,及每个微服务的消耗时间.微服务名称.异常信息等等过程信息. (一) 版本 ...

  4. 微服务架构 | 10.1 使用 Sleuth 追踪服务调用链

    目录 前言 1. Sleuth 基础知识 1.1 Sleuth 原理 2. 在服务中使用 Sleuth 追踪 2.1 引入 pom.xml 依赖文件 2.2 查看日志信息 最后 前言 参考资料: &l ...

  5. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  6. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  7. Spring Cloud与Docker微服务架构实战 PDF

    电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...

  8. 【Spring Cloud】微服务架构选型方案

    1.技术架构 2.组件介绍 1.服务注册与发现——Eureka 服务注册与发现中心采用Eureka,以AP为核心的高可用注册中心,保证高可用性和最终一致性,server之间互相注册的replicate ...

  9. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

随机推荐

  1. 1119 机器人走方格 V2

    1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mo ...

  2. window11连接局域网共享失败处理办法

    第一步1.按 Win + R 组合键,打开运行,并输入:gpedit.msc 命令,确定或回车,可以快速打开本地组策略编辑器2.本地组策略编辑器窗口中,依次展开到:计算机配置 - 管理模板 - 网络 ...

  3. 漫谈grpc 3:从实践到原理,带你参透 gRPC

    ​ 原文链接:万字长文 | 从实践到原理,带你参透 gRPC 大家好,我是煎鱼. gRPC 在 Go 语言中大放异彩,越来越多的小伙伴在使用,最近也在公司安利了一波,希望这一篇文章能带你一览 gRPC ...

  4. Flink sql 之 微批处理与MiniBatchIntervalInferRule (源码分析)

    本文源码基于flink1.14 平台用户在使用我们的flinkSql时经常会开启minaBatch来优化状态读写 所以从源码的角度具体解读一下miniBatch的原理 先看一下flinksql是如何触 ...

  5. Linux-saltstack-3 saltstack的grains和pillar的基本使用

    @ 目录 一.简介 二.grains 1.查看客户端所有的grains项 2.查看grains的所有的项和值 3.查看某个项和值 (1)语法1: (2)语法2: 4.根据grains来匹配目标主机 例 ...

  6. pymysql防止SQL注入的方法

    import pymysql class Db(object): def __init__(self): self.conn = pymysql.connect(host="192.168. ...

  7. Mysql查询阻塞的sql

    SELECTp2.`HOST` 被阻塞方host,p2.`USER` 被阻塞方用户,r.trx_id 被阻塞方事务id,r.trx_mysql_thread_id 被阻塞方线程号,TIMESTAMPD ...

  8. Layui table 学习笔记

    templet:'<div>{{createrFormat(d.accounts.name)}}</div>' function createrFormat(o){ retur ...

  9. Keepalived高可用、四层负载均衡

    目录 Keepalived高可用 高可用简介 常用的工具 问题 名称解释 VRRP协议 部署keepalived 下载安装 Keepalived配置 保证nginx配置一样 解决keepalived的 ...

  10. SSRF漏洞用到的其他协议(dict协议,file协议)

    0x00 引言 当SSRF打内网reids时,若gopher协议用不了,我们也可以用其他协议 0x01 dict协议一.定义:词典网络协议,在RFC 2009中进行描述.它的目标是超越Webster ...