当前位置: 首页 > news >正文

windows实现Grafana+Loki+loki4j轻量级日志系统,告别沉重的ELK

文章目录

  • Loki下载
  • Loki下载
  • 安装Loki
  • 添加Loki数据源
  • springboot日志推送

Loki下载

下载地址:https://github.com/grafana/loki/releases/
找到loki-windows-amd64.exe.zip下载
找到loki-windows-amd64.exe.zip点击开始下载,我这里下载的2.9.9版本

Loki下载

下载地址:https://grafana.com/grafana/download?platform=windows

下载grafana-enterprise-11.1.0.windows-amd64.zip

下载grafana-enterprise-11.1.0.windows-amd64.zip

安装Loki

将下载的loki-windows-amd64.exe.zip压缩包解压,得到loki-windows-amd64.exe文件,进入文件夹创建config文件夹,在config文件夹下创建配置文件:loki-config.yaml
在这里插入图片描述
注意:wal文件夹是运行Loki后自动生成的

server:# Loki 服务监听的 HTTP 端口号http_listen_port: 3100schema_config:configs:- from: 2024-07-01# 使用 BoltDB 作为索引存储store: boltdb# 使用文件系统作为对象存储object_store: filesystem# 使用 v11 版本的 schemaschema: v11index:# 索引前缀prefix: index_# 索引周期为 24 小时period: 24hingester:lifecycler:# 设置本地 IP 地址address: 127.0.0.1ring:kvstore:# 使用内存作为 kvstorestore: inmemory# 复制因子设置为 1replication_factor: 1# 生命周期结束后的休眠时间final_sleep: 0s# chunk 的空闲期为 5 分钟chunk_idle_period: 5m# chunk 的保留期为 30 秒chunk_retain_period: 30sstorage_config:boltdb:# BoltDB 的存储路径directory: F:/work/Loki/store/indexfilesystem:# 文件系统的存储路径directory: F:/work/Loki/store/chunkslimits_config:# 不强制执行指标名称enforce_metric_name: false# 拒绝旧样本reject_old_samples: true# 最大拒绝旧样本的年龄为 168 小时reject_old_samples_max_age: 168h# 每个用户每秒的采样率限制为 32 MBingestion_rate_mb: 32# 每个用户允许的采样突发大小为 64 MBingestion_burst_size_mb: 64chunk_store_config:# 最大可查询历史日期为 28 天(672 小时),这个时间必须是 schema_config 中 period 的倍数,否则会报错max_look_back_period: 672htable_manager:# 启用表的保留期删除功能retention_deletes_enabled: true# 表的保留期为 28 天(672 小时)retention_period: 672h

运行Loki服务

cmd进入文件目录后执行命令

loki-windows-amd64.exe --config.file=config/loki-config.yaml

运行Grafana服务

解压grafana-enterprise-11.1.0.windows-amd64.zip压缩包得到grafana-v11.1.0文件,进入bin目录找到grafana-server.exe程序双击运行
在这里插入图片描述
程序运行成功后访问:http://localhost:3000,初始账户: admin/admin 登录后需重置密码

添加Loki数据源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述进入设置界面,添加Loki服务地址:http://localhost:3100, 在Header上添加X-Scope-OrgID参数,参数值可以自定义,默认tenant1, 然后点击save&test看看是否成功。

注:如果save&test报错可能是Loki服务初始化还未完成,验证Loki初始化是否完成访问:http://localhost:3100/ready,如果显示ready即初始化完成

在这里插入图片描述

springboot日志推送

pom文件添加依赖:

<!--Loki 日志收集-->
<dependency><groupId>com.github.loki4j</groupId><artifactId>loki-logback-appender-jdk8</artifactId><version>1.5.1</version>
</dependency>
<!--Loki 日志发送http请求和响应工具-->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>

logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 彩色控制台控制 --><substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) ${PID:-} %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/><substitutionProperty name="log.pattern.no" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) ${PID:-} %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/><springProperty scope="context" name="LOG_FILE_DIR" source="logback.log-file-dir" defaultValue="log"/><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern}</pattern></encoder></appender><springProperty scope="context" name="url" source="loki.url" defaultValue="http://localhost:3100/loki/api/v1/push"/><springProperty scope="context" name="env" source="loki.label.env" defaultValue="dev"/><springProperty scope="context" name="jobName" source="loki.label.job-name" defaultValue="my-app"/><springProperty scope="context" name="hostIp" source="loki.label.host-ip" defaultValue="localhost"/><springProperty scope="context" name="orgId" source="loki.org-id" defaultValue="default-org"/><appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender"><http class="com.github.loki4j.logback.ApacheHttpSender"><url>${url}</url><tenantId>${orgId}</tenantId></http><format><label><pattern>application=${jobName},env=${env},host=${hostIp},level=%level</pattern></label><message><pattern>{"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}", "level": "%level", "logger": "%logger{36}", "thread": "%thread", "message": "%msg%n"}</pattern></message><sortByTime>true</sortByTime></format></appender><!-- 使用异步方式将日志推送至Loki --><appender name="ASYNC_LOKI" class="ch.qos.logback.classic.AsyncAppender"><!-- 队列大小设置,根据实际需要调整 --><queueSize>512</queueSize><!-- 丢弃策略,当队列满时采取的操作 --><discardingThreshold>0</discardingThreshold><neverBlock>true</neverBlock><!-- 实际的Loki Appender --><appender-ref ref="LOKI" /></appender><appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>DENY</onMatch><onMismatch>ACCEPT</onMismatch></filter><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern.no}</pattern></encoder><!--滚动策略--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--路径--><fileNamePattern>${LOG_FILE_DIR}/info.%d.log</fileNamePattern><!--保留30天日志--><maxHistory>30</maxHistory></rollingPolicy></appender><appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern.no}</pattern></encoder><!--滚动策略--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--路径--><fileNamePattern>${LOG_FILE_DIR}/error.%d.log</fileNamePattern><!--保留30天日志--><maxHistory>30</maxHistory></rollingPolicy></appender><root level="info"><appender-ref ref="STDOUT" /><appender-ref ref="fileInfoLog" /><appender-ref ref="fileErrorLog" /><appender-ref ref="ASYNC_LOKI" /></root></configuration>

yml文件配置:

# Loki 日志配置
loki:# Loki 服务的 URL,用于推送日志数据url: http://localhost:3100/loki/api/v1/push# 标签配置,用于标识日志来源的额外信息label:# 环境标签,标识当前运行的环境,例如开发环境env: dev# 服务名称标签,标识日志来源的服务名称job-name: my-service# 主机 IP 标签,标识日志来源的主机 IP 地址host-ip: 192.168.0.1# 组织 ID,用于多租户环境中标识日志所属的组织org-id: tenant1

运行springboot程序后日志都会发送到 Loki,就可以在 Grafana 查看了

在这里插入图片描述

相关文章:

windows实现Grafana+Loki+loki4j轻量级日志系统,告别沉重的ELK

文章目录 Loki下载Loki下载安装Loki添加Loki数据源springboot日志推送 Loki下载 下载地址&#xff1a;https://github.com/grafana/loki/releases/ 找到loki-windows-amd64.exe.zip点击开始下载&#xff0c;我这里下载的2.9.9版本 Loki下载 下载地址&#xff1a;https://gr…...

跟《经济学人》学英文:2024年06月01日这期 The side-effects of the TikTok tussle

The side-effects of the TikTok tussle tussle&#xff1a;美 [ˈtəsəl] 激烈扭打&#xff1b;争夺 注意发音 side-effects&#xff1a;副作用&#xff1b;&#xff08;side-effect的复数&#xff09; As the app’s future hangs in the balance, the ramifications of …...

Ubuntu安装PostgreSQL

Ubuntu(在线版) 更新软件源 sudo apt-get update 添加PostgreSQL官方数字签名 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - 将地址添加到系统的软件包源列表中 echo "deb http://apt.postgresql.org/pub/repos/a…...

【HarmonyOS NEXT】鸿蒙如何让List组件不满一屏时,还要能滑动和回弹

当List组件不满一屏时&#xff0c;还要能滑动和回弹,就向系统设置 - 移动网络 页面一样 List设置如下属性&#xff1a; .edgeEffect(EdgeEffect.Spring, {alwaysEnabled: true}) edgeEffect edgeEffect(value: EdgeEffect, options?: EdgeEffectOptions) 设置边缘滑动效果。…...

JDK-SPI-服务提供者接口

