自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

告別沉重的 ELK,這套輕量級(jí)的日志系統(tǒng)值得你擁有

開發(fā)
本文將講解如何使用 Loki、Loki4j、Grafana 和 Spring Boot 搭建一個(gè)輕量級(jí)、簡(jiǎn)單、易用的 Java 日志系統(tǒng)。

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

一、系統(tǒng)組件概覽

1.什么是 Loki?

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

2.什么是 Loki4j?

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

3.什么是 Grafana?

Grafana 是一個(gè)功能強(qiáng)大的開源數(shù)據(jù)可視化和監(jiān)控平臺(tái)。它支持多種數(shù)據(jù)源,包括 Loki,允許用戶創(chuàng)建動(dò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

2. 配置 Loki4j

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

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

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

然后,配置 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"/>

    <!-- 控制臺(tái)輸出器 -->
    <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>

3. 配置 Grafana

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

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

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

5. 查看日志

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

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

三、結(jié)語(yǔ)

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

責(zé)任編輯:趙寧寧 來源: 源話編程
相關(guān)推薦

2024-12-16 07:10:00

DockerDrone開發(fā)

2024-04-29 08:42:23

2023-12-18 10:24:59

2021-09-06 10:22:47

匿名對(duì)象編程

2021-03-18 07:52:42

代碼性能技巧開發(fā)

2023-12-29 08:17:26

Python代碼分析Profile

2020-09-01 07:41:56

macOS工具

2024-12-18 16:53:13

ncduLinux磁盤分析

2020-10-09 11:54:33

Vue用戶的React

2021-01-21 09:45:16

Python字符串代碼

2023-09-27 00:12:23

2009-09-11 08:26:49

Linux系統(tǒng)CRUX 2.6Linux

2020-03-08 13:24:47

JavaScript庫(kù)開發(fā)

2020-06-15 14:43:16

Python開發(fā)工具

2020-12-14 13:32:40

Python進(jìn)度條參數(shù)

2022-05-12 08:58:03

開源日志查詢日志可視化

2013-07-05 16:08:40

開發(fā)效率

2021-07-05 09:40:57

工具Node開源

2022-07-15 16:39:19

PythonWhoosh工具

2013-08-07 09:16:10

云存儲(chǔ)云備份云解決方案
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)