<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ELK太重怎么辦?試試這個輕量級日志系統(tǒng)吧!

          共 5782字,需瀏覽 12分鐘

           ·

          2024-06-21 12:00

          來源:https://www.zhy.link/articles/33
          在軟件開發(fā)中,日志系統(tǒng)扮演著至關(guān)重要的角色。它不僅幫助開發(fā)者調(diào)試程序,還能在生產(chǎn)環(huán)境中監(jiān)控應(yīng)用狀態(tài)。本文將講解如何使用 Loki、Loki4j、Grafana 和 Spring Boot 搭建一個輕量級、簡單、易用的 Java 日志系統(tǒng)。

          系統(tǒng)組件概覽

          什么是 Loki?

          Loki 是由 Grafana Labs 開源的一款高可用、高擴(kuò)展性、多租戶的日志聚合系統(tǒng)。它受到 Prometheus 的啟發(fā),采用了類似的機(jī)制,使用標(biāo)簽(labels)對日志進(jìn)行特征標(biāo)記,然后進(jìn)行歸集統(tǒng)計。Loki 的設(shè)計理念是經(jīng)濟(jì)高效且易于操作,它不會為日志內(nèi)容建立全文索引,而是對日志數(shù)據(jù)進(jìn)行壓縮存儲,并且只對日志數(shù)據(jù)的元數(shù)據(jù)(如時間戳、labels 等)建立索引。這樣的設(shè)計使得 Loki 在存儲成本和查詢效率方面具有優(yōu)勢。

          什么是 Loki4j?

          Loki4j 是一個專為 Java 應(yīng)用程序設(shè)計的日志 appender,它使得 Java 應(yīng)用能夠直接將日志發(fā)送到 Loki 服務(wù)器。Loki4j 特別適用于 Spring Boot 環(huán)境,因為它可以無縫集成到使用 Logback 或 Log4j2 的系統(tǒng)中,為 Java 開發(fā)者提供了一個簡單而強(qiáng)大的日志管理解決方案。

          什么是 Grafana?

          Grafana 是一個功能強(qiáng)大的開源數(shù)據(jù)可視化和監(jiān)控平臺。它支持多種數(shù)據(jù)源,包括 Loki,允許用戶創(chuàng)建動態(tài)且高度定制的儀表板,以直觀展示日志數(shù)據(jù)。Grafana 的靈活性和豐富的功能使其成為監(jiān)控和分析日志數(shù)據(jù)的理想選擇。

          搭建步驟

          1. 安裝 Loki 和 Grafana

          首先,我們需要安裝 Loki 和 Grafana。本文通過 Docker 來快速部署它們。

          # 安裝Loki
          docker run -d --name loki -p 3100:3100 grafana/loki:latest -config.file=/etc/loki/local-config.yaml

          # 安裝Grafana
          docker run -d --name grafana -p 3000:3000 grafana/grafana:latest

          Copy

          2. 配置 Loki4j

          在 Spring Boot 項目中,我們將使用 Loki4j 來發(fā)送日志到 Loki。

          首先,添加 Loki4j 依賴到你的pom.xml文件中:

          <dependency>
              <groupId>com.github.loki4j</groupId>
              <artifactId>loki-logback-appender</artifactId>
              <version>1.4.1</version>
          </dependency>

          Copy

          然后,配置 Logback,在 src/main/resources 目錄下創(chuàng)建 logback.xml 文件,并添加以下配置:

          <?xml version="1.0" encoding="UTF-8"?>
          <configuration>
              <!-- 引入Spring應(yīng)用名稱 -->
              <springProperty name="name" source="spring.application.name"/>

              <!-- 控制臺輸出器 -->
              <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
                  <encoder>
                      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [thread %thread] %-5level %logger{35}.%method - %msg%n</pattern>
                  </encoder>
              </appender>

              <!-- Loki輸出器 -->
              <appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender">
                  <http>
                      <url>http://localhost:3100/loki/api/v1/push</url>
                  </http>
                  <format>
                      <label>
                          <pattern>application=${name},level=%level</pattern>
                          <readMarkers>true</readMarkers>
                      </label>
                      <message>
                          <pattern>
                              {"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}", "level": "%level", "logger": "%logger{36}.%method", "method":"%M", "line":"%line", "thread": "%thread", "message": "%msg%n"}
                          </pattern>
                      </message>
                      <sortByTime>true</sortByTime>
                  </format>
              </appender>

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

          </configuration>

          Copy

          3. 配置 Grafana

          打開 Grafana 的 Web 界面(地址為http://localhost:3000),首次登錄賬號密碼都是 admin,登錄之后修改密碼,添加 Loki 作為數(shù)據(jù)源,并配置它指向運行中的 Loki 服務(wù)。

          4. 運行 Spring Boot 應(yīng)用

          運行你的 Spring Boot 應(yīng)用,現(xiàn)在所有的日志都會發(fā)送到 Loki,并且可以在 Grafana 中查看。

          5. 查看日志

          在 Grafana 中,你可以創(chuàng)建儀表板來展示日志數(shù)據(jù)。選擇 Loki 作為數(shù)據(jù)源,然后使用 Loki 的查詢語法來過濾和展示日志。

          下面做一個簡單查看日志的操作,點擊 explore ,數(shù)據(jù)源選loki,在Label filters選項中選擇標(biāo)簽(application)值(muqing-api),點右上角Run query搜索查看日志。

          結(jié)語

          通過上述步驟,我們成功搭建了一個簡單的 Java 日志系統(tǒng),它結(jié)合了 Loki 的強(qiáng)大日志聚合能力、Loki4j 的便捷日志發(fā)送功能、Grafana 的可視化展示。本文講解了如何快速的搭建一個簡單的日志系統(tǒng),實際開發(fā)中還有許多因素需要考慮,比如安全性等方面。

          后續(xù)還會針對 Loki 的另一個日志收集器Promtail進(jìn)行講解,它是一個支持任何格式、可獨立部署、靈活度更高的服務(wù)。


          我們創(chuàng)建了一個高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會優(yōu)秀起來,趕緊點擊加群,享受一起成長的快樂。




          你還在購買國內(nèi)的各種昂貴又低質(zhì)的技術(shù)教程嗎?這里給大家推薦下我們自研的Youtube視頻語音轉(zhuǎn)換插件(https://youtube-dubbing.com/),一鍵外語轉(zhuǎn)中文,英語不好的小伙伴也可以輕松的學(xué)習(xí)油管上的優(yōu)質(zhì)教程了,下面是演示視頻,可以直觀的感受一下:
          如果您覺得這款插件不錯,也可以推薦給您身邊的朋友,目前我們開通了分享賺錢功能,只要安裝本插件登錄注冊之后,獲取邀請鏈接,放到你的博客側(cè)邊欄、友情鏈接或者發(fā)到朋友圈、微博、X等社交平臺,就能獲得積分,積分現(xiàn)在是可以i直接提現(xiàn)的哦~

          推薦閱讀

          8個你應(yīng)該掌握的實用 Java Streams API
          Spring Boot中的 6 種API請求參數(shù)讀取方式
          為什么不推薦在Spring Boot中使用@Value加載配置
          三個實用開源項目工具:無代碼編輯器

          瀏覽 406
          2點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          2點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  caopeng97人人 | 国产成人精品免费视频麻豆大全 | 伊人天堂网 | 色婷婷国产精品高潮呻吟AV久久 | 亚洲区色情区激情区小说纯熟调抖 |