在微服務(wù)架構(gòu)中,一個(gè)服務(wù)通常都會(huì)有多個(gè)實(shí)例,而這些服務(wù)實(shí)例可能會(huì)被部署到不同的機(jī)器或虛擬容器上。此時(shí)對(duì)于日志數(shù)據(jù)的查看和分析就會(huì)變得困難起來(lái),因?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
部署Graylog
老樣子,直接上docker-compose,如果一直跟著我的步伐,應(yīng)該對(duì)著不陌生了。docker-compose.yml 的內(nèi)容其實(shí)我也是抄官網(wǎng)的,這里還是貼下吧(就不用你們翻了)
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
這個(gè)文件里唯一需要改動(dòng)的就是 ip (本來(lái)的端口是 9000 的,我由于已經(jīng)占用了 9000 端口了,所以我這里把端口改成了 9009 ,你們可以隨意)
嗯,寫(xiě)完 docker-compose.yml 文件,直接 docker-compose up -d 它就啟動(dòng)起來(lái)咯。
啟動(dòng)以后,我們就可以通過(guò) ip:port 訪問(wèn)對(duì)應(yīng)的Graylog后臺(tái)地址了,默認(rèn)的賬號(hào)和密碼是 admin/admin

隨后,我們配置下 inputs 的配置,找到 GELF UDP ,然后點(diǎn)擊 Launch new input ,只需要填寫(xiě) Title 字段,保存就完事了(其他不用動(dòng))。

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
- 項(xiàng)目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
- 視頻教程:https://doc.iocoder.cn/video/
Spring Boot 集成GrayLog
首先創(chuàng)建一個(gè)SpringBoot項(xiàng)目,SpringBoot默認(rèn)自帶的日志框架是Logback,我們可以到 Graylog組件市場(chǎng)查找Logback相應(yīng)的組件。
添加依賴(lài)如下:
<dependency>
<groupId>de.siegmargroupId>
<artifactId>logback-gelfartifactId>
<version>3.0.0version>
dependency>
接著在項(xiàng)目的resources目錄下,新建一個(gè)logback.xml文件,編輯文件內(nèi)容如下:
<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>
在這個(gè)配置信息里,唯一要改的也只是 ip 的地址,到這里接入就完畢了,我們?cè)俅蜷_(kāi)控制臺(tái),就能看到日志的信息啦。

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

點(diǎn)擊一條日志信息會(huì)展開(kāi)詳細(xì)的字段:

以上是最簡(jiǎn)單的日志配置,如果希望對(duì)更多配置項(xiàng)進(jìn)行自定義的話,可以參考該組件的GitHub文檔,上面有具體的配置項(xiàng)說(shuō)明
現(xiàn)在我們已經(jīng)成功將項(xiàng)目的日志數(shù)據(jù)發(fā)送到了Graylog服務(wù),如果我們想在Graylog上檢索日志也很簡(jiǎn)單,只需要使用一些簡(jiǎn)單的語(yǔ)法即可,例如我要查詢(xún)包含Mapping的日志信息:

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

常用的日志搜索語(yǔ)法如下:
- 模糊查詢(xún):直接輸入要查詢(xún)的內(nèi)容,例如:orderid
- 精確查詢(xún):要查詢(xún)的內(nèi)容加上引號(hào),例如:"orderid: 11"
- 指定字段查詢(xún):message:http 或 message:"http"
- 多字段查詢(xún):message:(base-service base-web)
- 多條件查詢(xún):message:http AND level_name:ERROR OR source:192.168.0.4
審核編輯 :李倩
-
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
18425 -
spring
+關(guān)注
關(guān)注
0文章
341瀏覽量
15940 -
日志
+關(guān)注
關(guān)注
0文章
146瀏覽量
11065 -
SpringBoot
+關(guān)注
關(guān)注
0文章
177瀏覽量
688
原文標(biāo)題:SpringBoot接入輕量級(jí)分布式日志框架GrayLog
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
分布式光伏發(fā)電接入配電網(wǎng)技術(shù)規(guī)定中關(guān)于“四可”裝置的內(nèi)容解析
光伏規(guī)約轉(zhuǎn)換器分布式光伏調(diào)控“四可”并網(wǎng)實(shí)施案例
SC-3568HA:解鎖鴻蒙全權(quán)限API與分布式能力的工業(yè)控制平臺(tái)
【CW32】uart_obj_fw 輕量級(jí)串口框架
【節(jié)能學(xué)院】Acrel-1000DP分布式光伏監(jiān)控系統(tǒng)在奉賢平高食品 4.4MW 分布式光伏中應(yīng)用
分布式光伏發(fā)電監(jiān)測(cè)系統(tǒng)技術(shù)方案
基于米爾瑞芯微RK3576開(kāi)發(fā)板部署運(yùn)行TinyMaix:超輕量級(jí)推理框架
如何在RK3576開(kāi)發(fā)板上運(yùn)行TinyMaix :超輕量級(jí)推理框架--基于米爾MYD-LR3576開(kāi)發(fā)板
潤(rùn)和軟件StackRUNS異構(gòu)分布式推理框架的應(yīng)用案例
潤(rùn)和軟件發(fā)布StackRUNS異構(gòu)分布式推理框架
分布式光伏監(jiān)測(cè)難?并網(wǎng)型分布式光伏系統(tǒng)光伏功率預(yù)測(cè)方案
曙光存儲(chǔ)領(lǐng)跑中國(guó)分布式存儲(chǔ)市場(chǎng)
安科瑞Acrel-1000DP分布式光伏監(jiān)控系統(tǒng)在嘉興亨泰分布式光伏項(xiàng)目中的應(yīng)用
分布式光伏發(fā)運(yùn)維系統(tǒng)實(shí)際應(yīng)用案例分享
分布式光伏如何重塑社區(qū)能源生態(tài)
SpringBoot接入輕量級(jí)分布式日志框架GrayLog
評(píng)論