• SpringCloud——Sleuth(链路追踪、admin)


    简介

    追踪微服务的调用路径
    因为想要一个结果可能是由一个微服务调用另一个,另一个继续调用,这个过程中需要进行监控,其中一个出问题都会引起整个请求失败,不建议微服务中链路调用超过3次

    分布式链路调用的监控

    sleuth+Zipkin
    spring cloud从F版开始不需要自己构建Zipkun server,只需要调用jar包
    下载地址:
    https://repo1.maven.org/maven2/io/zipkin/zipkin-server/
    运行:
    java -jar zipkin-server-2.23.9-exec.jar
    在这里插入图片描述

    在这里插入图片描述

    快速入门

    继续使用feign结构化工程项目,因为项目中都是对api进行依赖,所以需在api的pom中添加zipkin依赖

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    修改order-center、user-center的yml

    spring:
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          probability: 1 #配置采样率 默认的采样比例为: 0.1,即 10%,所设 置的值介于 0 到 1 之间,1 则表示全部采集
          rate: 10 #为了使用速率限制采样器,选择每秒间隔接受的 trace 量,最小数字为 0,最大值为 2,147,483,647(最大 int) 默认为 10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    启动服务,进行调用后,查看Zipkin
    在这里插入图片描述
    在这里插入图片描述
    会发现速度越来越快,但有时候突然变慢,因为采集数据也有影响

    admin

    创建一个spring boot项目,搜索admin依赖,server是监控端,client是被监控端
    在这里插入图片描述
    选择server,在加入web依赖
    在这里插入图片描述
    修改版本号
    在这里插入图片描述
    当要监控多个微服务时,每个都进行client依赖是很麻烦的,所以可以将admin监控端在注册中心中注册,拉取服务列表后通过心跳监测就能做到监控
    在这里插入图片描述
    加入Eureka、Spring Cloud依赖

    <properties>
        <java.version>1.8java.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <spring-boot-admin.version>2.3.0spring-boot-admin.version>
        <spring-boot.version>2.3.12.RELEASEspring-boot.version>
        <spring-cloud.version>Hoxton.SR12spring-cloud.version>
    properties>
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-dependenciesartifactId>
        <version>${spring-cloud.version}version>
        <type>pomtype>
        <scope>importscope>
    dependency>
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
        <version>2.2.9.RELEASEversion>
    dependency>
    <dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>org.springframework.bootgroupId>
             <artifactId>spring-boot-dependenciesartifactId>
             <version>${spring-boot.version}version>
             <type>pomtype>
             <scope>importscope>
         dependency>
         <dependency>
             <groupId>de.codecentricgroupId>
             <artifactId>spring-boot-admin-dependenciesartifactId>
             <version>${spring-boot-admin.version}version>
             <type>pomtype>
             <scope>importscope>
         dependency>
     dependencies>
    dependencyManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    修改启动类名称,添加Eureka客户端注解、admin监控端注解

    @EnableEurekaClient
    @EnableAdminServer
    
    • 1
    • 2

    修改yml文件

    server:
      port: 1000
    spring:
      application:
        name: admin-server
    eureka:
      client:
        service-url: http://localhost:8761/eureka
      instance:
        instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
        hostname: localhost
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动,访问
    在这里插入图片描述
    在yml添加配置:

    management:
      endpoints:
        web:
          exposure:
            include: '*' #暴露所有的监控端点
    
    • 1
    • 2
    • 3
    • 4
    • 5

    会显示它的详细信息
    在这里插入图片描述

    被监控端信息暴露

    若某一个服务想被监控,需要添加依赖

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    专门暴露自身情况
    接着修改yml文件

    management:
      endpoints:
        web:
          exposure:
            include: '*' #暴露所有的监控端点
    
    • 1
    • 2
    • 3
    • 4
    • 5

    若添加,在EndPoints中的Mappings会有信息,反之不会有

    在这里插入图片描述

  • 相关阅读:
    Selector和Epoll区别
    3次多项式轨迹规划(PLC SCL代码)
    烽火推系统源码,抖音矩阵系统源码独立部署 TELL
    关于指针初始化为NULL的一些问题
    机器学习模型监控清单
    系统编程 day13 (linux) 共享内存的知识 与函数的运用
    手写一个单例模式,Demo,检测
    python 炸敌人。
    Docker技术全景:推动云原生架构的关键力量
    Linux系统中如何安装生信软件?保姆式全攻略
  • 原文地址:https://blog.csdn.net/YiRenGengShangBuQi/article/details/126429004