入门 | 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: 3100

schema_config:
  configs:
    - from: 2024-07-01
      # 使用 BoltDB 作为索引存储
      store: boltdb
      # 使用文件系统作为对象存储
      object_store: filesystem
      # 使用 v11 版本的 schema
      schema: v11
      index:
        # 索引前缀
        prefix: index_
        # 索引周期为 24 小时
        period: 24h

ingester:
  lifecycler:
    # 设置本地 IP 地址
    address: 127.0.0.1
    ring:
      kvstore:
        # 使用内存作为 kvstore
        store: inmemory
      # 复制因子设置为 1
      replication_factor: 1
    # 生命周期结束后的休眠时间
    final_sleep: 0s
  # chunk 的空闲期为 5 分钟
  chunk_idle_period: 5m
  # chunk 的保留期为 30 秒
  chunk_retain_period: 30s

storage_config:
  boltdb:
    # BoltDB 的存储路径
    directory: D:\software\loki-windows-amd64.exe\BoltDB
  filesystem:
    # 文件系统的存储路径
    directory: D:\software\loki-windows-amd64.exe\fileStore

limits_config:
  # 不强制执行指标名称
  enforce_metric_name: false
  # 拒绝旧样本
  reject_old_samples: true
  # 最大拒绝旧样本的年龄为 168 小时
  reject_old_samples_max_age: 168h
  # 每个用户每秒的采样率限制为 32 MB
  ingestion_rate_mb: 32
  # 每个用户允许的采样突发大小为 64 MB
  ingestion_burst_size_mb: 64

chunk_store_config:
  # 最大可查询历史日期为 28 天(672 小时),这个时间必须是 schema_config 中 period 的倍数,否则会报错
  max_look_back_period: 672h

table_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中进行查看

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分类算法——逻辑回归 详解

逻辑回归(Logistic Regression)是一种广泛使用的分类算法,特别适用于二分类问题。尽管名字中有“回归”二字,逻辑回归实际上是一种分类方法。下面将从底层原理、数学模型、优化方法以及源代码层面详细解析逻辑回归。 1. 基本原理 …

【Spring MVC】DispatcherServlet 请求处理流程

一、 请求处理 Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用程序。它遵循 MVC(Model-View-Controller)设计模式,将应用程序分为模型(Model)、**视图(View)和控制器&#x…

现代数字信号处理I--最佳线性无偏估计 BLUE 学习笔记

目录 1. 最佳线性无偏估计的由来 2. 简单线性模型下一维参数的BLUE 3. 一般线性模型下一维参数的BLUE 4. 一般线性模型下多维参数的BLUE 4.1 以一维情况说明Rao论文中的结论 4.2 矢量参数是MVUE的本质是矢量参数中的每个一维参数都是MVUE 4.3 一般线性模型多维参数BLUE的…

QT(绘图)

目录 QPainter QPainter 的一些关键步骤和使用方法: QPainter 的一些常用接口: 1. 基础绘制接口 2. 颜色和画刷设置 3. 图像绘制 4. 文本绘制 5. 变换操作 6. 渲染设置 7. 状态保存与恢复 8. 其它绘制方法 示例代码1: 示例代码…

【js逆向学习】某多多anti_content逆向(补环境)

文章目录 声明逆向目标逆向分析逆向过程总结 声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的…

【安全解决方案】深入解析:如何通过CDN获取用户真实IP地址

一、业务场景 某大型互联网以及电商公司为了防止客户端获取到真实的ip地址,以及达到保护后端业务服务器不被网站攻击,同时又可以让公安要求留存网站日志和排查违法行为,以及打击犯罪的时候,获取不到真实的ip地址,发现…

Java | Leetcode Java题解之第524题通过删除字母匹配到字典里最长单词

题目&#xff1a; 题解&#xff1a; class Solution {public String findLongestWord(String s, List<String> dictionary) {int m s.length();int[][] f new int[m 1][26];Arrays.fill(f[m], m);for (int i m - 1; i > 0; --i) {for (int j 0; j < 26; j) {…

python爬虫抓取豆瓣数据教程

环境准备 在开始之前&#xff0c;你需要确保你的Python环境已经安装了以下库&#xff1a; requests&#xff1a;用于发送HTTP请求。BeautifulSoup&#xff1a;用于解析HTML文档。 如果你还没有安装这些库&#xff0c;可以通过以下命令安装&#xff1a; pip install requests…

Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control

