0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ApiBoot Logging整合Spring Cloud Eureka負(fù)載均衡上報日志

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-10 22:08 ? 次閱讀

ApiBoot Logging支持整合服務(wù)注冊中心(Eureka、Consul、Nacos Discovery、Zookeeper...)進(jìn)行上報請求日志,Logging Client會從服務(wù)注冊中心內(nèi)找到指定ServiceIDLogging Admin具體可用實例,通過SpringCloud Discovery內(nèi)部的負(fù)載均衡策略返回Logging Admin的部署服務(wù)器IP以及端口,這樣Logging Client就可以完成請求日志的上報流程。

搭建Eureka Server

我們先來搭建一個Eureka Server,請訪問【搭建服務(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其實就是我們的業(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)建項目。

添加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 AdminIP地址以及服務(wù)端口號,而本章我們就要借助服務(wù)注冊中心(Eureka Server)來從實例列表中獲取Logging Admin服務(wù)信息,ApiBoot Logging提供了一個配置參數(shù)api.boot.logging.discovery.service-id進(jìn)行配置Logging AdminServiceID,也就是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ù)載均衡篩選后獲取一個可用的實例信息進(jìn)行上報日志。

運行測試

我們將本章源碼內(nèi)用到的三個服務(wù)eureka-server、logging-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"
    }
]

自此我們已經(jīng)成功的整合EurekaApiBoot Logging。

敲黑板,劃重點

ApiBoot Logging內(nèi)部提供的兩種獲取Logging Admin服務(wù)信息的方式,分別是:service-id、server-address,都是比較常用的,使用service-id方式可以無縫整合SpringCloud進(jìn)行使用,而鏈路信息可以通過Openfeign、RestTemplate進(jìn)行傳遞,這會在我們后期的知識點中講到。

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104110
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    335

    瀏覽量

    14259
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    789

    瀏覽量

    26286
  • 人臉識別
    +關(guān)注

    關(guān)注

    76

    文章

    3998

    瀏覽量

    81364
