轻量级日志管理系统SpringBoot3+Loki+grafana的使用实例

目录

文章目录

  • 目录
  • 1、简介
  • 2、SpringBoot3应用发送日志到Loki
    • 2.1、基本介绍
    • 2.2、添加依赖
    • 2.3、配置文件application.yml
    • 2.4、创建logback配置
    • 2.5、添加日志示例
    • 2.6、运行SpringBoot3
  • 3、在grafana中查看日志
    • 3.1、登录grafana
    • 3.2、查询日志
    • 3.3、查询我们的SpringBoot发送过来的日志
    • 3.4、按日志级别查询
    • 3.5、按主机查询

1、简介

通过集成日志工具Loki+Promtail使得能够自动化采集日志。

Grafana作为可视化终端,通过链接Loki数据源,能够对采集的日志进行搜索和分析。

其中:

  • Loki: 日志聚合工具,类似ELK中Elasticsearch

  • Promtail: 日志收集工具,类比ELK中的Logstash

  • Grafana:可视化工具,类比ELK中Kibana

效果图
在这里插入图片描述

2、SpringBoot3应用发送日志到Loki

2.1、基本介绍

通过在SpringBoot3中配置logback,主要的配置是使用logback-spring.xml文件配置日志发送到loki

2.2、添加依赖

       <!-- logstash-logback-encoder --><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>7.4</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></dependency><!-- loki-logback-appender --><dependency><groupId>com.github.loki4j</groupId><artifactId>loki-logback-appender</artifactId><version>1.5.0</version></dependency>

2.3、配置文件application.yml

这里注意是配置一个 spring.application.name 在logback中使用,发送到Loki中以后方便标识

spring:application:name: Taxsoft_SpringBoot3_Loki

2.4、创建logback配置

在项目的资料目录创建: src\main\resources\logback-spring.xml

(1)指定loki服务器URL地址http://localhost:3100

(2)Loki不索引日志的内容,而只索引元数据标签。有一些静态标签,如应用程序名称、日志级别或主机名。我们可以在format.label字段中设置它们。

(3)设置一些动态标签,因为我们启用了Logback标签功能。

(4)设置日志格式模式。

为了简化LogQL(Loki查询语言)的潜在转换,我们将使用JSON表示法。

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--  配置App日志的名称  --><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} %-5level %logger{36} %X{X-Request-ID} - %msg%n</pattern></encoder></appender><!-- 配置loki4j   --><appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender"><!-- 1、 指定loki服务器URL--><http><url>http://172.23.1.235:3100/loki/api/v1/push</url></http><format><!-- 2、 配置标签 --><label><pattern>app=${name},host=${HOSTNAME},level=%level</pattern><!-- 3、读取标记--><readMarkers>true</readMarkers></label><message><!-- 4、格式--><pattern>{"level":"%level","class":"%logger{36}","thread":"%thread","message": "%message","requestId": "%X{X-Request-ID}","datetime": "%d{yyyy-MM-dd HH:mm:ss.SSS}"}</pattern></message></format></appender><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="LOKI"/></root></configuration>

2.5、添加日志示例

除了静态标签,我们还可以发送动态数据,例如仅针对当前请求的特定数据。假设我们有一个管理人员的服务,我们希望记录请求中目标人员的id。正如我之前提到的,使用Loki4j,我们可以使用Logback标记。在经典的Logback中,标记主要用于过滤日志记录。使用Loki,我们只需要定义LabelMarker对象:

(1)该对象包含动态字段的键/值映射。

(2)然后我们将对象传递到当前日志行。

和以前的使用方式一样

我这里写了一个控制器

package com.ts.controller;import com.github.loki4j.slf4j.marker.LabelMarker;
import lombok.extern.java.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;//@Log
@RestController
public class MainController {private static final Logger log = LoggerFactory.getLogger(MainController.class);@RequestMapping("/")public String index() {log.info("这是一条info信息消息");log.error("This is an error message");return "Hello";}@RequestMapping("/test")public String test() {log.warn("这是一条警告信息。。。。");//动态标签//动态字段的键/值映射LabelMarker marker = LabelMarker.of("personId", () ->String.valueOf(1001));//将对象传递到当前日志行log.info(marker,"用户已成功更新");return "Test LabelMarker";}
}

2.6、运行SpringBoot3

启动SpringBoot3,然后访问 我们添加日志的路径: http://localhost:8080/

  .   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v3.2.3)15:59:10.491 INFO  com.ts.Springboot3LokiApplication  - Starting Springboot3LokiApplication using Java 20.0.1 with PID 15984 (D:\IdeaProjects\springboot3_loki\target\classes started by Somken in D:\IdeaProjects\springboot3_loki)
