亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot集成Graylog

發布時間:2020-05-09 22:16:53 來源:網絡 閱讀:2308 作者:ZeroOne01 欄目:編程語言

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

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

  • Docker安裝Graylog

目前使用Java語言編寫微服務架構的項目,基本都是使用SpringBoot作為項目的基本開發框架,所以本文主要介紹SpringBoot如何集成Graylog,并將日志數據發送給Graylog服務實現日志聚合。

1.首先創建一個SpringBoot項目,SpringBoot默認自帶的日志框架是Logback,我們可以到Graylog組件市場查找Logback相應的組件。

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

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

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

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

3.接著在項目的resources目錄下,新建一個logback.xml文件,編輯文件內容如下:

<configuration>
    <!-- 配置控制臺的輸出日志 -->
    <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服務 -->
    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
        <!-- 配置Graylog服務的地址 -->
        <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.配置完成后啟動項目,啟動完成后正常情況下可以在Graylog的Search界面中查看日志信息:
SpringBoot集成Graylog

點擊一條日志信息會展開詳細的字段:
SpringBoot集成Graylog

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

<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
    <!-- Graylog服務的地址 -->
    <graylogHost>192.168.190.129</graylogHost>
    <!-- UDP Input端口 -->
    <graylogPort>12201</graylogPort>
    <!-- 最大GELF數據塊大小(單位:字節),508為建議最小值,最大值為65467 -->
    <maxChunkSize>508</maxChunkSize>
    <!-- 是否使用壓縮 -->
    <useCompression>true</useCompression>
    <encoder class="de.siegmar.logbackgelf.GelfEncoder">
        <!-- 是否發送原生的日志信息 -->
        <includeRawMessage>false</includeRawMessage>
        <includeMarker>true</includeMarker>
        <includeMdcData>true</includeMdcData>
        <includeCallerData>false</includeCallerData>
        <includeRootCauseData>false</includeRootCauseData>
        <!-- 是否發送日志級別的名稱,否則默認以數字代表日志級別 -->
        <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>
        <!-- 配置應用名稱(服務名稱),通過staticField標簽可以自定義一些固定的日志字段 -->
        <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>

現在我們已經成功將項目的日志數據發送到了Graylog服務,如果我們想在Graylog上檢索日志也很簡單,只需要使用一些簡單的語法即可,例如我要查詢包含Mapping的日志信息:
SpringBoot集成Graylog

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

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

  • 模糊查詢:直接輸入要查詢的內容,例如:orderid
  • 精確查詢:要查詢的內容加上引號,例如:"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*

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

關于搜索語法的官方文檔地址如下:

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩施市| 吐鲁番市| 临夏县| 宣恩县| 理塘县| 建水县| 疏勒县| 弥渡县| 光泽县| 巨鹿县| 昌宁县| 砀山县| 那曲县| 汪清县| 丁青县| 瓦房店市| 隆德县| 淮阳县| 夏河县| 临泉县| 青神县| 都兰县| 临夏市| 梁山县| 佛冈县| 三亚市| 宁河县| 黄浦区| 山阴县| 故城县| 岫岩| 榆中县| 柏乡县| 礼泉县| 长沙市| 仙居县| 枣强县| 南川市| 乌拉特后旗| 明水县| 保亭|