• Zipkin_Slueth微服务链式追踪


    Zipkin_Slueth微服务链式追踪

    一、Spring Cloud Sleuth介绍

    1. 分布式服务跟踪必要性

    ​ 现今互联网环境中,微服务系统越来越庞大、复杂,微服务间的调用关系也越加复杂。往往一个请求,会出发系统后台多个微服务协同工作得到最终结果,那么在复杂的调用网中,任何一个服务出现问题,都会导致整体功能出错。

    ​ 这时,微服务跟踪工具应运而生,其在整体微服务应用中能跟踪一个请求的整体流程。并提供数据采集,数据传输,数据存储,数据分析,数据可视化功能。微服务跟踪工具捕获的这些跟踪数据,就能构建出整个微服务调用链视图,为调试和监控微服务系统提供帮助。

    2. Spring Cloud Sleuth介绍

    ​ Spring Cloud Sleuth就是这样的微服务跟踪工具。其特点为:

    ​ 提供链路追踪:通过Sleuth可以很清楚的看到一次请求经过哪些服务调用,可以方便理清服务间调用关系。

    ​ 性能分析、数据分析、优化链路:通过Sleuth可以很方便的看出每个采样请求的耗时,分析出哪些服务调用比较耗时,可以为微服务系统的调优提供数据支撑。

    ​ 可视化视图:可以提供可视化视图,更直观的查看采样数据。

    二、基于ELK实现服务跟踪

    1. 基于ELK实现服务跟踪原理说明

    ​ Sleuth是基于logback实现数据跟踪的。在默认情况下,Sleuth是基于日志向控制台输出跟踪内容。不利于管理,统计,查看,分析。在控制台中输出跟踪内容会严重影响系统性能。如果将跟踪数据记录在logback对应的日志文件中,也有问题:logback是分散的,是集成在每个服务应用中的,那么日志文件也是分散的, 也不利于跟踪信息的查看,管理,分析。

    ​ 所以Sleuth提供了集中式的跟踪数据存储方案。可以使用ELK来实现logback跟踪信息的收集,存储。实质上是使用logstash来做数据的收集,用ElasticSearch做数据的存储,使用Kibana做数据的视图显示。

    ​ 使用ELK收集跟踪数据,必须依赖Logback日志工具,也就是必须提供logback.xml配置文件,并且日志级别建议调整为DEBUG。

    2. 结构图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L1ZAzvQ9-1662387855318)(images/s1.png)]

    3. 修改Logstash配置

    3.1 连接到容器
    docker exec -it logstash bash
    
    • 1
    3.2 编辑配置文件
    vi /usr/share/logstash/pipeline/logstash.conf
    
    • 1
    3.3 配置文件内容
    input {
       
      tcp {
       
        mode => "server"
        port => 4560
      }
    }
    filter {
       
    }
    output {
       
      elasticsearch {
       
        action => "index"          
        hosts  => "192.168.8.128:9200"  
        index  => "bjsxt_sleuth"        
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    3.4 重启容器
    docker restart logstash
    
    • 1

    4. 修改工程

    ​ 修改任意微服务工程,用于实现微服务链路跟踪。

    5. POM依赖

    ​ 新增下述依赖:

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-sleuthartifactId>
    dependency>
    
    <dependency>
        <groupId>net.logstash.logback
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    搬砖神器 VScode
    JUC——并发编程—第二部分
    【自然语言处理(NLP)】基于ERNIE语言模型的文本语义匹配
    wpf menu 菜单 快捷键
    【牛客 - 剑指offer】JZ8 二叉树的下一个结点 Java实现
    我把 CPU 三级缓存的秘密,藏在这 8 张图里
    ubuntu22.04安装cuda11.5+cudnn8.8.0
    掌握这个技巧,轻松将图片转换成Ecxel文件
    Python实战之用内置模块来构建REST服务、RPC服务
    Linux fdformat命令教程:如何进行软盘的低级格式化(附案例详解和注意事项)
  • 原文地址:https://blog.csdn.net/woruosuifenglang/article/details/126714906