15:59:10.498 INFO  com.ts.Springboot3LokiApplication  - No active profile set, falling back to 1 default profile: "default"
15:59:11.243 INFO  o.s.b.w.e.tomcat.TomcatWebServer  - Tomcat initialized with port 8080 (http)
15:59:11.252 INFO  o.a.coyote.http11.Http11NioProtocol  - Initializing ProtocolHandler ["http-nio-8080"]
15:59:11.254 INFO  o.a.catalina.core.StandardService  - Starting service [Tomcat]
15:59:11.254 INFO  o.a.catalina.core.StandardEngine  - Starting Servlet engine: [Apache Tomcat/10.1.19]
15:59:11.298 INFO  o.a.c.c.C.[Tomcat].[localhost].[/]  - Initializing Spring embedded WebApplicationContext
15:59:11.299 INFO  o.s.b.w.s.c.ServletWebServerApplicationContext  - Root WebApplicationContext: initialization completed in 757 ms
15:59:11.618 INFO  o.a.coyote.http11.Http11NioProtocol  - Starting ProtocolHandler ["http-nio-8080"]
15:59:11.629 INFO  o.s.b.w.e.tomcat.TomcatWebServer  - Tomcat started on port 8080 (http) with context path ''
15:59:11.637 INFO  com.ts.Springboot3LokiApplication  - Started Springboot3LokiApplication in 1.912 seconds (process running for 2.551)
15:59:54.368 INFO  o.a.c.c.C.[Tomcat].[localhost].[/]  - Initializing Spring DispatcherServlet 'dispatcherServlet'
15:59:54.369 INFO  o.s.web.servlet.DispatcherServlet  - Initializing Servlet 'dispatcherServlet'
15:59:54.370 INFO  o.s.web.servlet.DispatcherServlet  - Completed initialization in 1 ms
15:59:54.405 INFO  com.ts.controller.MainController  - 这是一条info信息消息
15:59:54.405 ERROR com.ts.controller.MainController  - This is an error message

提示:只有访问过了这个方法,才能产生日志

3、在grafana中查看日志

3.1、登录grafana

打开grafana:http://172.23.1.235:3000/
在这里插入图片描述

登录进去以后界面如下
在这里插入图片描述

3.2、查询日志

点击左侧的 ”explore“ 探索 按钮
在这里插入图片描述
在这里插入图片描述

3.3、查询我们的SpringBoot发送过来的日志

在这里插入图片描述

3.4、按日志级别查询

在这里插入图片描述

3.5、按主机查询

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1546875.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程的标识符、状态(超详解)

目录 进程的概念 进程标识符PID 系统调用创建进程-fork初识 进程状态 R状态&#xff08;运行状态&#xff09; S&#xff0c;D状态&#xff08;休眠状态&#xff09; T&#xff0c;t状态 Z状态&#xff08;僵尸进程&#xff09; 孤儿进程 X状态&#xff08;死亡状态&a…

OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐

2022年OceanBase推出云数据库产品OB Cloud,正式启动云数据库战略。两年来OB Cloud发展情况如何&#xff0c;9月26日&#xff0c;OceanBase公有云事业部总经理尹博学向记者作了介绍。 尹博学表示&#xff0c;OB Cloud推出两年以来&#xff0c;已服务超过700家客户&#xff0c;客…

巧用时间换空间:解读 ArcGraph 如何灵活应对有限内存下的图分析

导读&#xff1a;ArcGraph 是一款云原生架构、存查分析一体化的分布式图数据库。本文将详细解读 ArcGraph 如何灵活应对有限内存下的图分析。 01 引言 在图分析技术广泛应用的当下&#xff0c;学术界和各大图数据库厂商热衷于提升图分析技术的高性能指标。然而&#xff0c;追求…

夹耳式耳机哪个牌子最好?夹耳式耳机品牌排行榜前十名

随着无线音频技术的不断进步&#xff0c;耳夹式蓝牙耳机因其独特的设计与便捷的使用体验&#xff0c;逐渐成为众多消费者的心头好。然而&#xff0c;在众多品牌与型号中选择一款既符合个人需求又能保证音质与舒适度的产品并非易事。为此&#xff0c;我们综合了市场反馈、用户评…

6天19颗卫星成功发射,厉害了我的国!

我国最近成功发射了“祁连一号”、“吉林一号”、天仪41星&#xff08;神启号&#xff09;和“吉林一号”SAR01A星&#xff0c;前后仅6天就有19颗卫星被送入了太空。 不禁让人感叹&#xff1a;“我们的征途是星辰与大海&#xff0c;厉害了我的国&#xff01;” “祁连一号”与…

Vue中使用Hls.js进行视频直播的播放

HLS.js使用文档 1、安装组件&#xff1a; npm install hls.js --save2、引入组件&#xff1a; import Hls from hls.js3、使用组件&#xff1a; // DOM&#xff1a; <video id"video" controls loop"false"></video> // DATA: let hls nul…

java项目之新闻稿件管理系统(源码+文档)