归档 GitHub: JDK-SPI-服务提供者接口 SPI 源码说明 java.util.ServiceLoader /*** 服务加载器&#xff1a;给定接口&#xff0c;查找实现类。实现可迭代接口 */ public final class ServiceLoader<S> implements Iterable<S> {/*** 返回 ServiceLoader 实例 *…...

【docker】容器内配置环境变量

背景&#xff1a; 我要把下面的环境变量写到bash脚本里&#xff0c;起名叫environment_start.sh。 目的&#xff1a; 用于每次进入容器dev_into.sh的时候&#xff0c;让系统获取到环境变量。 操作步骤&#xff1a; 先在容器外找个合适的位置写环境变量bash脚本&#xff0c…...

Java 乐观锁与悲观锁

1. 前言 本节内容主要是对 Java 乐观锁与悲观锁进行更加深入的讲解,本节内容更加偏重于对乐观锁的讲解,因为 synchronized 悲观锁对于大部分学习者并不陌生,本节主要内容如下: 乐观锁与悲观锁的概念,之前有所讲解,这里用很小的篇幅进行知识的回顾,巩固;乐观锁与悲观锁…...

python学习2-数据结构与算法-链表

单链表是一种链式存取的数据结构&#xff0c;用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的&#xff0c;每个结点的构成&#xff1a;元素(数据元素的映象) 指针(指示后继元素存储位置)&#xff0c;元素就是存储数据的存储单元&#xff0c;指…...

项目一 nfs 共享服务器 Haproxy 代理 Keepalive 高可用集群

深入理解程序的数据存储 配置NFS服务器 配置ansible环境...

TCP粘包解决方法

一. 产生原因及解决方法 产生原因&#xff1a;TCP是面向连接、基于字节流的协议&#xff0c;其无边界标记。当服务端处理速度比不其接收速度时&#xff0c;就很容易产生粘包现象。 解决方法&#xff1a;目前主要有两种解决方法&#xff0c;一个是在内容中添加分割标识&#xf…...

高职人工智能专业实训课之“生成对抗网络(GAN)”

一、前言 生成对抗网络&#xff08;GAN&#xff09;作为人工智能领域的一项重要技术&#xff0c;已经在图像生成、风格迁移、数据增强等多个领域展现出巨大的潜力和应用价值。为了满足高职院校对GAN专业实训课程的需求&#xff0c;唯众人工智能教学实训凭借其前沿的教育技术平…...

【MySQL系列】隐式转换

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

亿发:信息化建设or面子工程?究竟什么才是真正的信息化解决方案

在现代企业的竞争中&#xff0c;信息化建设扮演着越来越重要的角色。信息化技术不仅是企业提升管理效率、优化运营模式的利器&#xff0c;更是企业在市场竞争中脱颖而出的关键。然而&#xff0c;许多企业在推进信息化的过程中&#xff0c;往往容易陷入“面子工程”的误区。那么…...

【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(1)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…...

树形结构C语言的实现

一.什么是树&#xff1a; 树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构&#xff0c;所以这种结构多可以递归的表示。经典数据结构中的各种树状图是一种典型的树形结构&#xff1a;一棵树可以简单的表示为根&#xff0c;左子树&#xff0c;右子树。左子树…...

小程序渗透测试的两种方法——burpsuite、yakit

首先呢主要是配置proxifier&#xff0c;找到小程序的流量&#xff0c;然后使用burpsuite或者yakit去抓包。 一、使用burpsuiteproxifier的抓包测试 1、先配置proxifier&#xff0c;开启http流量转发 勾选确定 2、配置burp对应代理端口&#xff0c;选择profile&#xff0c;点…...

代码随想录训练营Day56

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、搜索插入位置二、在排序数组中查找元素的第一个和最后一个位置 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 今天是跟着代码随想…...

S32K3 工具篇4:如何在S32DS中使用lauterbach下载

S32K3 工具篇4&#xff1a;如何在S32DS中使用lauterbach下载 1. TRACE32软件下载与配置2. 如何在S32DS里面构建劳德巴赫的接口2.1 新建工程带有lauterbach2.2 已有工程没有lauterbach 劳德巴赫lauterbach是一款非常经典强悍的调试器&#xff0c;还带有trace功能&#xff0c;在汽…...

深度神经网络语言识别

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 使用 DNN 和字符 n-gram 对一段文本的语言进行分类&#xff08;附 Python 代码&#xff09; 资料来源&#xff0c;flaticon&#xff1a;htt…...

STM32自己从零开始实操07:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感&#xff1a;通低频阻高频的。仿真中高频信号通过电感&#xff0c;因为电感会阻止电流发生变化&#xff0c;故说阻止高频信号 电容&#xff1a;隔直通交。…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...