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
+關注
關注
20文章
3001瀏覽量
116422 -
spring
+關注
關注
0文章
341瀏覽量
15935 -
MySQL
+關注
關注
1文章
905瀏覽量
29518 -
人臉識別
+關注
關注
77文章
4127瀏覽量
88459
發布評論請先 登錄
阿里云SLB負載均衡配置指南
Nginx反向代理和負載均衡配置實戰
彈性負載均衡:現代 IT 架構的高可用與高并發基石
燃料電池負載均衡測試:解鎖高效供能密碼
華納云:海外服務器負載均衡與高可用架構設計
怎樣確定分布式光伏集群通信網絡的負載均衡策略?
遠程日志errDump調試功能實戰教程:案例驅動的故障排查!
四層和七層負載均衡的核心區別
NetApp與Google Cloud合作,簡化云端高性能工作負載的擴展
Kubernetes負載均衡器MetalLB介紹
ApiBoot Logging整合Spring Cloud Eureka負載均衡上報日志
評論