告别沉重的ELK,这套轻量级的日志系统值得你拥有

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

2fa9306a0f13e0eac151ba579cdc787f.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:源话编程(gh_289d0f98fdae)


在软件开发中,日志系统扮演着至关重要的角色。它不仅帮助开发者调试程序,还能在生产环境中监控应用状态。本文将讲解如何使用 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 的灵活性和丰富的功能使其成为监控和分析日志数据的理想选择。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

搭建步骤

1. 安装 Loki 和 Grafana

首先,我们需要安装 Loki 和 Grafana。本文通过 Docker 来快速部署它们。

> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
> * 项目地址:<https://github.com/YunaiV/yudao-cloud>
> * 视频教程:<https://doc.iocoder.cn/video/>

# 安装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 服务。

86f77108256a9c2b7be1efd1d0ac5ce9.png 490e8a2e06d3b143720377a336d876e1.png 8159d10fe9bb642e008c36a87121d971.png a42e004d904e5891a55cfe56e94adfea.png

4. 运行 Spring Boot 应用

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

5. 查看日志

在 Grafana 中,你可以创建仪表板来展示日志数据。选择 Loki 作为数据源,然后使用 Loki 的查询语法来过滤和展示日志。

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

75497feaaf1dd12567facd06f29ba1d3.png 6ce86120e64fbd6ee3f6b72dd1a4ceab.png

结语

通过上述步骤,我们成功搭建了一个简单的 Java 日志系统,它结合了 Loki 的强大日志聚合能力、Loki4j 的便捷日志发送功能、Grafana 的可视化展示。本文讲解了如何快速的搭建一个简单的日志系统,实际开发中还有许多因素需要考虑,比如安全性等方面。

后续还会针对 Loki 的另一个日志收集器Promtail进行讲解,它是一个支持任何格式、可独立部署、灵活度更高的服务。

个人观点,仅供参考。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

fb9d87bf218ef78a313aba41f25a3749.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

0233da28753e51860fa3bd46c5631c9e.png

c1c79910503740c9a0ce0e4882c6e583.pngfdc540ad0192c6299759fea08c932461.pngf26264c89ed68a3ff9b9156abf3e95f1.png36f8a035bb74ce6cd69dee97de974c0c.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值