Loki 微服务模式组件介绍

目录

一、简介

二、架构图

三、组件介绍

Distributor(分发器)

Ingester(存储器)

Querier(查询器)

[Query Frontend(查询前端)](#Query Frontend(查询前端))

[Index Gateway(索引网关)](#Index Gateway(索引网关))

Compactor(压缩器)

[Table Manager(表管理器)](#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 定期评估规则并触发告警。


五、优势

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

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

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

相关推荐
做运维的阿瑞7 分钟前
公有云算力布局的技术逻辑与工程实践
微服务·云计算·csdn开发云
m0_646429979 分钟前
从零搭建 Spring Boot + Nacos + MySQL + OpenFeign + Docker Compose 微服务项目
微服务
Nontee34 分钟前
K3s vs K8s:差的不是功能,是交付方式
云原生·容器·kubernetes
做运维的阿瑞1 小时前
Docker常见故障全方位排查指南
运维·docker·云原生·容器
谢亮_vipxieliang1 小时前
云原生存储进阶:CSI 演进与 AI 工作负载的存储架构设计
人工智能·云原生
WeiXin_DZbishe1 小时前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
朱包林1 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
码云之上2 小时前
Prompt 拦不住 Chatbot 的安全问题:九大风险与分层防护
人工智能·架构·全栈
对讲机数码科普2 小时前
从电路原理到协议栈:模拟对讲机与数字对讲机的技术内核拆解
运维·网络·架构·软件工程
一个有温度的技术博主2 小时前
单点登录(SSO)到底怎么实现?怎么判断用户是否已单点登录?
架构