spring boot 跟踪微服务日志——迹忆客-ag捕鱼王app官网
如果发生任何问题,大多数开发人员都会面临追踪日志的困难。 这可以通过 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 文件中添加以下依赖项
org.springframework.cloud
spring-cloud-starter-sleuth
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 上启动。
现在,在 web 浏览器中访问 url 并在控制台日志中查看输出。
http://localhost:8080/
我们可以在控制台窗口中看到以下日志。 观察日志以以下格式打印 [application-name, traceid, spanid, zipkin-export]
。
zipkin 服务
zipkin 是一个监控和管理 spring boot 应用程序的 spring cloud sleuth 日志的应用程序。 要构建 zipkin 服务器,我们需要在构建配置文件中添加 zipkin ui 和 zipkin server 依赖项。
maven 用户可以在 pom.xml 文件中添加以下依赖项
io.zipkin.java
zipkin-server
io.zipkin.java
zipkin-autoconfigure-ui
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 文件中添加如下依赖
org.springframework.cloud
spring-cloud-sleuth-zipkin
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 包)