最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot+輕量級分布式日志框架GrayLog實踐

 更新時間:2025年08月12日 09:09:28   作者:Java程序員 擁抱ai  
將SpringBoot日志遷移至GrayLog的實戰(zhàn)經(jīng)驗,稱其配置簡單、輕量高效,支持多環(huán)境分布式,通過GELF格式實現(xiàn)快速日志追蹤與報警,尤其強(qiáng)調(diào)traceId在跨服務(wù)定位中的關(guān)鍵作用,降低維護(hù)成本并提升故障排查效率

最近晚上加班到快十一點半,在公司樓下喝冰可樂那會兒,咱們組那小王突然拍我一下,說他最近把SpringBoot配GrayLog,日志這一塊感覺有點上頭。

我說GrayLog那個玩意兒不是挺輕量的嘛,以前搞ELK動不動就一堆依賴一堆配置,現(xiàn)在整GrayLog感覺人都輕松不少。

剛好今天正好有空,啰嗦兩句,要是你哪天日志搞崩潰了可以直接抄作業(yè)。

場景拉滿:生產(chǎn)線上日志怎么搞?

先說背景啊,我們組一直搞SpringBoot,之前日志那一套都是ELK,Logstash天天吃內(nèi)存,配置復(fù)雜不說,有時候線上臨時加個字段得重啟,麻煩得一批。

后來有一天我在茶水間刷到GrayLog,想了想,這東西能不能直接上SpringBoot,順手帶一下多環(huán)境分布式?你們懂的,現(xiàn)在服務(wù)都拆小了,日志要是不能快速定位,真的要人命。

GrayLog配SpringBoot,配置真的就...

其實全流程非常絲滑,直接講代碼,沒啥復(fù)雜的地方。

比如你們?nèi)绻玫腖ogback,直接加一個GELF appender,GELF是GrayLog的日志格式。

貼個配置,別嫌啰嗦:

<!-- resources/logback-spring.xml -->
<configuration>
    <appender name="GRAYLOG" class="me.moocar.logbackgelf.GelfAppender">
        <host>udp:graylog.yourdomain.com</host>
        <port>12201</port>
        <facility>springboot-app</facility>
        <includeFullMDC>true</includeFullMDC>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <root level="INFO">
        <appender-ref ref="GRAYLOG"/>
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

就這個配置,我去年做的項目,生產(chǎn)環(huán)境一上線就能用。GrayLog這邊連UDP端口就行,根本不用折騰ELK那些配置腳本。

有一次我們線上流量一上來,日志量也大,GrayLog直接撐住,瀏覽器查日志秒出結(jié)果。關(guān)鍵是字段還能自定義,想加啥業(yè)務(wù)字段隨便加,MDC那一套直接塞。

舉個例子啊,前幾天我在調(diào)一個分布式的下單鏈路,三個服務(wù)之間互相調(diào)用,日志全都聚在GrayLog里。我直接用traceId串起來,點兩下就能查到完整調(diào)用鏈,連前端報錯都能溯源回后端,前端小姐姐都說“你怎么定位這么快”。其實不是我牛,純粹是GrayLog香。

你們試試用Logback自帶的PatternLayout打印traceId、userId之類的,然后MDC塞一下:

// 每次請求處理加上traceId
MDC.put("traceId", traceId);

GrayLog那邊直接搜traceId,跨服務(wù)、跨機(jī)器全搞定。有一回深夜查線上事故,全靠GrayLog救命,老板還夸了兩句。

部署GrayLog其實就一docker-compose,MongoDB和Elasticsearch別太舊,GrayLog本體開起來。你要是本地測隨便搞,線上建議掛點盤,日志多的時候Elasticsearch吃點資源,其他真沒啥。

version: '3'
services:
mongo:
    image:mongo:5
elasticsearch:
    image:docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    environment:
      -discovery.type=single-node
graylog:
    image:graylog/graylog:5.0
    environment:
      -GRAYLOG_PASSWORD_SECRET=xxxxxx
      -GRAYLOG_ROOT_PASSWORD_SHA2=xxxxxx
      -GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
    depends_on:
      -mongo
      -elasticsearch
    ports:
      -"9000:9000"
      -"12201:12201/udp"

啟動完直接網(wǎng)頁打開登錄就行。配置輸入源選GELF/UDP,SpringBoot那邊就開始推日志,真的沒啥門檻。

對了,還有一個,GrayLog支持自定義Alert,某些嚴(yán)重級別的日志可以直接發(fā)釘釘、郵件、Slack,都是點點鼠標(biāo)的事兒。有回我們數(shù)據(jù)庫掛了,GrayLog一分鐘內(nèi)自動報警,運維直接就拉人進(jìn)群排查。

