在微服務架構中,一個服務通常都會有多個實例,而這些服務實例可能會被部署到不同的機器或虛擬容器上。此時對于日志數據的查看和分析就會變得困難起來,因為這些服務的日志數據都散落在各自實例所在的機器或容器上。例如,我現在要在訂單服務里查找一個訂單id為1的日志,而訂單服務有10個實例并且部署在10臺不同的機器上,那么我就得一臺臺的去找這個日志數據。所以這時候我們就需要有一個可以實現日志聚合的工具,將所有實例的日志數據都聚合在一個地方,那么我們就不需要到每個實例去找日志了,而本文將使用的日志聚合工具為Graylog
部署Graylog
老樣子,直接上docker-compose,如果一直跟著我的步伐,應該對著不陌生了。docker-compose.yml 的內容其實我也是抄官網的,這里還是貼下吧(就不用你們翻了)
version:'3'
services:
mongo:
image:mongo:4.2
networks:
-graylog
elasticsearch:
image:docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
environment:
-http.host=0.0.0.0
-transport.host=localhost
-network.host=0.0.0.0
-"ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true-Xms512m-Xmx512m"
ulimits:
memlock:
soft:-1
hard:-1
deploy:
resources:
limits:
memory:1g
networks:
-graylog
graylog:
image:graylog/graylog:4.2
environment:
-GRAYLOG_PASSWORD_SECRET=somepasswordpepper
-GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
-GRAYLOG_HTTP_EXTERNAL_URI=http://ip:9009/#這里注意要改ip
entrypoint:/usr/bin/tini--wait-for-itelasticsearch:9200--/docker-entrypoint.sh
networks:
-graylog
restart:always
depends_on:
-mongo
-elasticsearch
ports:
-9009:9000
-1514:1514
-1514:1514/udp
-12201:12201
-12201:12201/udp
networks:
graylog:
driver:bridg
這個文件里唯一需要改動的就是 ip (本來的端口是 9000 的,我由于已經占用了 9000 端口了,所以我這里把端口改成了 9009 ,你們可以隨意)
嗯,寫完 docker-compose.yml 文件,直接 docker-compose up -d 它就啟動起來咯。
啟動以后,我們就可以通過 ip:port 訪問對應的Graylog后臺地址了,默認的賬號和密碼是 admin/admin
![c21aeee2-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k2AIlUuAABTD3PUc9M870.jpg)
隨后,我們配置下 inputs 的配置,找到 GELF UDP ,然后點擊 Launch new input ,只需要填寫 Title 字段,保存就完事了(其他不用動)。
![c24bf01e-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k2AI5S5AACAYPh5hrw905.jpg)
基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
- 項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
- 視頻教程:https://doc.iocoder.cn/video/
Spring Boot 集成GrayLog
首先創建一個SpringBoot項目,SpringBoot默認自帶的日志框架是Logback,我們可以到 Graylog組件市場查找Logback相應的組件。
添加依賴如下:
<dependency>
<groupId>de.siegmargroupId>
<artifactId>logback-gelfartifactId>
<version>3.0.0version>
dependency>
接著在項目的resources目錄下,新建一個logback.xml
文件,編輯文件內容如下:
<appendername="GELF"class="de.siegmar.logbackgelf.GelfUdpAppender">
<graylogHost>ipgraylogHost>
<graylogPort>12201graylogPort>
<maxChunkSize>508maxChunkSize>
<useCompression>trueuseCompression>
<encoderclass="de.siegmar.logbackgelf.GelfEncoder">
<includeRawMessage>falseincludeRawMessage>
<includeMarker>trueincludeMarker>
<includeMdcData>trueincludeMdcData>
<includeCallerData>falseincludeCallerData>
<includeRootCauseData>falseincludeRootCauseData>
<includeLevelName>trueincludeLevelName>
<shortPatternLayoutclass="ch.qos.logback.classic.PatternLayout">
<pattern>%m%nopexpattern>
shortPatternLayout>
<fullPatternLayoutclass="ch.qos.logback.classic.PatternLayout">
<pattern>%d-[%thread]%-5level%logger{35}-%msg%npattern>
fullPatternLayout>
<staticField>app_name:austinstaticField>
encoder>
appender>
在這個配置信息里,唯一要改的也只是 ip 的地址,到這里接入就完畢了,我們再打開控制臺,就能看到日志的信息啦。
![c25d5674-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k6AcyLQAABNNOF353s797.jpg)
配置完成后啟動項目,啟動完成后正常情況下可以在Graylog的Search界面中查看日志信息:
![c2734b32-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k6AIjejAABVnIOim9c502.jpg)
點擊一條日志信息會展開詳細的字段:
![c29f074a-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k6AAo-5AAA4XLYzcts060.jpg)
以上是最簡單的日志配置,如果希望對更多配置項進行自定義的話,可以參考該組件的GitHub文檔,上面有具體的配置項說明
現在我們已經成功將項目的日志數據發送到了Graylog服務,如果我們想在Graylog上檢索日志也很簡單,只需要使用一些簡單的語法即可,例如我要查詢包含Mapping的日志信息:
![c2be869c-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k6AB0uSAABLwQqzVa8320.jpg)
還可以使用一些條件表達式,例如我要查詢message字段包含http,并且日志級別為INFO的日志信息:
![c2df12f4-559e-11ed-a3b6-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/A1/F4/wKgaomTt7k6AePfAAABSG_9TsE8112.jpg)
常用的日志搜索語法如下:
- 模糊查詢:直接輸入要查詢的內容,例如:orderid
- 精確查詢:要查詢的內容加上引號,例如:"orderid: 11"
- 指定字段查詢:message:http 或 message:"http"
- 多字段查詢:message:(base-service base-web)
- 多條件查詢:message:http AND level_name:ERROR OR source:192.168.0.4
審核編輯 :李倩
-
框架
+關注
關注
0文章
403瀏覽量
17543 -
spring
+關注
關注
0文章
340瀏覽量
14392 -
日志
+關注
關注
0文章
139瀏覽量
10679 -
SpringBoot
+關注
關注
0文章
174瀏覽量
201
原文標題:SpringBoot接入輕量級分布式日志框架GrayLog
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
分布式日志追蹤ID實戰
分布式云化數據庫有哪些類型
分布式光伏發電系統的應用
![<b class='flag-5'>分布式</b>光伏發電系統的應用](https://file1.elecfans.com/web2/M00/0C/FF/wKgaomc-5piAEIHyAAvBtnTNeus156.png)
分布式光伏為企業帶來哪些便捷!
![<b class='flag-5'>分布式</b>光伏為企業帶來哪些便捷!](https://file1.elecfans.com/web2/M00/0A/F0/wKgaomcYjjiAejYtAALRIXNZ5dY292.png)
輕量級多級菜單控制框架
屋頂分布式光伏并網點如何監測電能質量
![屋頂<b class='flag-5'>分布式</b>光伏并網點如何監測電能質量](https://file1.elecfans.com/web2/M00/07/2D/wKgaombjnuGAen7vAAU9mUESszY085.png)
安科瑞分布式光伏監控系統的應用
![安科瑞<b class='flag-5'>分布式</b>光伏監控系統的應用](https://file1.elecfans.com//web2/M00/03/62/wKgaoma7_SOAFcqGAAP6CW0UFOg43.jpeg)
基于Openharmony輕量級操作系統的分布式數據管理開發案例
![基于Openharmony<b class='flag-5'>輕量級</b>操作系統的<b class='flag-5'>分布式</b>數據管理開發案例](https://file.elecfans.com/web2/M00/26/21/pYYBAGG5jjSALfrEAAAwAa9Oig8799.png)
基于Openharmony輕量級操作系統的分布式數據管理開發案例
深度詳解嵌入式系統專用輕量級框架設計
![深度詳解嵌入<b class='flag-5'>式</b>系統專用<b class='flag-5'>輕量級</b><b class='flag-5'>框架</b>設計](https://file1.elecfans.com/web2/M00/D2/87/wKgaomYjRd2APDxTAAAtWrrRF18443.png)
工商業企業屋頂光伏 分布式光伏發電系統
![工商業企業屋頂光伏 <b class='flag-5'>分布式</b>光伏發電系統](https://file1.elecfans.com//web2/M00/C4/7E/wKgZomXz6PaAKer5AAIerItopOg643.png)
評論