项目简介 新闻稿件管理系统实现了以下功能&#xff1a; 新闻稿件管理系统的主要使用者管理员功能有个人中心&#xff0c;用户管理&#xff0c;记者管理&#xff0c;审批员管理&#xff0c;新闻分类管理&#xff0c;新闻信息管理&#xff0c;系统管理等。记者发布新闻信息&…

【前端必读】二、使用 Cursor 的基本功能全教程(快捷键及其他功能)

【前端必读】一、使用 Cursor 的基本功能全教程&#xff08;使用与安装&#xff09; 【前端必读】二、使用 Cursor 的基本功能全教程&#xff08;快捷键及其他功能&#xff09; 快捷键及其功能 Cursor 提供了一些快捷键来使用相应的 AI 功能&#xff1a; CTRL/CMD L&#xf…

远程升级频频失败?原因竟然是…

最近有客户反馈在乡村里频繁出现掉线的情况。 赶紧排查原因&#xff01; 通过换货、换SIM卡对比排查测试&#xff0c;发现只有去年采购的那批模块在客户环境附近会出现掉线的情况&#xff0c;而今年采购的模块批次就不会掉线。。。 继续追究原因&#xff0c;联系对应的销售工…

【YOLO目标检测马铃薯叶病害数据集】共1912张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式&#xff1a;YOLO格式 图片数量&#xff1a;1912 标注数量(txt文件个数)&#xff1a;1912 标注类别数&#xff1a;5 标注类别名称&#xff1a; health General early blight Severe early blight General late blight Severe late bligh…

OPenCV源码编译 调试 注意事项教程(建议收藏)

为了更深入的学习和了解OPenCV的开源魅力&#xff0c;我们可以将OPenCV的源码进行编译&#xff0c;重新生成解决方案&#xff0c;得到二进制文件&#xff0c;或者修改原版官方的OpenCV代码&#xff0c;并编译后为自己所用&#xff0c;也可以编译后进入到源码中调试&#xff0c;…

桌面专业版【如何进入livecd救援模式拷贝数据】方法介绍

UOS统信在无法进入桌面、tty2或者忘记密码的情况下&#xff0c;如何进入livecd模式&#xff0c;从而实现对系统进行维护、备份数据等。 文章目录 功能概述操作方法步骤一&#xff1a;制作启动盘步骤二&#xff1a;从U盘启动步骤二&#xff1a;进入编辑模式步骤三&#xff1a;删…

线程LWP的概念和控制

一、线程的概念 课本&#xff1a;线程是比进程更加轻量化的一种执行流/线程是在进程内部执行的一种执行流 我们&#xff1a;线程是CPU调度的基本单位/进程是承担系统资源的基本实体 地址空间是进程的“资源”窗口&#xff0c;我们通过栈去访问我们的变量&#xff0c;堆去访问…

找不到concrt140.dll怎么修复,这4种方法可轻松搞定

1. concrt140.dll 定义 1.1 系统文件 concrt140.dll 是一个系统文件&#xff0c;属于 Windows 操作系统中重要的动态链接库&#xff08;DLL&#xff09;之一。它通常位于系统的 System32 或 SysWOW64 文件夹中&#xff0c;是 Microsoft Visual C 2015 Redistributable 包的一…

Spring Boot电商开发:购物商城系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…

3D 家庭室内设计软件Live Home 3D Pro for Mac

Live Home 3D Pro for Mac 是一款功能卓越的 3D 家庭室内设计软件&#xff0c;具有多方面的优势和特点&#xff1a; 软件下载地址 丰富的设计功能12&#xff1a; 平面图绘制&#xff1a;用户可以使用直观的点击式绘图工具创建详细的二维平面图。提供房间工具、圆弧和直墙工具…

【CSS】鼠标 、轮廓线 、 滤镜 、 堆叠层级

cursor 鼠标outline 轮廓线filter 滤镜z-index 堆叠层级 cursor 鼠标 值说明值说明crosshair十字准线s-resize向下改变大小pointer \ hand手形e-resize向右改变大小wait表或沙漏w-resize向左改变大小help问号或气球ne-resize向上右改变大小no-drop无法释放nw-resize向上左改变…

记录打鼾软件

记录打鼾软件,在现代快节奏的生活中&#xff0c;足够的睡眠是健康生活的保证。然而&#xff0c;打鼾这一常见的睡眠问题却困扰着许多人&#xff0c;影响他们的睡眠质量&#xff0c;甚至可能引发更严重的健康问题。随着科技的进步&#xff0c;记录打鼾的软件应运而生&#xff0c…

设计模式之门面(Facade)模式

前言 在组建构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题、甚至跟本无法实现。采用添加一层&#xff08;间接&#xff09;稳定接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案 定义 “接口隔离” 模式。为子系统中的一组接口提供一个一…

Spring Boot技术:构建高效网上购物平台

第3章 系统分析 3.1 可行性分析 在系统开发之初要进行系统可行分析&#xff0c;这样做的目的就是使用最小成本解决最大问题&#xff0c;一旦程序开发满足用户需要&#xff0c;带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。…