入门 | Kafka数据使用vector消费到Loki中使用grafana展示

一、Loki的基本介绍

1、基本介绍

        Loki 是由 Grafana Labs 开发的一款水平可扩展、高性价比的日志聚合系统。它的设计初衷是为了有效地处理和存储大量的日志数据,与 Grafana 生态系统紧密集成,方便用户在 Grafana 中对日志进行查询和可视化操作。

从架构层面来说,Loki 主要由三个部分组成:

        客户端(Agents):负责收集日志并将其发送到 Loki 服务器。这些客户端可以是各种应用程序或服务器上的日志收集代理,如 Promtail(专门为 Loki 设计的日志收集器)。Promtail 能够自动发现日志文件的变化,将新的日志行发送到 Loki。

        服务器(Server):接收来自客户端的日志数据,对其进行处理和存储。Loki 服务器会将日志数据存储在一个分布式存储系统中,并且能够对日志进行索引,以便后续的快速查询。

        查询前端(Query Frontend):作为用户查询日志的接口,它可以接收来自 Grafana 或其他工具的查询请求,将请求转发到合适的服务器进行处理,并将查询结果返回给用户。

2、特点

高效的存储成本

        Loki 采用了一种不同于传统日志存储系统的存储策略。它基于标签(Labels)来对日志进行索引,而不是对每一条日志的全文进行索引。例如,一个 Web 应用的日志可能会有 “app_name”(应用名称)、“instance_id”(实例 ID)、“log_level”(日志级别)等标签。通过这种方式,Loki 可以显著减少存储索引所需的空间,从而降低存储成本。相比传统的全文索引日志系统,Loki 可以在存储大量日志数据时节省大量的存储空间。

与 Grafana 无缝集成

        作为 Grafana 生态系统的一部分,Loki 与 Grafana 的集成非常紧密。用户可以在 Grafana 中轻松地配置 Loki 数据源,然后使用 Grafana 强大的可视化功能来展示和分析日志。例如,用户可以创建仪表盘,将日志数据与指标数据(如 CPU 使用率、内存使用量等)结合起来展示,从而更全面地了解系统的运行状态。而且,在 Grafana 中查询 Loki 日志的操作非常直观,用户可以使用类似于 SQL 的查询语言来搜索日志,比如根据标签、时间范围和日志内容等条件进行查询。

水平可扩展性

        Loki 能够很容易地进行水平扩展以应对不断增长的日志数据量。它的分布式架构使得可以通过添加更多的服务器节点来增加系统的处理能力和存储容量。例如,当一个企业的业务增长,日志数据量从每天几百万条增加到几千万条时,可以通过添加 Loki 服务器节点来确保系统能够继续高效地处理和存储这些日志,而不会出现性能瓶颈。

多租户支持

        在一些复杂的企业环境中,可能需要对不同的用户、团队或项目的日志进行隔离和管理。Loki 提供了多租户支持,通过配置不同的租户 ID 和访问权限,可以确保每个租户的日志数据是独立的,并且只有授权的用户才能访问相应租户的日志。这对于云服务提供商或者大型企业内部的多个部门共享日志存储系统非常有用。

二、各组件的部署

1、Kafka集群的部署

详情请看之前的文章:抛弃zookeeper的Kafka集群,看这一篇就可以了_kafka集群搭建,不用zk-CSDN博客

部署Kafka集群,已经对应的Kafka-console-ui工具,用来辅助测试

2、部署grafana

具体请看前面的篇章:进阶 | Prometheus+Grafana 普罗米修斯-CSDN博客

3、部署loki

这里使用其二进制包进行安装:Releases · grafana/loki · GitHub

  1. 浏览到Releases · grafana/loki · GitHub

  2. 找到您要安装的版本的“资产”部分。

  3. 下载与您的系统相对应的 Loki 和 Promtail 归档文件。

    此时请勿下载 LogCLI 或 Loki Canary。LogCLI 允许您在命令行界面中运行 Loki 查询。Loki Canary 是一个用于审核 Loki 性能的工具。

  4. 将包内容提取到同一目录中。这两个程序将在该目录中运行。

  5. 在命令行中,将目录更改 (大多数系统上的 cd) 到包含 Loki 和 Promtail 的目录。

    将以下命令复制并粘贴到您的命令行中,以下载通用配置文件。

    使用与您下载的 Loki 版本匹配的 Git 引用来获取正确的配置文件。

