Spring Boot 跟踪微服务日志

如果发生任何问题,大多数开发人员都会面临追踪日志的困难。 这可以通过 Spring Cloud Sleuth 和用于 Spring Boot 应用程序的 ZipKin 服务器来解决。


Spring Cloud Sleuth

Spring cloud Sleuth 日志使用以下格式打印

[application-name,traceid,spanid,zipkin-export]
  • Application-name : 应用程序的名称
  • Traceid : 调用同一个服务或一个服务到另一个服务时,每个请求和响应的 traceid 都是相同的。
  • Spanid : Span Id 与 Trace Id 一起打印。 Span Id 是不同的每个请求和响应调用一个服务到另一个服务。
  • Zipkin-export : 默认为假。 如果为真,日志将被导出到 Zipkin 服务器。

现在,在构建配置文件中添加 Spring Cloud Starter Sleuth 依赖项,如下所示

Maven 用户可以在您的 pom.xml 文件中添加以下依赖项

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

Gradle 用户可以在 build.gradle 文件中添加以下依赖项

compile('org.springframework.cloud:spring-cloud-starter-sleuth')

现在,将日志添加到 Spring Boot 应用程序 Rest Controller 类文件中,如下所示

package com.jiyik.sleuthapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.logging.Level;
import java.util.logging.Logger;

@SpringBootApplication
@RestController
public class SleuthappAopplication {
    private static final Logger LOG = Logger.getLogger(SleuthappAopplication.class.getName());
    public static void main(String[] args) {
        SpringApplication.run(SleuthappAopplication.class, args);
    }

    @RequestMapping("/")
    public String index() {
        LOG.log(Level.INFO, "Index Api 正在被访问");
        return "欢迎访问 Sleuth!";
    }
}

现在,在 application.properties 文件中添加应用程序名称,如图所示

spring.application.name = tracinglogs

现在,我们可以创建一个可执行的 JAR 文件,并使用以下 Maven 或 Gradle 命令运行 Spring Boot 应用程序。

对于 Maven,使用下面给出的命令

$ mvn clean install

成功之后,我们可以在 target 目录下找到 JAR 文件。

对于 Gradle,使用下面给出的命令

$ gradle clean build

这里我们使用 IDEA 来启动服务(读者也可以使用上面两种方式中的一种生成可执行 jar 包)

现在,应用程序已在 Tomcat 端口 8080 上启动。

Spring Boot Sleuth 启动成功

现在,在 Web 浏览器中访问 URL 并在控制台日志中查看输出。

http://localhost:8080/

Spring Boot 访问 Sleuth

我们可以在控制台窗口中看到以下日志。 观察日志以以下格式打印 [application-name, traceid, spanid, zipkin-export]

Spring Boot Sleuth 日志


Zipkin 服务

Zipkin 是一个监控和管理 Spring Boot 应用程序的 Spring Cloud Sleuth 日志的应用程序。 要构建 Zipkin 服务器,我们需要在构建配置文件中添加 Zipkin UI 和 Zipkin Server 依赖项。

Maven 用户可以在 pom.xml 文件中添加以下依赖项

<dependency>
   <groupId>io.zipkin.java</groupId>
   <artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
   <groupId>io.zipkin.java</groupId>
   <artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>

Gradle 用户可以在 build.gradle 文件中添加以下依赖项

compile('io.zipkin.java:zipkin-autoconfigure-ui')
compile('io.zipkin.java:zipkin-server')

现在,在应用程序属性文件中配置 server.port = 9411

对于属性文件用户,在 application.properties 文件中添加以下属性。

server.port = 9411

对于 YAML 用户,在 **application.yml **文件中添加以下属性。

server:
   port: 9411

在主 Spring Boot 应用程序类文件中添加 @EnableZipkinServer 注解。 @EnableZipkinServer 注解用于使我们的应用程序充当 Zipkin 服务器。

package com.jiyik.zipkinapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin.server.EnableZipkinServer;

/**
 * @author jiyik.com
 */
@SpringBootApplication
@EnableZipkinServer
public class ZipkinappApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZipkinappApplication.class, args);
    }
}

现在,我们可以创建一个可执行的 JAR 文件,并使用以下 Maven 或 Gradle 命令运行 Spring Boot 应用程序。

对于 Maven,使用下面给出的命令

$ mvn clean install

成功之后,我们可以在 target 目录下找到 JAR 文件。

对于 Gradle,使用下面给出的命令

$ gradle clean build

然后,在客户端服务应用程序中添加以下依赖项,并指出 Zipkin Server URL 以通过 Zipkin UI 跟踪微服务日志。

现在,在构建配置文件中添加 Spring Cloud Starter Zipkin 依赖项,如下所示

Maven 用户可以在 pom.xml 文件中添加如下依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

Gradle 用户可以在 build.gradle 文件中添加以下依赖项

compile('org.springframework.cloud:spring-cloud-sleuth-zipkin')

现在,在 Spring Boot 应用程序中添加 Always Sampler Bean 从而将日志导出到 Zipkin 服务器。】

@Bean
public AlwaysSampler defaultSampler() {
   return new AlwaysSampler();
}

如果添加 AlwaysSampler Bean ,则 Spring Sleuth Zipkin Export 选项会自动从 false 更改为 true。

接下来,在客户端服务 application.properties 文件中配置您的 Zipkin Server 基本 URL。

spring.zipkin.baseUrl = http://localhost:9411/zipkin/ 

然后,提供跟踪 ID 并在 Zipkin UI 中查找跟踪。

这里我们使用 IDEA 来启动服务(读者也可以使用上面两种方式中的一种生成可执行 jar 包)

Spring Boot zipkin 服务启动成功

spring boot zipkin 服务访问

查看笔记

扫码一下
查看教程更方便