ApiBoot Logging
支持整合服務(wù)注冊中心
(Eureka、Consul、Nacos Discovery、Zookeeper...)進(jìn)行上報請求日志,Logging Client
會從服務(wù)注冊中心內(nèi)找到指定ServiceID
的Logging Admin
具體可用實(shí)例,通過SpringCloud Discovery
內(nèi)部的負(fù)載均衡策略返回Logging Admin
的部署服務(wù)器IP
以及端口號
,這樣Logging Client
就可以完成請求日志的上報流程。
搭建Eureka Server
我們先來搭建一個Eureka Server
,請?jiān)L問【搭建服務(wù)注冊中心Eureka Server】文章內(nèi)容查看具體搭建流程。
將Logging Admin注冊到Eureka
既然使用的是服務(wù)注冊中心
,我們需要將之前章節(jié)將的Logging Admin
進(jìn)行簡單的改造,添加Eureka
客戶端相關(guān)的依賴,并在application.yml
配置文件內(nèi)添加Eureka Server
的相關(guān)配置,如果對Logging Admin
不了解的同學(xué)可以訪問【將ApiBoot Logging采集的日志上報到Admin】查看文章內(nèi)容,文章底部有源碼。
添加Eureka Client依賴
我們需要將Logging Admin
注冊到Eureka Server
,對于Eureka Server
而言Logging Admin
是一個客戶端
(Eureka Client)角色。
我們在pom.xml
文件內(nèi)添加如下配置:
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
啟用Eureka Client
添加依賴后我們還需要在XxxApplication
入口類添加@EnableDiscoveryClient
注解來啟用Eureka Client
的相關(guān)功能,如下所示:
@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("{}服務(wù)啟動成功.", "日志管理中心");
}
}
配置注冊到Eureka Server
我們在application.yml
配置文件內(nèi)添加連接到Eureka Server
的相關(guān)配置信息,如下所示:
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
將Logging Client注冊到Eureka
Logging Client
其實(shí)就是我們的業(yè)務(wù)服務(wù),不要被名稱誤導(dǎo),我們在本章源碼內(nèi)創(chuàng)建一個user-service
模塊來作為測試的業(yè)務(wù)服務(wù),我們也需要將user-service
作為客戶端注冊到Eureka Server
,可參考【使用ApiBoot Logging進(jìn)行統(tǒng)一管理請求日志】文章內(nèi)容創(chuàng)建項(xiàng)目。
添加Eureka Client依賴
在pom.xml
配置文件內(nèi)添加如下依賴:
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
啟用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("{}服務(wù)啟動成功.", "用戶");
}
}
配置注冊到Eureka Server
我們在application.yml
配置文件內(nèi)添加Eureka Server
的相關(guān)配置信息,如下所示:
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
配置Logging Admin服務(wù)信息
這是本章的核心內(nèi)容,我們在之前都是通過api.boot.logging.admin.server-address
參數(shù)進(jìn)行配置Logging Admin
的IP地址
以及服務(wù)端口號
,而本章我們就要借助服務(wù)注冊中心
(Eureka Server)來從實(shí)例列表中獲取Logging Admin
服務(wù)信息,ApiBoot Logging
提供了一個配置參數(shù)api.boot.logging.discovery.service-id
進(jìn)行配置Logging Admin
的ServiceID
,也就是spring.application.name
參數(shù)對應(yīng)的值,如下所示:
# ApiBoot Config
api:
boot:
logging:
discovery:
# Logging Admin ServiceID
service-id: logging-admin
show-console-log: true
format-console-log-json: true
每當(dāng)我們發(fā)起請求時,Logging Client就會從Eureak Server
內(nèi)獲取ServiceID = logging-admin
的服務(wù)列表,負(fù)載均衡篩選后獲取一個可用的實(shí)例信息進(jìn)行上報日志。
運(yùn)行測試
我們將本章源碼內(nèi)用到的三個服務(wù)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"
}
]
自此我們已經(jīng)成功的整合Eureka
與ApiBoot Logging
。
敲黑板,劃重點(diǎn)
ApiBoot Logging
內(nèi)部提供的兩種獲取Logging Admin
服務(wù)信息的方式,分別是:service-id
、server-address
,都是比較常用的,使用service-id
方式可以無縫整合SpringCloud
進(jìn)行使用,而鏈路信息可以通過Openfeign
、RestTemplate
進(jìn)行傳遞,這會在我們后期的知識點(diǎn)中講到。
審核編輯 黃昊宇
-
JAVA
+關(guān)注
關(guān)注
19文章
2973瀏覽量
104878 -
spring
+關(guān)注
關(guān)注
0文章
340瀏覽量
14358 -
MySQL
+關(guān)注
關(guān)注
1文章
817瀏覽量
26637 -
人臉識別
+關(guān)注
關(guān)注
76文章
4012瀏覽量
82052
發(fā)布評論請先 登錄
相關(guān)推薦
評論