Springboot整合zipkin实现链路监控简单过程以及排错记录。

整合Zipkin

  1. 拉取最新zipkin
 docker pull openzipkin/zipkin

在这里插入图片描述

  1. 启动镜像
docker run -d --restart always -p 9411:9411 --name zipkin openzipkin/zipkin
  1. 访问dashboard : http://IP:9411/zipkin/ 这里换成自己ip即可
    在这里插入图片描述
  2. 添加pom依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
  1. 修改nacos上的yml配置文件
spring:
  sleuth:
    sampler:
      probability: 1
  zipkin:
    base-url: http://ip:9411/
    discovery-client-enabled: false
    sender:
      type: web

问题

在做一个微服务项目的时候,通过zipkin进行链路监控的时候,原本能启动的模块,突然启动不了了,出现了如下问题。

后台启动报错:The web application [ROOT] appears to have started a thread named [spring.cloud.inetutils] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:

可能原因

  1. 先看是不是bootstrap.yml没有正确配置nacos的namespace、group等。
    在这里插入图片描述
  2. 之后再去nacos上查看是不是忘记为该模块创建配置文件了。
    在这里插入图片描述
  3. 最后在检查一下是不是配置文件里有错误。(这个尤其要注意)’
  4. 如果是有Zipkin导入才出现该问题,建议排除该zipkin,或者根据Zipkin的提示去修改程序,以防止内存泄露问题。
<dependency>
            <groupId>com.nju.emall</groupId>
            <artifactId>emall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-zipkin</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded

可能原因

  1. 数据库没有进行配置,去nacos上对应的配置文件中进行配置‘在这里插入图片描述
  2. 配置文件中有错误,但是没有发现,虽然nacos在发布配置文件的时候未检测出错误,但是实质是有错误的,尤其是yml配置的时候,尤其注意缩进。

Error running ‘EmallSearchApplication’: Command line is too long. Shorten comm…

原因

  1. 查看是不是确实设置了过长的命令行参数,显然并没有改动过配置,如果设置了过长的参数,可以尝试选择箭头所指的方式进行缩减命令行参数进行启动。
    在这里插入图片描述
  2. 细看控制台
The web application [ROOT] appears to have started a thread named [com.alibaba.nacos.naming.client.listener] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)

可能内存泄漏,这是zipkin版本问题,去提高一下cloud的版本,以及zipkin试试

监控效果

在这里插入图片描述

  • cs :客户端发送一个请求,这个注解描述了这个Span的开始
  • sr :服务端获得请求并准备开始处理它,sr-cs得到的是网络传输时间
  • ss:服务端发送响应。请求处理的完成,ss-sr得到服务器请求的时间
  • cr:客户端接收响应。表示Span结束,cr-cs得到整个请求消耗的时间。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Spring Boot整合 Zipkin 链路追踪需要进行以下步骤: 1. 在 pom.xml 中添加依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> ``` 2. 在 application.properties 中添加如下配置: ``` spring.zipkin.base-url=http://localhost:9411 ``` 3. 在启动类上添加 `@EnableZipkinServer` 注解开启 Zipkin 服务端功能。 示例代码如下: ``` @SpringBootApplication @EnableZipkinServer public class ZipkinServerApplication { public static void main(String[] args) { SpringApplication.run(ZipkinServerApplication.class, args); } } ``` 4. 在需要进行链路追踪的服务中添加依赖和配置: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> ``` 在 application.properties 中添加如下配置: ``` spring.zipkin.base-url=http://localhost:9411 ``` 5. 在启动类上添加 `@EnableZipkinStreamServer` 注解开启 Zipkin 客户端功能。 示例代码如下: ``` @SpringBootApplication @EnableZipkinStreamServer public class ZipkinClientApplication { public static void main(String[] args) { SpringApplication.run(ZipkinClientApplication.class, args); } } ``` 以上就是在 Spring Boot整合 Zipkin 链路追踪的简单示例。希望这能帮到您。 ### 回答2: Zipkin是一个用于分布式系统的链路追踪工具,方便开发人员在微服务架构中进行系统性能监控和故障排查。下面是一个基于Spring BootZipkin链路追踪的配置整合示例。 首先,我们需要在pom.xml文件中添加相关依赖: ```xml <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <!-- 其他相关依赖 --> </dependencies> ``` 接下来,在Spring Boot应用的启动类上添加@EnableZipkinServer注解,启用Zipkin Server功能: ```java @SpringBootApplication @EnableZipkinServer public class ZipkinServerApplication { public static void main(String[] args) { SpringApplication.run(ZipkinServerApplication.class, args); } } ``` 然后,我们需要在应用的配置文件application.properties中添加相关配置: ```properties spring.application.name=zipkin-server server.port=9411 spring.zipkin.enabled=true spring.sleuth.sampler.probability=1.0 spring.zipkin.base-url=http://localhost:9411 ``` 其中,spring.zipkin.enabled为true表示启用Zipkin功能,spring.sleuth.sampler.probability=1.0表示采样率为100%,spring.zipkin.base-url为Zipkin Server的地址。 最后,我们需要在每个需要进行链路追踪的Spring Boot应用上添加相关配置: ```properties spring.zipkin.baseUrl=http://localhost:9411 spring.zipkin.discovery-client-enabled=true spring.zipkin.communications.enabled=true spring.zipkin.sender.type=web ``` 其中,spring.zipkin.baseUrl为Zipkin Server的地址,spring.zipkin.discovery-client-enabled为true表示启动服务发现功能,spring.zipkin.communications.enabled为true表示启动基于HTTP的通信功能,spring.zipkin.sender.type为web表示使用web方式发送链路数据。 通过以上配置和整合,我们就可以在Spring Boot应用中实现Zipkin链路追踪的监控和故障排查功能了。 ### 回答3: Zipkin是一个开源的分布式追踪系统,可以用于追踪微服务架构中的请求链路。在Spring Boot整合Zipkin,可以通过配置和依赖注入来实现链路追踪功能。 首先,需要在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> ``` 接下来,在application.properties文件中添加以下配置: ```properties spring.zipkin.base-url=http://localhost:9411 # Zipkin服务器的地址 ``` 然后,创建一个Spring Boot应用程序,并在启动类上添加`@EnableZipkinServer`注解,以启用Zipkin服务器: ```java @SpringBootApplication @EnableZipkinServer public class ZipkinServerApplication { public static void main(String[] args) { SpringApplication.run(ZipkinServerApplication.class, args); } } ``` 在需要追踪的微服务应用程序中,需要添加以下配置: ```properties spring.zipkin.baseUrl=http://localhost:9411 # Zipkin服务器的地址 spring.sleuth.sampler.probability=1.0 # 采样比例,此处为100%采样 ``` 然后,在需要追踪的请求执行之前,添加以下注解: ```java @Autowired private Tracer tracer; ... Span span = tracer.getCurrentSpan(); span.tag("key", "value"); // 可以添加自定义的标签信息 ... span.finish(); ``` 这样就完成了Zipkin链路追踪功能的配置和整合。通过访问Zipkin服务器提供的界面,可以查看各个微服务之间的请求链路和调用耗时。 总结:通过添加依赖和配置,以及使用Tracer来记录和追踪请求的执行情况,可以实现Spring Boot应用程序中使用Zipkin进行链路追踪。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值