Loki 微服务模式组件介绍

devtools/2024/12/23 5:41:26/

目录

一、简介

二、架构

三、组件介绍

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.ppmy.cn/devtools/144601.html

相关文章

信息系统项目管理 -冲突管理

信息系统项目管理题 冲突管理: 项目管理信息系统包括()软件,用于监督资源的使用情况,协助确保合适的资源适时、适地的用于合适活动。 A资源管理或进度计划 BCRM系统 C采购系统或智能分析 DBOM系统 答案:A …

动态头部:利用注意力机制统一目标检测头部

摘要 将定位和分类结合在目标检测中的复杂性促进了各种方法的蓬勃发展。先前的工作试图改进各种目标检测头(head)的性能,但未能给出一个统一的视角。在本文中,我们提出了一种新颖的动态头框架,通过注意力机制统一目标…

为什么使用环形队列

1.看以下两种情况。第一种不会出现问题,当主流程读取次数比较慢时,数据会被覆盖。 2.扩大空间。不可取。 3.什么是队列

Android笔试面试题AI答之SQLite(2)

文章目录 6. 简述SQLite优化措施?1. **索引优化**2. **事务管理**3. **预编译语句**4. **选择合适的数据类型**5. **定期维护**6. **配置参数调整**7. **减少不必要的约束**8. **优化查询**9. **利用内存数据库**10. **异步写入**11. **文件系统和磁盘优化**总结 7.…

【软考第一章第3节】现代化创新发展

学习步骤 大致浏览章节内容和要点 章节概述 + 思维导图分解逐步学习和分析测试题检验第3节:现代化创新发展 思维导图: 一、农业现代化 1、农业现代化 农业现代化是用现代工业装备农业,用现代科学技术改造农业,用现代管理方法管理农业,用现代科学文化知识提高农民素质的…

Spring Boot 整合 RabbitMQ:从入门到实践

在现代微服务架构中,消息队列(Message Queue)是实现服务之间异步通信的重要组件。RabbitMQ 作为一个功能强大的消息代理,提供了可靠的消息传递机制,广泛应用于分布式系统中。Spring Boot 作为 Java 生态中的主流框架&a…

TiddlyWiki如何设创建目录页和按照章节组织条目

起因:之前虽然安装了Tiddlywiki,但是我仅仅是把它当作临时信息、日程的记录工具。时间长了,记录条目太多,想要分类,创建目录,所以就有了本文。目前通过搜索引擎查到的关于tiddlywiki的目录的编辑和创建&…

代码随想录day21 | leetcode 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 二叉树总结篇

669.修剪二叉搜索树 调用递归实现剪枝 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(root null) return null;if(root.val < low) return trimBST(root.right, low, high); //如果当前节点的值小于low&#xff0c;意味着当前节点及其…