Loki日志系统,比ELK轻量多了

Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心 。

Loki日志系统,比ELK轻量多了

文章插图
图片来自 包图网
先看看结果有多轻量吧:
Loki日志系统,比ELK轻量多了

文章插图
 
Loki 是一个为有效保存日志数据而优化的数据存储 。日志数据的高效索引将 Loki 与其他日志系统区分开来 。与其他日志系统不同,Loki 索引是根据标签构建的,原始日志消息未编入索引 。
Loki日志系统,比ELK轻量多了

文章插图
 
代理(也称为客户端)获取日志,将日志转换为流,然后通过 HTTP API 将流推送到 Loki 。Promtail 代理专为 Loki 安装而设计,但许多其他代理与 Loki 无缝集成 。
Loki日志系统,比ELK轻量多了

文章插图
 
Loki 特点如下:
用于索引日志的高效内存使用:通过在一组标签上建立索引,索引可以明显小于其他日志聚合产品 。更少的内存使得操作成本更低 。
多租户:Loki 允许多个租户使用单个 Loki 实例 。不同租户的数据与其他租户完全隔离 。通过在代理中分配租户 ID 来配置多租户 。
LogQL,Loki 的查询语言:Prometheus 查询语言 PromQL 的用户会发现 LogQL 熟悉且灵活,可用于生成针对日志的查询 。该语言还有助于从日志数据中生成指标,这是一项远远超出日志聚合的强大功能 。
可扩展性:Loki 在小范围内运行良好 。在单进程模式下,所有需要的微服务都在一个进程中运行 。
单进程模式非常适合测试 Loki、在本地运行或小规模运行 。Loki 还旨在为大规模安装进行横向扩展 。
Loki 的每个微服务组件都可以分解为单独的进程,并且配置允许对组件进行单独扩展 。
灵活性:许多代理(客户端)都有插件支持 。这允许当前的可观察性结构将 Loki 添加为他们的日志聚合工具,而无需切换可观察性堆栈的现有部分 。
Grafana 集成:Loki 与 Grafana 无缝集成,提供完整的可观察性堆栈 。
Loki/Promtail/Grafana vs EFKEFK(Elasticsearch、Fluentd、Kibana)堆栈用于从各种来源摄取、可视化和查询日志 。
Elasticsearch 中的数据作为非结构化 JSON 对象存储在磁盘上 。每个对象的键和每个键的内容都被索引 。
然后可以使用 JSON 对象定义查询(称为查询 DSL)或通过 Lucene 查询语言查询数据 。
相比之下,单二进制模式的 Loki 可以将数据存储在磁盘上,但在水平可扩展模式下,数据存储在云存储系统中,例如 S3、GCS 或 Cassandra 。
日志以纯文本形式存储,并标有一组标签名称和值,其中仅索引标签对 。这种权衡使得操作比完整索引更便宜,并允许开发人员积极地从他们的应用程序中登录 。使用LogQL查询 Loki 中的日志 。
然而,由于这种设计权衡,基于内容(即日志行中的文本)过滤的 LogQL 查询需要加载搜索窗口中与查询中定义的标签匹配的所有块 。
Fluentd 通常用于收集日志并将其转发到 Elasticsearch 。Fluentd 被称为数据收集器,它可以从许多来源摄取日志,对其进行处理,并将其转发到一个或多个目标 。
相比之下,Promtail 的用例是专门为 Loki 量身定制的 。它的主要操作模式是发现存储在磁盘上的日志文件,并将它们与一组标签相关联地转发给 Loki 。
Promtail 可以为与 Promtail 运行在同一节点上的 Kubernetes pod 进行服务发现,充当容器边车或 Docker 日志驱动程序,从指定文件夹读取日志,并跟踪 systemd 日志 。
Loki 通过一组标签对表示日志的方式类似于 Prometheus表示指标的方式 。
当与 Prometheus 一起部署在环境中时,由于使用相同的服务发现机制,Promtail 的日志通常具有与应用程序指标相同的标签 。
具有相同标签的日志和指标使用户能够在指标和日志之间无缝切换上下文,帮助进行根本原因分析 。
Kibana 用于可视化和搜索 Elasticsearch 数据,并且在对这些数据进行分析方面非常强大 。
Kibana 提供了许多可视化工具来进行数据分析,例如位置图、用于异常检测的机器学习以及用于发现数据关系的图形 。警报可以配置为在发生意外情况时通知用户 。
相比之下,Grafana 专门针对来自 Prometheus 和 Loki 等来源的时间序列数据量身定制 。
仪表板可以设置为可视化指标(即将提供日志支持),并且可以使用浏览视图对您的数据进行临时查询 。与 Kibana 一样,Grafana 支持根据您的指标发出警报 。


推荐阅读