更适合中小企业的日志系统loki

本文探讨了运维中日志监控的重要性,重点比较了开源方案ELK的全文索引与Loki的压缩存储在成本和效率上的差异,特别强调了Loki在低成本和高效查询方面的优势,以及其功能组件Promtail、Distributor、Ingester和Querier的职责与挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运维的核心目标是保障系统的稳定性和可靠性,而监控是贯穿整个运维生命周期的,为系统的稳定和可靠提供了可观察性及历史可追溯性,可以说,没有监控,运维就是在抓瞎

在整个运维生命周期中,监控覆盖硬件/系统级监控、应用服务指标监控、程序运行日志监控、业务监控、链路监控

而日志监控主要就是关注程序运行状态,当然,如果涉及业务日志,日志监控也能体现业务运行情况及业务访问量等

日志架构通常的做法就是:

  • 日志收集
  • 日志处理
  • 日志存储
  • 日志可视化

Loki与ELK抉择

而在Loki之前,你要问运维开源的日志解决方案,似乎只有ELK

不可否认,ELK通过对日志全文索引及列式存储,为日志存储及分析带来极大的便利性

但是从另一个角度来讲,这样的便利是通过极高的成本换来的,包括服务器成本和运维成本,而存储的日志中,高价值的日志却很少,这样的成效比是极低的

而Loki则恰恰相反,Loki不会对日志数据建立全文索引,取而代之的是对非结构化日志数据进行压缩存储,并且只对日志数据的metadata(时间戳、labels等)建立索引,所以相比ELK,它的存储成本更低,查询效率也更高

但是Loki也有缺点,就是如果想实现项ELK一样的复杂度比较高的查询,需要设计好Labels,如果对labels设计不合理,会使Loki对数据流的存储和查询带来极大的挑战,会使Loki崩溃,后面会专门写一篇对Loki的labels进行详细的分析的文章,今天只对Loki数据处理及功能组件进行分析

Loki的功能组件

Loki包含以下几个功能组件
在这里插入图片描述

  • Promtail
    在这里插入图片描述

Promtail是负责日志数据的采集、提取、匹配、过滤、打lables、Push to loki这写工作的

支持的采集方式包括File Target、Journal Target、Syslog Target、Stdin Target

整个Promtail对日志数据处理流程如下

  • Distributor

Distributor主要接收Promtail Push过来的日志数据,并把日志数据分发给Ingester

Distributor与Ingester之间以RPC的方式进行通信,它通过对元数据进行hash算法计算出将日志数据分发到哪一个Ingester上

Distributor以日志数据的TenantID、Labels作为Hash key

  • Ingester

Ingester负责接收数据并构建chunk,存储日志索引及数据
在这里插入图片描述

当一个chunk填充满之后,ingester将其刷新到数据库,块和索引分别进行存储
在这里插入图片描述

刷新完一个chunk之后,Ingester会创建一个空的chunk

  • Querier
    在这里插入图片描述

Querier负责数据读取,它通过给定的一个时间范围和标签选择器,查看索引以确定哪些块匹配,并通过greps聚合各个Ingester中的数据,并将结果返回给client

  • Grafana

Loki的数据查询,都是通过Grafana,在Grafana中支持loki的数据源,通过配置Loki的接口地址即可

Grafana的查询,支持LogQL,在Grafana中查询都是通过Label或log文本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值