ApiBoot Logging
支持整合服務注冊中心
(Eureka、Consul、Nacos Discovery、Zookeeper...)進行上報請求日志,Logging Client
會從服務注冊中心內找到指定ServiceID
的Logging Admin
具體可用實例,通過SpringCloud Discovery
內部的負載均衡策略返回Logging Admin
的部署服務器IP
以及端口號
,這樣Logging Client
就可以完成請求日志的上報流程。
搭建Eureka Server
我們先來搭建一個Eureka Server
,請訪問【搭建服務注冊中心Eureka Server】文章內容查看具體搭建流程。
將Logging Admin注冊到Eureka
既然使用的是服務注冊中心
,我們需要將之前章節將的Logging Admin
進行簡單的改造,添加Eureka
客戶端相關的依賴,并在application.yml
配置文件內添加Eureka Server
的相關配置,如果對Logging Admin
不了解的同學可以訪問【將ApiBoot Logging采集的日志上報到Admin】查看文章內容,文章底部有源碼。
添加Eureka Client依賴
我們需要將Logging Admin
注冊到Eureka Server
,對于Eureka Server
而言Logging Admin
是一個客戶端
(Eureka Client)角色。
我們在pom.xml
文件內添加如下配置:
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
啟用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("{}服務啟動成功.", "日志管理中心");
}
}
配置注冊到Eureka Server
我們在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注冊到Eureka
Logging Client
其實就是我們的業務服務,不要被名稱誤導,我們在本章源碼內創建一個user-service
模塊來作為測試的業務服務,我們也需要將user-service
作為客戶端注冊到Eureka Server
,可參考【使用ApiBoot Logging進行統一管理請求日志】文章內容創建項目。
添加Eureka Client依賴
在pom.xml
配置文件內添加如下依賴:
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("{}服務啟動成功.", "用戶");
}
}
配置注冊到Eureka Server
我們在application.yml
配置文件內添加Eureka Server
的相關配置信息,如下所示:
# Eureka Config
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka/
instance:
prefer-ip-address: true
配置Logging Admin服務信息
這是本章的核心內容,我們在之前都是通過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
進行傳遞,這會在我們后期的知識點中講到。
審核編輯 黃昊宇
-
JAVA
+關注
關注
19文章
2970瀏覽量
104811 -
spring
+關注
關注
0文章
340瀏覽量
14353 -
MySQL
+關注
關注
1文章
816瀏覽量
26607 -
人臉識別
+關注
關注
76文章
4012瀏覽量
81958
發布評論請先 登錄
相關推薦
評論