還有日志存儲策略,可以設(shè)自動歸檔、分組、定期清理,你不用再怕磁盤爆掉。ELK玩過都知道,那玩意兒不手動維護(hù)很快就掛了,GrayLog基本不用操心,出事也能很快恢復(fù)。

你說GrayLog是不是最強(qiáng)日志框架,這我真不敢說。但反正咱們現(xiàn)在SpringBoot配GrayLog,維護(hù)成本低,查日志體驗又好,連業(yè)務(wù)線的同事都能自己搜。搞分布式一定要記得加traceId啊,不然日志再好也找不到全鏈路,別問我是怎么知道的……

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解IDEA使用Maven項目不能加入本地Jar包的解決方法

    詳解IDEA使用Maven項目不能加入本地Jar包的解決方法

    這篇文章主要介紹了詳解IDEA使用Maven項目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • springboot整合log4j的踩坑實戰(zhàn)記錄

    springboot整合log4j的踩坑實戰(zhàn)記錄

    log日志的重要性不言而喻,所以我們需要在系統(tǒng)內(nèi)根據(jù)實際的業(yè)務(wù)進(jìn)行日志的整合,下面這篇文章主要給大家介紹了關(guān)于springboot整合log4j的踩坑實戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java 字符終端上獲取輸入三種的方式分享

    Java 字符終端上獲取輸入三種的方式分享

    這篇文章主要介紹了Java 字符終端上獲取輸入三種的方式,有需要的朋友可以參考一下
    2013-11-11
  • spring boot 自動更新靜態(tài)文件和后臺代碼的實例

    spring boot 自動更新靜態(tài)文件和后臺代碼的實例

    下面小編就為大家分享一篇spring boot 自動更新靜態(tài)文件和后臺代碼的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • File.createTempFile創(chuàng)建臨時文件的示例詳解

    File.createTempFile創(chuàng)建臨時文件的示例詳解

    這篇文章主要介紹了File.createTempFile創(chuàng)建臨時文件的示例詳解,在默認(rèn)臨時文件目錄中創(chuàng)建一個空文件,使用給定前綴和后綴生成其名稱。 如果感興趣來了解一下
    2020-07-07
  • springboot自帶的緩存@EnableCaching用法

    springboot自帶的緩存@EnableCaching用法

    這篇文章主要介紹了springboot自帶的緩存@EnableCaching用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • java開發(fā)https請求ssl不受信任問題解決方法

    java開發(fā)https請求ssl不受信任問題解決方法

    這篇文章主要介紹了java開發(fā)https請求ssl不受信任問題解決方法,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • SpringBoot讀取yaml文件操作詳解

    SpringBoot讀取yaml文件操作詳解

    YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標(biāo)記語言)的遞歸縮寫。在開發(fā)的這種語言時,YAML 的意思其實是:“Yet Another Markup Language”(仍是一種標(biāo)記語言),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Struts 2 實現(xiàn)Action的幾種方式

    Struts 2 實現(xiàn)Action的幾種方式

    本篇文章主要介紹了Struts 2 實現(xiàn)Action的幾種方式,Struts 2框架下實現(xiàn)Action類有三種方式,有興趣的可以了解一下
    2017-10-10
  • SpringBoot如何將applicaton.properties中的數(shù)據(jù)綁定到bean中

    SpringBoot如何將applicaton.properties中的數(shù)據(jù)綁定到bean中

    SpringBoot中我們該如何將applicaton.properties中的數(shù)據(jù)綁定到bean中呢?在之間我們是可以通過@value注解,在SpringBoot自動啟動后,會自動的去相應(yīng)的路徑中去尋找applicaton.properties配置文件,然后將相應(yīng)的值賦值上,感興趣的朋友一起看看吧
    2025-05-05

最新評論

上饶县| 合阳县| 小金县| 南岸区| 普兰店市| 察雅县| 巴林左旗| 新营市| 称多县| 麻栗坡县| 望谟县| 临海市| 乐平市| 萍乡市| 兴海县| 阳江市| 始兴县| 丰县| 开阳县| 江西省| 高平市| 双牌县| 且末县| 邵东县| 金山区| 嘉禾县| 沛县| 河池市| 满洲里市| 临澧县| 浦县| 岢岚县| 霍林郭勒市| 泰州市| 卢氏县| 健康| 禹城市| 故城县| 阿拉善左旗| 嘉祥县| 桓仁|