ApiBoot Logging整合SpringCloud Eureka負載均衡上報日誌

ApiBoot Logging支持整合服務註冊中心(Eureka、Consul、Nacos Discovery、Zookeeper...)進行上報請求日誌,Logging Client會從服務註冊中心內找到指定ServiceIDLogging Admin具體可用實例,經過SpringCloud Discovery內部的負載均衡策略返回Logging Admin的部署服務器IP以及端口號,這樣Logging Client就能夠完成請求日誌的上報流程。html

博客原文:blog.yuqiyu.com/apiboot-log…java

搭建Eureka Server

咱們先來搭建一個Eureka Server,請訪問【搭建服務註冊中心Eureka Server】文章內容查看具體搭建流程。git

將Logging Admin註冊到Eureka

既然使用的是服務註冊中心,咱們須要將以前章節將的Logging Admin進行簡單的改造,添加Eureka客戶端相關的依賴,並在application.yml配置文件內添加Eureka Server的相關配置,若是對Logging Admin不瞭解的同窗能夠訪問【將ApiBoot Logging採集的日誌上報到Admin】查看文章內容,文章底部有源碼。spring

添加Eureka Client依賴

咱們須要將Logging Admin註冊到Eureka Server,對於Eureka Server而言Logging Admin是一個客戶端(Eureka Client)角色。json

咱們在pom.xml文件內添加以下配置:api

<!--Eureka Client-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
複製代碼

啓用Eureka Client

添加依賴後咱們還須要在XxxApplication入口類添加@EnableDiscoveryClient註解來啓用Eureka Client的相關功能,以下所示:bash

@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配置文件內添加以下依賴:app

<!--Eureka Client-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
複製代碼

啓用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 AdminIP地址以及服務端口號,而本章咱們就要藉助服務註冊中心(Eureka Server)來從實例列表中獲取Logging Admin服務信息,ApiBoot Logging提供了一個配置參數api.boot.logging.discovery.service-id進行配置Logging AdminServiceID,也就是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-serverlogging-adminuser-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"
	}
]
複製代碼

自此咱們已經成功的整合EurekaApiBoot Logging

敲黑板,劃重點

ApiBoot Logging內部提供的兩種獲取Logging Admin服務信息的方式,分別是:service-idserver-address,都是比較經常使用的,使用service-id方式能夠無縫整合SpringCloud進行使用,而鏈路信息能夠經過OpenfeignRestTemplate進行傳遞,這會在咱們後期的知識點中講到。

代碼示例

若是您喜歡本篇文章請爲源碼倉庫點個Star,謝謝!!! 本篇文章示例源碼能夠經過如下途徑獲取,目錄爲SpringBoot2.x/apiboot-logging-integrates-eureka-report-logs

做者我的 博客 使用開源框架 ApiBoot 助你成爲Api接口服務架構師

相關文章
相關標籤/搜索