链接&#xff1a;深度学习模型预测控制 &#xff08;如果认为有用&#xff0c;动动小手为我点亮github小星星哦&#xff09;&#xff0c;持续更新中…… 链接&#xff1a;WangXiaoMingo/TensorDL-MPC&#xff1a;DL-MPC&#xff08;深度学习模型预测控制&#xff09;是基于 P…

简单的ELK部署学习

简单的ELK部署学习 1. 需求 我们公司现在使用的是ELK日志跟踪&#xff0c;在出现问题的时候&#xff0c;我们可以快速定为到问题&#xff0c;并且可以对日志进行分类检索&#xff0c;比如对服务名称&#xff0c;ip , 级别等信息进行分类检索。此文章为本人学习了解我们公司的…

神经网络进行波士顿房价预测

前言 前一阵学校有五一数模节校赛&#xff0c;和朋友一起参加做B题&#xff0c;波士顿房价预测&#xff0c;算是第一次自己动手实现一个简单的小网络吧&#xff0c;虽然很简单&#xff0c;但还是想记录一下。 题目介绍 波士顿住房数据由哈里森和鲁宾菲尔德于1978年Harrison …

Spark的集群环境部署

一、Standalone集群 1.1、架构 架构&#xff1a;普通分布式主从架构 主&#xff1a;Master&#xff1a;管理节点&#xff1a;管理从节点、接客、资源管理和任务 调度&#xff0c;等同于YARN中的ResourceManager 从&#xff1a;Worker&#xff1a;计算节点&#xff1a;负责利…

[java][基础]JSP

目标&#xff1a; 理解 JSP 及 JSP 原理 能在 JSP中使用 EL表达式 和 JSTL标签 理解 MVC模式 和 三层架构 能完成品牌数据的增删改查功能 1&#xff0c;JSP 概述 JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的…

常见问题 | 数字签名如何保障电子商务交易安全?

如何解决电商交易中数据泄露、交易欺诈等问题&#xff1f; 数字签名是一种类似于电子“指纹”的安全技术&#xff0c;它在电子商务中扮演着至关重要的角色。随着电子商务的迅猛发展&#xff0c;网上交易的数量不断增加&#xff0c;确保交易的安全性和完整性成为了亟待解决的问题…

【Python基础】

一、编程语言介绍 1、分类 机器语言 (直接用 0 1代码编写&#xff09;汇编语言 &#xff08;英文单词替代二进制指令&#xff09;高级语言 2、总结 1、执行效率&#xff1a;机器语言&#xff1e;汇编语言>高级语言&#xff08;编译型>解释型&#xff09; 2、开发效率&…

Java项目实战II基于Java+Spring Boot+MySQL的编程训练系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在当今数字…

双指针习题篇(上)

双指针习题篇(上) 文章目录 双指针习题篇(上)1.移动零题目描述&#xff1a;算法原理&#xff1a;算法流程&#xff1a;代码实现&#xff1a; 2.复写零题目描述&#xff1a;算法原理&#xff1a;算法流程&#xff1a;代码实现&#xff1a; 3.快乐数题目描述&#xff1a;算法原理…

更安全高效的文件传输工具,Ftrans国产FTP替代方案可以了解

文件传输协议&#xff08;FTP&#xff09;&#xff0c;诞生于1971年&#xff0c;自20世纪70年代发明以来&#xff0c;FTP已成为传输大文件的不二之选。内置有操作系统的 FTP 可提供一个相对简便、看似免费的文件交换方法&#xff0c;因此得到广泛使用。 随着企业发展过程中新增…

Leetcode21:合并两个有效链表

原题地址&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示…

《Mini-internVL》论文阅读:OpenGVLab+清华/南大等开源Mini-InternVL | 1~4B参数,仅用5%参数实现90%性能

论文地址Mini-InternVL: A Flexible-Transfer Pocket Multimodal Model with 5% Parameters and 90% PerformanceGitHub仓库地址模型使用教程和权重下载地址 该论文发表于2024年10月份&#xff0c;截止2024年11月&#xff0c;引用数<10 文章目录 论文摘要1. 引用介绍2. 本文…