这套轻量级的日志系统也许更适合你!

如何使用 Loki、Loki4j、Grafana 和 Spring Boot 搭建一个轻量级、简单、易用的 Java 日志系统。

系统组件概览

什么是 Loki?

Loki 是由 Grafana Labs 开源的一款高可用、高扩展性、多租户的日志聚合系统。

它受到 Prometheus 的启发,采用了类似的机制,使用标签(labels)对日志进行特征标记,然后进行归集统计。

Loki 对日志数据进行压缩存储,并且只对日志数据的元数据(如时间戳、labels 等)建立索引。

这样的设计使得 Loki 在存储成本和查询效率方面具有优势。

什么是 Loki4j?

Loki4j 是一个专为 Java 应用程序设计的日志 appender,它使得 Java 应用能够直接将日志发送到 Loki 服务器。

Loki4j 特别适用于 Spring Boot 环境,因为它可以无缝集成到使用 Logback 或 Log4j2 的系统中,为 Java 开发者提供了一个简单而强大的日志管理解决方案。

什么是 Grafana?

Grafana 是一个功能强大的开源数据可视化和监控平台。

它支持多种数据源,包括 Loki,允许用户创建动态且高度定制的仪表板,以直观展示日志数据。

Grafana 的灵活性和丰富的功能使其成为监控和分析日志数据的理想选择。

搭建步骤

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 项目中,我们将使用 Loki4j 来发送日志到 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 目录下创建 logback.xml 文件,并添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 引入Spring应用名称 -->
    <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>
3. 配置 Grafana

打开 Grafana 的 Web 界面(地址为http://localhost:3000),首次登录账号密码都是 admin,登录之后修改密码,添加 Loki 作为数据源,并配置它指向运行中的 Loki 服务。

图片

图片

图片

图片

4. 运行 Spring Boot 应用

运行你的 Spring Boot 应用,现在所有的日志都会发送到 Loki,并且可以在 Grafana 中查看。

5. 查看日志

在 Grafana 中,你可以创建仪表板来展示日志数据。

选择 Loki 作为数据源,然后使用 Loki 的查询语法来过滤和展示日志。

下面做一个简单查看日志的操作,点击 explore ,数据源选loki,在Label filters选项中选择标签(application)和值(muqing-api),点右上角Run query搜索查看日志。

图片

图片

最后说一句(求关注!别白嫖!)

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。

关注公众号:woniuxgg,在公众号中回复:笔记  就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值