🌹作者主頁:青花鎖 🌹簡介:Java領域優質創作者🏆、Java微服務架構公號作者😄
🌹簡歷模板、學習資料、面試題庫、技術互助
🌹文末獲取聯系方式 📝
往期熱門專欄回顧
專欄 | 描述 |
---|---|
Java項目實戰 | 介紹Java組件安裝、使用;手寫框架等 |
Aws服務器實戰 | Aws Linux服務器上操作nginx、git、JDK、Vue |
Java微服務實戰 | Java 微服務實戰,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc等實戰操作 |
Java基礎篇 | Java基礎閑聊,已出HashMap、String、StringBuffer等源碼分析,JVM分析,持續更新中 |
Springboot篇 | 從創建Springboot項目,到加載數據庫、靜態資源、輸出RestFul接口、跨越問題解決到統一返回、全局異常處理、Swagger文檔 |
Spring MVC篇 | 從創建Spring MVC項目,到加載數據庫、靜態資源、輸出RestFul接口、跨越問題解決到統一返回 |
華為云服務器實戰 | 華為云Linux服務器上操作nginx、git、JDK、Vue等,以及使用寶塔運維操作添加Html網頁、部署Springboot項目/Vue項目等 |
Java爬蟲 | 通過Java+Selenium+GoogleWebDriver 模擬真人網頁操作爬取花瓣網圖片、bing搜索圖片等 |
Vue實戰 | 講解Vue3的安裝、環境配置,基本語法、循環語句、生命周期、路由設置、組件、axios交互、Element-ui的使用等 |
Spring | 講解Spring(Bean)概念、IOC、AOP、集成jdbcTemplate/redis/事務等 |
前言
新的項目開工,采用Springboot(Slf4j+logback)搭建項目,項目有很多模塊,后續需要采用微服務架構。因此日志系統也需要分布式日志系統,而不是進入堡壘機輸入命令查看日志這種傳統的方式。
新項目不像淘寶、京東、抖音這些體量特別大,因此我們直接棄掉ELK(項目用不到es,ELK反而太顯笨重)。研究幾個日志系統之后,看到一款日志系統loki 眼前一亮,Loki 是 Grafana Labs 團隊最新的開源項目,是一個水平可擴展,高可用性,多租戶的日志聚合系統。其所屬Grafana Labs團隊,還維護有一款著名監控儀表系統 Grafana。
今天給大家演示如何在windows環境下部署Grafana+loki+promtail日志系統,實現Springboot(Slf4j+logback)項目的日志收集,在Grafana Web界面上就能看到我們項目的日志。
效果如下:
1、搭建項目
搭建一個Springboot(Slf4j+logback)項目,配置日志文件logback.xml。
在 D://soft/grafana-9.0.6/testlogs文件夾下生成文件,文件名log.log。
<?xml version='1.0' encoding='UTF-8'?>
<!--日志配置-->
<configuration><!--直接定義屬性--><property name="logFile" value="D://soft/grafana-9.0.6/testlogs/log"/><property name="maxFileSize" value="30MB"/><!--控制臺日志--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d [%thread] %-5level %logger{50} -[%file:%line]- %msg%n</pattern><charset>UTF-8</charset></encoder></appender><!--滾動文件日志--><appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${logFile}.log</file><encoder><!--日志輸出格式--><pattern>%d [%thread] %-5level -[%file:%line]- %msg%n</pattern><charset>UTF-8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${logFile}.%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>${maxFileSize}</maxFileSize></rollingPolicy></appender><!--創建一個具體的日志輸出--><logger name="com.qinghuasuo" level="info" additivity="true"><!--可以有多個appender-ref,即將日志記錄到不同的位置--><appender-ref ref="STDOUT"/><appender-ref ref="fileLog"/></logger><!--基礎的日志輸出--><root level="info"></root>
</configuration>
2、安裝Grafana+loki+promtail
安裝Grafana+loki+promtail,搭建日志系統。
2.1、安裝Grafana
2.1.1、下載
下載地址:https://grafana.com/grafana/download?platform=windows
2.1.2、解壓
下載grafana-enterprise-9.0.6.windows-amd64.zip安裝包即可,并解壓到 D:\soft\grafana-9.0.6
2.1.3、啟動
進入\bin目錄,雙擊grafana-server.exe啟動
2.1.4、訪問系統
啟動成功之后,http://localhost:3000
初始登錄賬戶:admin/admin
2.2、安裝loki
2.2.1、下載
下載地址:https://github.com/grafana/loki/releases
2.2.2、解壓
下載loki-windows-amd64.exe.zip安裝包,并進行解壓到D:\soft\loki,解壓得到loki-windows-amd64.exe
2.2.3、配置
在D:\soft\loki目錄下添加loki-local-config.yaml文件,內容如下(其中的路徑地址,已修改成Windows路徑,需要注意修改為自己服務器的路徑):
auth_enabled: falseserver:http_listen_port: 3100grpc_listen_port: 9096 # 通信端口ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30smax_transfer_retries: 0max_chunk_age: 20m #一個timeseries快在內存中的最大持續時間。schema_config:configs:- from: 2022-08-06store: boltdbobject_store: filesystemschema: v11index:prefix: index_period: 672h #每張表的時間范圍28天storage_config:boltdb:directory: D://tmp/loki/index # 索引文件存儲地址filesystem:directory: D://tmp/loki/chunks # 塊存儲地址limits_config:enforce_metric_name: falsereject_old_samples: truechunk_store_config:max_look_back_period: 24h # 最大可查詢歷史日期 28天,這個時間必須是schema_config中的period的倍數,否則報錯。table_manager: # 配置保留多少天的數據,那么之前數據會被清除,Loki中默認保留所有數據retention_deletes_enabled: trueretention_period: 24h
2.2.4、配置
打開cmd定位到D:\soft\loki目錄,執行命令:.\loki-windows-amd64.exe --config.file=loki-local-config.yaml,loki服務啟動成功。
2.3、安裝promtail
2.3.1、下載
下載地址:https://github.com/grafana/loki/releases
這里選擇v2.8.10下的Assets下載promtail-windows-amd64.exe.zip,最新版本沒有promtail-windows。
2.3.2、解壓
下載promtail-windows-amd64.exe.zip安裝包,并解壓到D:\soft\loki目錄,得到promtail-windows-amd64.exe
2.3.3、配置
在D:\soft\loki目錄下添加promtail-local-config.yaml文件,內容如下(使用promtail去推送Springboot項目產生的日志文件,這里使用監控文件夾的形式(文件夾+文件通配)):
server:http_listen_port: 9080grpc_listen_port: 0
positions:filename: D:\soft\loki\positions.yamlclients:- url: http://localhost:3100/loki/api/v1/pushbatchwait: 10sbatchsize: 40960000
scrape_configs:- job_name: systemstatic_configs:- targets:- localhostlabels:job: viplogshost: localhost__path__: D:\soft\grafana-9.0.6\testlogs\*.log
2.3.4、啟動
打開cmd定位到D:\soft\loki目錄,執行命令: .\promtail-windows-amd64.exe --config.file=promtail-local-config.yaml,promtail服務啟動成功。
3、使用Grafana+loki+promtail查看日志
3.1、登錄grafana后在Data sources -> Add data source選擇loki
3.2、配置信息
填寫上loki的地址
3.3、選擇Explore
去執行loki的日志查詢
3.4、查詢日志
總結
從結果來看Grafana+loki+promtail搭建的日志系統,可以滿足我們的需求,采集到Springboot(Slf4j+logback)項目日志,并且可以在WebUI上操作、查看這些日志。
從過程看,Grafana+loki+promtail搭建日志系統,入門級部署是非常容易的,比部署ELK要簡單很多。
喜歡的小伙伴們,可以給個關注和點贊。我這里還有其他Java專欄,云原生、數據庫、前端、運維等知識點分享。
資料獲取,更多粉絲福利,關注下方公眾號獲取