收藏 人收藏

    評論

    相關(guān)推薦

    Spring Cloud Gateway網(wǎng)關(guān)框架

    Spring Cloud Gateway網(wǎng)關(guān)框架 本軟件微服務(wù)架構(gòu)中采用Spring Cloud Gateway網(wǎng)關(guān)控制框架,Spring
    的頭像 發(fā)表于 08-22 09:58 ?290次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> Gateway網(wǎng)關(guān)框架

    如何確定適合的負(fù)載均衡比例

    路由器的負(fù)載均衡是一種應(yīng)用于網(wǎng)絡(luò)中的技術(shù),它可以平衡網(wǎng)絡(luò)流量的分配,提高網(wǎng)絡(luò)的性能和穩(wěn)定性。在配置路由器的負(fù)載均衡時,選擇合適的負(fù)載
    的頭像 發(fā)表于 12-15 10:36 ?1217次閱讀

    路由器負(fù)載均衡怎么配置

    路由器負(fù)載均衡是一種重要的網(wǎng)絡(luò)技術(shù),它能夠?qū)⒍鄠€網(wǎng)絡(luò)連接的流量分配到多個路由器上,以提高網(wǎng)絡(luò)的性能和穩(wěn)定性。本文將詳細(xì)介紹路由器負(fù)載均衡的配置方法,包括
    的頭像 發(fā)表于 12-13 11:17 ?2578次閱讀

    dubbo和spring cloud區(qū)別

    Dubbo和Spring Cloud是兩個非常流行的微服務(wù)框架,各有自己的特點和優(yōu)勢。在本文中,我們將詳細(xì)介紹Dubbo和Spring Cloud的區(qū)別。 1.架構(gòu)設(shè)計: Dubbo是
    的頭像 發(fā)表于 12-04 14:47 ?1331次閱讀

    springcloud的優(yōu)勢與劣勢

    Spring Cloud 是一個基于Spring Boot的開發(fā)工具集,用于幫助開發(fā)人員快速搭建分布式系統(tǒng)的微服務(wù)架構(gòu)。它提供了一系列的組件和工具,包括服務(wù)注冊與發(fā)現(xiàn)、服務(wù)調(diào)用、負(fù)載
    的頭像 發(fā)表于 12-03 16:22 ?1646次閱讀

    springcloud的網(wǎng)關(guān)是什么

    Spring Cloud網(wǎng)關(guān)(Spring Cloud Gateway)是一種基于Spring Clou
    的頭像 發(fā)表于 12-03 15:54 ?748次閱讀

    springcloud有哪些主件

    Discovery): EurekaSpring Cloud的服務(wù)注冊與發(fā)現(xiàn)組件,可以輕松注冊和發(fā)現(xiàn)服務(wù)。 Consul:另一個流行的服務(wù)注冊與發(fā)現(xiàn)組件,具有更多的功能和特性。 服務(wù)調(diào)用
    的頭像 發(fā)表于 12-03 15:33 ?452次閱讀

    kernel日志寫入logd介紹

    kernel獲取kernel日志,依賴于如下屬性值,具體查看源碼xxx/system/logging/logd/main.cpp中有體現(xiàn)。 2.3.3 詳細(xì)總結(jié)流程 2.3.3.1 logd的日志流程
    的頭像 發(fā)表于 11-23 17:11 ?485次閱讀
    kernel<b class='flag-5'>日志</b>寫入logd介紹

    springcloud如何實現(xiàn)分布式

    Spring Cloud是基于Spring Boot開發(fā)的一套分布式系統(tǒng)解決方案,它主要包括了多個子項目,如服務(wù)注冊與發(fā)現(xiàn)、配置中心、負(fù)載均衡
    的頭像 發(fā)表于 11-16 11:01 ?563次閱讀

    spring分布式框架有哪些

    Spring分布式框架。 Spring Cloud Spring Cloud是基于Spring
    的頭像 發(fā)表于 11-16 10:58 ?651次閱讀

    Spring Cloud :打造可擴(kuò)展的微服務(wù)網(wǎng)關(guān)

    Spring Cloud Gateway是一個基于Spring Framework 5和Project Reactor的反應(yīng)式編程模型的微服務(wù)網(wǎng)關(guān)。它提供了豐富的功能,包括動態(tài)路由、請求限流、集成安全性等,使其成為構(gòu)建微服務(wù)架構(gòu)
    的頭像 發(fā)表于 10-22 10:03 ?428次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> :打造可擴(kuò)展的微服務(wù)網(wǎng)關(guān)

    Spring Boot啟動 Eureka流程

    在上篇中已經(jīng)說過了 Eureka-Server 本質(zhì)上是一個 web 應(yīng)用的項目,今天就來看看 Spring Boot 是怎么啟動 Eureka 的。 Spring Boot 啟動
    的頭像 發(fā)表于 10-10 11:40 ?709次閱讀
    <b class='flag-5'>Spring</b> Boot啟動 <b class='flag-5'>Eureka</b>流程

    Eureka Server面向接口的方式讀取配置文件

    eureka sersver 配置環(huán)境 在上一篇中已經(jīng)介紹了,spring boot 是調(diào)用 類的 方法啟動 Eureka Server 的。 public void
    的頭像 發(fā)表于 10-09 17:05 ?467次閱讀
    <b class='flag-5'>Eureka</b> Server面向接口的方式讀取配置文件

    Eureka Client的創(chuàng)建案例

    在上篇中已經(jīng)講了 Eureka Server 的配置文件讀取。接下來講講 Eureka Client 的創(chuàng)建。每一個 eureka server 都是一個 eureka client,
    的頭像 發(fā)表于 10-09 17:03 ?416次閱讀
    <b class='flag-5'>Eureka</b> Client的創(chuàng)建案例

    Python寫入到日志文件完整代碼

    ;log_file.log' ) # 設(shè)置日志格式 formatter = logging. Formatter ( '%(asctime)s - %(module)s
    的頭像 發(fā)表于 10-07 11:50 ?1102次閱讀
    Python寫入到<b class='flag-5'>日志</b>文件完整代碼