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

news2024/11/5 1:29:21

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

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

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

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

相关文章

C语言 运算符

时间:2024.11.4 一、学习内容 1、算数运算符(加、减、乘、除法和取余) 通用细节: 1.整数计算,结果一定是一个整数 2.小数计算,结果一定是一个小数 3.整数和小数计算,结果一定是一…

LLM | 论文精读 | AAAI | EarthVQA:向可查询地球迈进的多模态视觉问答研究

论文标题: EarthVQA: Towards Queryable Earth via Relational Reasoning-Based Remote Sensing Visual Question Answering 作者: Junjue Wang, Zhuo Zheng, Zihang Chen, Ailong Ma, Yanfei Zhong 期刊: The Thirty-Eighth AAAI Conference on Artificial Intelligence (AA…

总结拓展十五:SAP物料分割评估

一、概述 在SAP中,物料的分割评估是指,对同一个物料做不同的价值设置。即,根据不同的条件,核算其价格及记录价格的相关属性。 二、物料主数据设置 1、物料主数据-会计1视图 只有价格控制“V”可以分割评估。 2、设置评估类型…

ai翻唱部分步骤

模型部署 我是用的RVC进行的训练,也可以使用so-vits-svc。 通过百度网盘分享的文件:RVC-beta 链接:https://pan.baidu.com/s/1c99jR2fLChoqUFqf9gLUzg 提取码:4090 以Nvida显卡为例,分别下载“RVC1006Nvidia”和…

[综述笔记]Deep learning for brain disorder diagnosis based on fMRI images

论文网址:Deep learning for brain disorder diagnosis based on fMRI images - ScienceDirect 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向…

HarmonyOS:UIAbility组件概述

一、概述 UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。 UIAbility的设计理念: 原生支持应用组件级的跨端迁移和多端协同。支持多设备和多窗口形态。 UIAbility划分原则与建议: UIAbility组件是系统调度的基本单元&#xff0c…

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据:菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…

【Vue框架】基础语法练习(1)

其实更多知识点已经在Vue.js官网十分清楚了,大家也可以去官网进行更细节的学习 https://cn.vuejs.org/ 说明:目前最新是Vue3版本的,但是Vue2已经深得人心,所以就是可以支持二者合用。它们最大的区别就是Vue3是组合式API&#xf…

爬虫学习4

from threading import Thread#创建任务 def func(name):for i in range(100):print(name,i)if __name__ __main__:#创建线程t1 Thread(targetfunc,args("1"))t2 Thread(targetfunc, args("2"))t1.start()t2.start()print("我是诛仙剑")from …

qt QScrollArea详解

1、概述 QScrollArea是Qt框架中的一个控件,它提供了一个可滚动的视图区域,用于显示超出视图大小的内容。这个控件非常有用,尤其是在处理大型表格、文本区域、图像集合或任何需要滚动浏览的内容时。QScrollArea本身不直接显示内容&#xff0c…

【ChatGPT】搜索趋势分析

【ChatGPT】搜索趋势分析 为了分析 ChatGPT 在过去一年的流行趋势,我们可以查看 Google Trends 的数据 安装依赖pytrends pip install pytrends运行以下 Python 脚本 import pandas as pd import matplotlib.pyplot as plt from pytrends.request import TrendR…

Mac如何实现高效且干净的卸载应用程序

使用Mac卸载应用程序,你还在使用废纸篓这个办法吗,看不见卸载了什么,看不见清理了多少,真的不会有残留吗 XApp Mac上的卸载专家,强大的垃圾逻辑检测,垃圾扫描更全面,卸载更干净 使用简单&#…

安科瑞AMB400分布式光纤测温系统解决方案--远程监控、预警,预防电气火灾

安科瑞戴婷 可找我Acrel-Fanny 安科瑞AMB400电缆分布式光纤测温具有多方面的特点和优势: 工作原理: 基于拉曼散射效应。激光器产生大功率的光脉冲,光在光纤中传播时会产生散射。携带有温度信息的拉曼散射光返回光路耦合器,耦…

GitHub上传自己的项目

目录 一、安装Git插件 1)下载 2)安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user],下次可以直接用 一、安装Git插件 1)下载 下载地址&#x…

Spring Boot框架

一.SpringBoot简介 1.1 设计初衷 目前我们开发的过程当中,一般采用一个单体应用的开发采用 SSM等框架进行开发,并在 开发的过程当中使用了大量的xml 等配置文件,以及在开发过程中使用MAVEN的构建工具来进 行构建项目,但是往往有…

【C++】vector 类深度解析:探索动态数组的奥秘

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 如果你对string类还存在疑惑,欢迎阅读我之前的作品 : 👉【C】string 类深度解析:…

windows——病毒的编写

声明 学习视频来自B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 windows基础 我们学习了前面的window…

STM32 + CubeMX + 硬件SPI + W5500 +UDP

这篇文章记录一下STM32W5500UDP的调试过程,实现UDP数据的接收与发送。 目录 一、W5500模块介绍二、Stm32CubeMx配置三、Keil代码编写1、添加W5500驱动代码到工程(添加方法不赘述,驱动代码可以在官网找)2、在工程中增加代码&#…

原来大佬的测试用例都是这样写的...

1、测试点与测试用例 测试点不等于测试用例,这是我们首先需要认识到的。 问题1:这些测试点在内容上有重复,存在冗余。 问题2:一些测试点的测试输入不明确,不知道测试时要测试哪些。 问题3:总是在搭相似…

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction ​ ​ 摘要:基于电子健康记录(EHR)的深度学习(DL)预…