wget https://raw.githubusercontent.com/grafana/loki/main/cmd/loki/loki-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml

这里的配置是通用配置

进行修改配置,然后启动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: D:\software\loki-windows-amd64.exe\BoltDBfilesystem:# 文件系统的存储路径directory: D:\software\loki-windows-amd64.exe\fileStorelimits_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-linux-amd64 -config.file=loki-local-config.yaml

访问grafana使其关联对应的Loki

绑定对应的Loki地址和端口

然后dashboard大盘,创建仪表盘,选择Loki就可以了

没数据时,默认是这样的

4、部署vector

        1、基本介绍
                Vector 是一个高性能、轻量级的数据收集、转换和发送工具。它可以处理各种类型的数据,如日志、指标等,并且能够将这些数据发送到多个不同的目标,如 Elasticsearch、Loki、Kafka 等。

        2、配置文件结构
                Vector 的配置主要通过一个 TOML 格式的文件(通常是vector.toml)来完成。TOML 是一种易于阅读和编写的配置文件格式。
                一个基本的配置文件通常包含三个主要部分:sources(数据源)、transforms(数据转换)和sinks(数据接收器)。

这里使用的是二进制安装包进行安装的,下载位置:Download | Vectoricon-default.png?t=O83Ahttps://vector.dev/download/ 

修改配置文件,使其将Kafka中的数据传输到Loki上

# Change this to use a non - default directory for Vector data storage:
data_dir: "/var/lib/vector"# Source: Kafka
sources:kafka_source:bootstrap_servers: "192.168.10.110:9092,192.168.10.120:3092"group_id: "test"topics:- "test"type: "kafka"# Sink: Loki
sinks:loki_sink:endpoint: "http://192.168.10.140:3100"inputs:- "kafka_source"type: "loki"encoding:codec: "json"  # 这里假设使用json编码,你可以根据实际情况修改labels:key: "your_label_key"value: "your_label_value"

运行并查看是否报错

5、验证与测试

从上面的vector配置文件可以知道,其使用的是Kafka集群的test  topic作为测试对象

通过kafka-console-ui工具创建对应的topic

在线写入数据,用于验证数据的传输

在grafana中进行查看

通过标签和条件进行索引,这里因为没有定义标签名,所以是未知的服务

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第515题在每个树行中找最大值

