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

Loki 微服务模式组件介绍

目录

一、简介

二、架构图

三、组件介绍

Distributor(分发器)

Ingester(存储器)

Querier(查询器)

Query Frontend(查询前端)

Index Gateway(索引网关)

Compactor(压缩器)

Table Manager(表管理器)

Ruler(规则引擎)

四、各组件协作流程

五、优势

一、简介

   Loki 是一个用于日志聚合和查询的系统,广泛用于 Kubernetes 和微服务架构中。Loki 的微服务模式将其核心功能拆分为多个独立的组件,每个组件专注于特定的任务。以下是 Loki 微服务模式下主要组件的功能和作用介绍:

二、架构图

三、组件介绍

Distributor(分发器)

功能:

  • 接收日志数据(通常通过 push 协议或 Promtail)。

  • 将日志数据分发到 Ingester 组件进行存储和处理。

  • 通过 hash-ring 算法,根据日志流的标签(labels)计算分区,并将数据路由到正确的 Ingester

作用:

  • 作为日志数据的入口,负责任务分配和路由。

  • 提供高可用性和水平扩展能力,允许多个 Distributor 节点同时运行。


Ingester(存储器)

功能:

  • 接收 Distributor 分发的日志数据。

  • 将日志数据暂时存储在内存中,并以分片的形式写入持久化存储(如对象存储)。

  • 处理读取请求并提供实时日志查询能力。

作用:

  • 实现日志的实时存储和处理。

  • 确保高吞吐量和低延迟的写入性能。

  • 负责将日志数据以批次的形式写入持久存储。


Querier(查询器)

功能:

  • 处理来自用户的查询请求(通过 Loki API 或 Grafana)。

  • Ingester 和持久化存储中读取日志数据。

  • 对日志数据进行过滤、聚合和返回。

作用:

  • 提供强大的查询功能(使用 LogQL)。

  • 同时支持实时日志查询(从 Ingester 获取)和历史日志查询(从对象存储获取)。


Query Frontend(查询前端)

功能:

  • 接收用户的查询请求,并将其分解为多个小查询任务。

  • 对查询任务进行缓存以提高性能。

  • 将查询任务分发到 Querier

作用:

  • 优化查询性能,尤其是复杂和大范围查询。

  • 提供请求分片、聚合以及缓存能力,减少 Querier 的工作负载。


Index Gateway(索引网关)

功能:

  • 管理和写入日志的索引数据到后端存储(如对象存储、Cassandra)。

  • 提供索引的读取能力,帮助快速定位日志。

作用:

  • 实现高效的日志索引存储和管理。

  • 减少日志查询的延迟,通过索引快速找到日志所在的存储位置。


Compactor(压缩器)

功能:

  • 定期从对象存储中读取分片的日志数据。

  • 对分片日志数据进行合并、去重和优化。

  • 写入优化后的数据回对象存储。

作用:

  • 优化日志数据的存储格式,降低存储成本。

  • 提升查询效率,通过压缩和去重减少查询的数据量。


Table Manager(表管理器)

功能:

  • 为存储后端(如 DynamoDB、Bigtable)管理表的生命周期。

  • 创建、删除和更新索引表。

作用:

  • 提供后端存储的表管理能力。

  • 确保索引表结构与 Loki 的存储需求匹配。


Ruler(规则引擎)

功能:

  • 基于日志数据定义和执行规则。

  • 触发警报规则或生成预聚合的日志查询结果。

作用:

  • 提供告警功能:允许基于日志数据的实时或周期性告警。

  • 支持基于 LogQL 的规则评估。


四、各组件协作流程

  1. 日志接入

    1. Distributor 接收日志数据,并通过标签分片分发给对应的 Ingester。

  2. 数据存储

    1. Ingester 将日志数据暂存内存,并定期将其写入对象存储。

    2. Index Gateway 管理日志索引,方便快速查询。

  3. 数据查询

    1. 用户通过 Loki 或 Grafana 发起查询请求。

    2. Query Frontend 接收请求并优化分片后发送给 Querier。

    3. Querier 从 Ingester(实时数据)或对象存储(历史数据)中读取日志并返回结果。

  4. 优化与维护

    1. Compactor 对存储中的日志数据进行合并和优化。

    2. Ruler 定期评估规则并触发告警。


五、优势

  • 模块化:每个组件独立运行,可单独扩展。

  • 高可用:各组件支持水平扩展,提供更高的吞吐量和容错能力。

  • 灵活性:可以根据需求调整组件的资源和部署策略。

http://www.lryc.cn/news/505809.html

相关文章:

  • peerDependencies对等依赖
  • 贪心算法 part01
  • java开发入门学习二 - 变量
  • Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用
  • 0004.基于springboot+elementui的在线考试系统
  • 基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作
  • 02-5.python入门基础一控制流(while)
  • Go语言开发入门与实战
  • HarmonyOS Next应用开发实战:ArkWeb组件使用介绍及使用举例
  • 【已解决】在Visual Studio里将应用与Microsoft Store关联时提示网络异常
  • springcloud-gateway获取应用响应信息乱码
  • [笔记]关于Qt的nativeEvent事件无法接收window消息的Bug
  • LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
  • Pytorch | 从零构建MobileNet对CIFAR10进行分类
  • CSS系列(18)-- 工程化实践详解
  • 日拱一卒(18)——leetcode学习记录:二叉树中的伪回文路径
  • hive—炸裂函数explode/posexplode
  • SpringBoot 新特性
  • 鸿蒙app封装 axios post请求失败问题
  • 消息队列 Kafka 架构组件及其特性
  • 网络攻击与防范
  • 文献研读|基于像素语义层面图像重建的AI生成图像检测
  • 【操作系统】为什么需要架构裁剪?
  • LSTM长短期记忆网络
  • 基于前端技术UniApp和后端技术Node.js的电影购票系统
  • 数据结构与算法:稀疏数组
  • Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
  • VSCode中的Black Formatter没有生效的解决办法
  • 【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