SpringBoot集成Graylog

在微服務(wù)架構(gòu)中,一個(gè)服務(wù)通常都會(huì)有多個(gè)實(shí)例,而這些服務(wù)實(shí)例可能會(huì)被部署到不同的機(jī)器或虛擬容器上。此時(shí)對(duì)于日志數(shù)據(jù)的查看和分析就會(huì)變得困難起來,因?yàn)檫@些服務(wù)的日志數(shù)據(jù)都散落在各自實(shí)例所在的機(jī)器或容器上。例如,我現(xiàn)在要在訂單服務(wù)里查找一個(gè)訂單id為1的日志,而訂單服務(wù)有10個(gè)實(shí)例并且部署在10臺(tái)不同的機(jī)器上,那么我就得一臺(tái)臺(tái)的去找這個(gè)日志數(shù)據(jù)。所以這時(shí)候我們就需要有一個(gè)可以實(shí)現(xiàn)日志聚合的工具,將所有實(shí)例的日志數(shù)據(jù)都聚合在一個(gè)地方,那么我們就不需要到每個(gè)實(shí)例去找日志了,而本文將使用的日志聚合工具為Graylog。

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),郴州網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:郴州等地區(qū)。郴州做網(wǎng)站價(jià)格咨詢:028-86922220

關(guān)于Graylog的介紹及安裝可以參考我另一篇文章:

  • Docker安裝Graylog

目前使用Java語言編寫微服務(wù)架構(gòu)的項(xiàng)目,基本都是使用SpringBoot作為項(xiàng)目的基本開發(fā)框架,所以本文主要介紹SpringBoot如何集成Graylog,并將日志數(shù)據(jù)發(fā)送給Graylog服務(wù)實(shí)現(xiàn)日志聚合。

1.首先創(chuàng)建一個(gè)SpringBoot項(xiàng)目,SpringBoot默認(rèn)自帶的日志框架是Logback,我們可以到Graylog組件市場(chǎng)查找Logback相應(yīng)的組件。

我這里選擇了一個(gè)近期有更新過的組件,該組件的github地址如下:

https://github.com/osiegmar/logback-gelf

2.然后在項(xiàng)目的pom.xml加入該組件的依賴,如下:

<dependency>
    <groupId>de.siegmar</groupId>
    <artifactId>logback-gelf</artifactId>
    <version>2.0.0</version>
</dependency>

3.接著在項(xiàng)目的resources目錄下,新建一個(gè)logback.xml文件,編輯文件內(nèi)容如下:

<configuration>
    <!-- 配置控制臺(tái)的輸出日志 -->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <!-- 定義日志輸出的格式 -->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>
                    %d - [%thread] %-5level %logger{35} - [%line] - %msg%n
                </pattern>
            </layout>
        </encoder>
    </appender>

    <!-- 配置日志輸出到Graylog服務(wù) -->
    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
        <!-- 配置Graylog服務(wù)的地址 -->
        <graylogHost>192.168.190.129</graylogHost>
        <!-- UDP Input端口 -->
        <graylogPort>12201</graylogPort>
    </appender>

    <root level="info">
        <appender-ref ref="GELF" />
        <appender-ref ref="consoleLog" />
    </root>

</configuration>

我這邊的UDP Input配置信息如下:
SpringBoot集成Graylog

4.配置完成后啟動(dòng)項(xiàng)目,啟動(dòng)完成后正常情況下可以在Graylog的Search界面中查看日志信息:
SpringBoot集成Graylog

點(diǎn)擊一條日志信息會(huì)展開詳細(xì)的字段:
SpringBoot集成Graylog

以上是最簡(jiǎn)單的日志配置,如果希望對(duì)更多配置項(xiàng)進(jìn)行自定義的話,可以參考該組件的GitHub文檔,上面有具體的配置項(xiàng)說明,下面給出一個(gè)我自己常用的appender配置示例:

<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
    <!-- Graylog服務(wù)的地址 -->
    <graylogHost>192.168.190.129</graylogHost>
    <!-- UDP Input端口 -->
    <graylogPort>12201</graylogPort>
    <!-- 最大GELF數(shù)據(jù)塊大?。▎挝唬鹤止?jié)),508為建議最小值,最大值為65467 -->
    <maxChunkSize>508</maxChunkSize>
    <!-- 是否使用壓縮 -->
    <useCompression>true</useCompression>
    <encoder class="de.siegmar.logbackgelf.GelfEncoder">
        <!-- 是否發(fā)送原生的日志信息 -->
        <includeRawMessage>false</includeRawMessage>
        <includeMarker>true</includeMarker>
        <includeMdcData>true</includeMdcData>
        <includeCallerData>false</includeCallerData>
        <includeRootCauseData>false</includeRootCauseData>
        <!-- 是否發(fā)送日志級(jí)別的名稱,否則默認(rèn)以數(shù)字代表日志級(jí)別 -->
        <includeLevelName>true</includeLevelName>
        <shortPatternLayout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%m%nopex</pattern>
        </shortPatternLayout>
        <fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d - [%thread] %-5level %logger{35} - %msg%n</pattern>
        </fullPatternLayout>
        <!-- 配置應(yīng)用名稱(服務(wù)名稱),通過staticField標(biāo)簽可以自定義一些固定的日志字段 -->
        <staticField>app_name:backend</staticField>
        <staticField>os_arch:${os.arch}</staticField>
        <staticField>os_name:${os.name}</staticField>
        <staticField>os_version:${os.version}</staticField>
    </encoder>
</appender>

現(xiàn)在我們已經(jīng)成功將項(xiàng)目的日志數(shù)據(jù)發(fā)送到了Graylog服務(wù),如果我們想在Graylog上檢索日志也很簡(jiǎn)單,只需要使用一些簡(jiǎn)單的語法即可,例如我要查詢包含Mapping的日志信息:
SpringBoot集成Graylog

還可以使用一些條件表達(dá)式,例如我要查詢message字段包含http,并且日志級(jí)別為INFO的日志信息:
SpringBoot集成Graylog

常用的日志搜索語法如下:

  • 模糊查詢:直接輸入要查詢的內(nèi)容,例如:orderid
  • 精確查詢:要查詢的內(nèi)容加上引號(hào),例如:"orderid: 11"
  • 指定字段查詢: message:http 或 message:"http"
  • 多字段查詢:message:(base-service base-web)
  • 多條件查詢:message:http AND level_name:ERROR OR source:192.168.0.4
  • 正則匹配查詢:app_name:order-service AND orderid:12?4*

注意:以上示例中涉及的符號(hào)全部是英文符號(hào),且字母不區(qū)分大小寫

關(guān)于搜索語法的官方文檔地址如下:

http://docs.graylog.org/en/3.0/pages/queries.html

分享題目:SpringBoot集成Graylog
分享鏈接:http://bm7419.com/article48/psdpep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司軟件開發(fā)、微信公眾號(hào)商城網(wǎng)站、面包屑導(dǎo)航外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作