题目: 题解: func largestValues(root *TreeNode) (ans []int) {if root nil {return}q : []*TreeNode{root}for len(q) > 0 {maxVal : math.MinInt32tmp : qq nilfor _, node : range tmp {maxVal max(maxVal, node.Val)if node.Left ! nil {q …

Vue3的router和Vuex的学习笔记整理

一、路由的基本搭建 1、安装 npm install vue-router --registryhttps://registry.npmmirror.com 2、配置路由模块 第一步:src/router/index.js创建文件 第二步:在src/view下面创建两个vue文件,一个叫Home.vue和About.vue 第三步&#x…

vue插件清除 所有console.log()

一、作用 1、提升性能console.log() 语句会消耗一定的性能,尤其是在频繁调用的情况下。在生产环境中移除这些语句可以提高应用的运行效率。 2、减少信息泄露console.log() 可以输出敏感信息(如用户数据、API 响应等)。在生产环境中&#xf…

vue项目中如何在路由变化时增加一个进度条

在 Vue.js 项目中,使用路由(如 Vue Router)时,为了提升用户体验,你可能会想要在路由变化时显示一个进度条。这可以通过多种方式实现,其中一种流行的做法是使用第三方库,如 vue-loading-bar 或 n…

python 模块和包、类和对象

模块 模块是包含 Python 代码的文件,通常用于组织相关的函数、类和其他语句。模块可以被导入并在其他 Python 文件中使用。 创建模块 假设你创建了一个名为 mymodule.py 的文件,内容如下: # mymodule.pydef greet(name): return f"…

图书管理系统汇报

【1A536】图书管理系统汇报 项目介绍1.用户登录注册功能1. 1用户角色管理2.图书管理功能2.1 添加图书2.2 编辑图书2.3 删除图书 3.图书搜索和筛选3.1 图书搜索3.2 图书筛选 4.图书借阅、图书归还4.1 图书借阅4.2 图书归还 5.用户信息管理5.1上传头像5.2修改头像5.3 修改密码 项…

执行Django项目的数据库迁移命令时报错:(1050, “Table ‘django_session‘ already exists“);如何破?

一、问题描述: 当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如: 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。数据库状态与迁移文件不同…

蓝牙BLE开发——红米手机无法搜索蓝牙设备?

解决 红米手机,无法搜索附近蓝牙设备 具体型号当时忘记查看了,如果你遇到有以下选项,记得打开~ 设置权限

java设计模式之创建者模式(5种)

设计模式 软件设计模式,又称为设计模式,是一套被反复利用,代码设计经验的总结,他是在软件设计过程中的一些不断发生的问题,以及该问题的解决方案。 **创建者模式又分为以下五个模式:**用来描述怎么“将对象…

SpringSecurity框架(入门)

简介: Spring Security 是一个用于构建安全的 Java 应用程序的框架,尤其适用于基于Spring的应用程序。它提供了全面的安全控制,从认证(Authentication)到授权(Authorization),以及…

广东网站设计提升你网站在搜索引擎中的排名

在当今网络盛行的时代,拥有一个设计优良的网站,对企业的在线发展至关重要。特别是对于广东地区的企业来说,网站设计不仅仅是美观的问题,更直接影响着搜索引擎中的排名。因此,精心策划和设计的网站,能够显著…

Cuebric:用AI重新定义3D创作的未来

一、简介 Cuebric 是一家成立于2022年夏天的好莱坞创新公司,致力于为电影、电视、游戏和时尚等行业提供先进的AI多模态SaaS平台。自2024年1月正式推出以来,Cuebric 已经在市场上获得了广泛的认可和积极的反馈。目前,该平台正处于1.0版本的beta测试阶段,已募集约50万美元的…

计算机的错误计算(一百四十)

摘要 探讨 MATLAB 中函数 的计算精度。 从计算机的错误计算(一百三十九)知,对于对数运算,当真数在 1 附近时,计算机的输出会出现较大误差。为此,IEEE 754-2019 中专门定义有函数 其目的就是当自变量在 …

《Python游戏编程入门》注-第4章2

《Python游戏编程入门》的“4.2.2 键盘事件”中介绍了通过键盘事件来监听键盘按键的方法。 1 键盘事件 玩家点击键盘中某个按键实际上包含了两个动作:点击按键和释放按键,也就是按键按下和松开。按键按下的对应的事件是KEYDOWN,按键松开对应…

《高频电子线路》 —— 高频谐振功放(2)

动态特性与负载特性 动态特性 静态特性是指,不考虑负载阻抗的时候获得的,即转移特性曲线和输出特性曲线。 考虑负载时,电流变化的时候,负载上的电压就会变化,管子上面的Vce也会变化。 考虑负载的反作用后&#xff0c…

SpringBoot 下的Excel文件损坏与内容乱码问题

序言 随着打包部署的方式的改变,原本正常运行的代码可能带来一些新的问题,比如我们现在使用SpringBoot 的方式生成Jar包直接运行,就会对我们再在Resource下的Excel文件产生影响,导入与预期不符的情况发生cuiyaonan2000163.com 比…

「Mac畅玩鸿蒙与硬件12」鸿蒙UI组件篇2 - Image组件的使用

在鸿蒙应用开发中,Image 组件用于加载和显示图片资源,并提供多种属性来控制图片的显示效果和适配方式。本篇将带你学习如何在鸿蒙应用中加载本地和远程图片、设置图片样式以及实现简单的图片轮播功能。 关键词 Image 组件图片加载本地资源远程图片图片轮播一、Image 组件基础…

上海亚商投顾:沪指缩量调整 华为概念股午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整,沪指、深成指午后跌超1%,创业板指一度跌逾2%,尾盘跌幅有…

vim命令及shell命令

目录 vim命令 vim三种工作模式 光标的跳转 复制粘贴 剪切删除 撤销回滚替换 翻页 其他 shell编程命令 判断用户的参数 可用的整数比较运算符 常见的字符串比较运算符 if条件测试语句 for条件循环语句 vim命令 vim三种工作模式 Vim编辑器中设置了三种模式: 命令…

Z 检验和 T 检验之间的区别

目录 一、说明 二、什么是假设检验? 三、假设检验基础 3.1 假设检验的基本概念 3.2 、执行假设验证的步骤 3.3 临界值、P 值 3.4 方向假设 3.5 非方向假设检验s 四、什么是 Z 检验统计量? 五、Z 检验示例 5.1 单样本 Z 检验 5.2 双样本 Z 检…