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.rhkb.cn/news/493563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于LabVIEW的USRP信道测量开发

随着无线通信技术的不断发展,基于软件无线电的设备(如USRP)在信道测量、无线通信测试等领域扮演着重要角色。通过LabVIEW与USRP的结合,开发者可以实现信号生成、接收及信道估计等功能。尽管LabVIEW提供了丰富的信号处理工具和图形…

STM32-笔记5-按键点灯(中断方法)

1、复制03-流水灯项目,重命名06-按键点灯(中断法) 在\Drivers\BSP目录下创建一个文件夹exti,在该文件夹下,创建两个文件exti.c和exti.h文件,并且把这两个文件加载到项目中,打开项目工程文件 加载…

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒,变成别人肉鸡,不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长,比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…

【AI学习】Huggingface复刻Test-time Compute Scaling技术

OpenAI ChatGPT o1 背后的关键技术Test-time Compute Scaling,Huggingface实现并开源了! Hugging Face 团队发布了一篇关于“开源模型中的推理阶段计算扩展”(Test-time Compute Scaling) 的研究文章。Hugging Face 团队通过复现…

Word图片嵌入格式不正确的解决办法

问题描述: 如图, 粘贴到word的图片只显示底部一部分 解决方法: 第一步 先将图片嵌入文本行中 第二步 再将图片设置为正文格式 然后就出来了

【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap

re:Invent 是全球云计算领域的顶级盛会,每年都会吸引来自世界各地的技术领袖、创新者和实践者汇聚一堂,分享最新的技术成果和创新实践,深圳 UG 作为亚马逊云科技技术社区的重要组成部分,将借助 re:Invent 的东风,举办此…

Intel-ECI之Codesys PLC + Ethercat 远端IO + Codesys IDE编程

目录 一、 准备工作 二、安装Codesys 软件 PLC 三、 使用Codesys IDE 编程测试 CODESYS* 是领先的独立于制造商的 IEC 61131-3 自动化软件,适用于工程控制系统。它用于 Intel Edge Controls for Industrial(Intel ECI 或 ECI),…

渗透测试-前端加密分析之RSA加密登录(密钥来源服务器)

本文是高级前端加解密与验签实战的第6篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过RSA加密来爆破登录。 分析 这里的代码跟上文的类似,但是加密的公钥是通过请求服务端获取的 http://127.0.0.1:8787/crypto/js/…

【Leecode】Leecode刷题之路第87天之扰乱字符串

题目出处 87-扰乱字符串-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 87-扰乱字符串-官方解法 方法1:动态规划 思路: 代码示例:(Java&…

Qt之串口设计-线程实现(十二)

Qt开发 系列文章 - Serial-port(十二) 目录 前言 一、SerialPort 二、实现方式 1.创建类 2.相关功能函数 3.用户使用 4.效果演示 5.拓展应用-实时刷新 总结 前言 Qt作为一个跨平台的应用程序开发框架,在串口编程方面提供了方便易用…

Restaurants WebAPI(三)——Serilog/

文章目录 项目地址一、Serilog使用1.1 安装 Serilog1.2 注册日志服务1.3 设置日志级别和详情1.4 配置到文件里1.5 给不同的环境配置日志1.5.1 配置appsettings.Development.json二、Swagger的使用三、自定义Exception中间件3.1 使用FluentValidation项目地址 教程作者:教程地址…

Tekscan压力分布测量系统:电池安全与质量提升的保障

随着科技的快速发展,电池技术在电动汽车、工业和消费电子等领域的重要性日益增加。Tekscan 压力分布测量系统针对这些领域的需求,成为推动电池技术进步和多领域创新的重要工具。 在锂离子电池的充放电过程中,热循环引起的膨胀和收缩对其性能和…

【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例 每个 WPS 程序的功能程序1:geogrid程序2:ungrib程序3:metgrid WPS运行(Running the WPS)步骤1:Define model domains with geogrid步骤2:Extract…

开源轮子 - Logback 和 Slf4j

spring boot内置:Logback 文章目录 spring boot内置:Logback一:Logback强在哪?二:简单使用三:把 log4j 转成 logback四:日志门面SLF4J1:什么是SLF4J2:SLF4J 解决了什么痛…

Linux下部署MySQL8.0集群 - 主从复制(一主两从)

目录 一、部署前准备 1、查看系统信息 # 查看系统版本 cat /etc/red* # 查看系统位数 getconf LONG_BIT[rootlocalhost ~]# cat /etc/red* CentOS Linux release 7.5.1804 (Core) [rootlocalhost ~]# getconf LONG_BIT 642、下载对应安装包 进入MySQL官网:https:…

springboot中的AOP以及面向切面编程思想

快速入门体验AOP aop中相关概念 实现导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 新建aop文件夹,里面声明XXXAspect类 @Aspect // 声…

在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。

在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。以下是关于这两种方法的详细解释: 一、虚方法(Virtual Method) 定义:虚方法是指在运行时由实例的实际类型决定的方法。在Java中,所有的非私有、非静态、非final方法都是虚方法。当调用一个虚方法时,JVM会根据实…

Java图片拼接

最近遇到一个挺离谱的功能&#xff0c;某个表单只让上传一张图&#xff0c;多图上传会使导出失败。跟开发沟通后表示&#xff0c;这个问题处理不了。我... 遂自己思考&#xff0c;能否以曲线救国的方式拯救一下&#xff0c;即不伤及代码之根本&#xff0c;又能解决燃眉之急。灵…

webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式

一、图形渲染管线基础流程概述 WebGL 的图形渲染管线大致可分为以下几个主要阶段&#xff0c;每个阶段都有其特定的任务&#xff0c;协同工作将 3D 场景中的物体最终转换为屏幕上呈现的 2D 图像&#xff1a; 顶点处理&#xff08;Vertex Processing&#xff09;阶段&#xff1…

大数据面试题--企业面试真题

大数据面试题--企业面试真题 PlanHub 点击访问获取&#xff1a; 大数据面试体系专栏_酷兜科技​www.kudoumh.top/hlwai/85.html 点击访问获取&#xff1a; 大数据面试体系专栏_酷兜科技​www.kudoumh.top/hlwai/85.html 大数据面试题汇总 HDFS 1、 HDFS 读写流程。 2、HDF…