ApiBoot Logging
支持整合服务注册中心
(Eureka、Consul、Nacos Discovery、Zookeeper...)进行上报请求日志,Logging Client
会从服务注册中心内找到指定ServiceID
的Logging Admin
具体可用实例,通过SpringCloud Discovery
内部的负载均衡策略返回Logging Admin
的部署服务器IP
以及端口号
,这样Logging Client
就可以完成请求日志的上报流程。
我们先来搭建一个Eureka Server
,请访问【搭建服务注册中心Eureka Server】文章内容查看具体搭建流程。
既然使用的是服务注册中心
,我们需要将之前章节将的Logging Admin
进行简单的改造,添加Eureka
客户端相关的依赖,并在application.yml
配置文件内添加Eureka Server
的相关配置,如果对Logging Admin
不了解的同学可以访问【将ApiBoot Logging采集的日志上报到Admin】查看文章内容,文章底部有源码。
我们需要将Logging Admin
注册到Eureka Server
,对于Eureka Server
而言Logging Admin
是一个客户端
(Eureka Client)角色。
我们在pom.xml
文件内添加如下配置:
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
添加依赖后我们还需要在XxxApplication
入口类添加@EnableDiscoveryClient
注解来启用Eureka Client
的相关功能,如下所示:
@SpringBootApplication
@EnableLoggingAdmin
@EnableDiscoveryClient
public class LoggingAdminApplication {
/**
* logger instance
*/
static Logger logger = LoggerFactory.getLogger(LoggingAdminApplication.class);
public static void main(String[] args) {
SpringApplication.run(LoggingAdminApplication.class, args);
logger.info("{}服务启动成功.", "日志管理中心");
}
}
我们在application.yml
配置文件内添加连接到Eureka Server
的相关配置信息,如下所示:
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
Logging Client
其实就是我们的业务服务,不要被名称误导,我们在本章源码内创建一个user-service
模块来作为测试的业务服务,我们也需要将user-service
作为客户端注册到Eureka Server
,可参考【使用ApiBoot Logging进行统一管理请求日志】文章内容创建项目。
在pom.xml
配置文件内添加如下依赖:
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
添加依赖后同样需要启用Eureak Client
,这是必不可少的步骤,在我们的入口类XxxApplication
上添加如下所示:
@SpringBootApplication
@EnableDiscoveryClient
@EnableLoggingClient
public class UserServiceApplication {
/**
* logger instance
*/
static Logger logger = LoggerFactory.getLogger(UserServiceApplication.class);
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
logger.info("{}服务启动成功.", "用户");
}
}
我们在application.yml
配置文件内添加Eureka Server
的相关配置信息,如下所示:
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
这是本章的核心内容,我们在之前都是通过api.boot.logging.admin.server-address
参数进行配置Logging Admin
的IP地址
以及服务端口号
,而本章我们就要借助服务注册中心
(Eureka Server)来从实例列表中获取Logging Admin
服务信息,ApiBoot Logging
提供了一个配置参数api.boot.logging.discovery.service-id
进行配置Logging Admin
的ServiceID
,也就是spring.application.name
参数对应的值,如下所示:
# ApiBoot Config
api:
boot:
logging:
discovery:
# Logging Admin ServiceID
service-id: logging-admin
show-console-log: true
format-console-log-json: true
每当我们发起请求时,Logging Client就会从Eureak Server
内获取ServiceID = logging-admin
的服务列表,负载均衡筛选后获取一个可用的实例信息进行上报日志。
我们将本章源码内用到的三个服务eureka-server
、logging-admin
、user-service
依次启动。
通过curl
命令访问user-service
提供的Controller
地址,如下所示:
➜ ~ curl http://localhost:9090/test/?name/=admin
你好:admin
我们可以在logging-admin
控制台看到user-service
上报的请求日志信息,如下所示:
Receiving Service: 【user-service -> 127.0.0.1】, Request Log Report,Logging Content:[
{
"endTime":1572921905360,
"httpStatus":200,
"requestBody":"",
"requestHeaders":{
"host":"localhost:9090",
"user-agent":"curl/7.64.1",
"accept":"*/*"
},
"requestIp":"0:0:0:0:0:0:0:1",
"requestMethod":"GET",
"requestParam":"{/"name/":/"admin/"}",
"requestUri":"/test",
"responseBody":"你好:admin",
"responseHeaders":{},
"serviceId":"user-service",
"serviceIp":"127.0.0.1",
"servicePort":"9090",
"spanId":"d97c515f-a147-4f89-9c59-398905c95a73",
"startTime":1572921905336,
"timeConsuming":24,
"traceId":"5e6c0357-1625-4a28-af18-cacdddba146a"
}
]
自此我们已经成功的整合Eureka
与ApiBoot Logging
。
ApiBoot Logging
内部提供的两种获取Logging Admin
服务信息的方式,分别是:service-id
、server-address
,都是比较常用的,使用service-id
方式可以无缝整合SpringCloud
进行使用,而链路信息可以通过Openfeign
、RestTemplate
进行传递,这会在我们后期的知识点中讲到。
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !