Grafana Loki 轻量级日志聚合系统
Grafana 简介
从 Prometheus 到 Loki,从指标到日志。
Grafana 简介
开源的仪表盘,可观测性事实上的标准方案。
Grafana Loki
Loki 是一个水平可扩展、高可用、多租户的日志聚合系统,其设计灵感源自 Prometheus,旨在实现极高的成本效益且易于操作。它不会为日志内容建立索引,而是为每个日志流建立一组标签。Loki 项目于 2018 年在 Grafana Labs 启动,并在西雅图 KubeCon 大会上公布。Loki 依据 AGPLv3 许可证发布。Grafana Labs 自豪地主导着 Loki 项目的开发,在 Grafana 中构建了对 Loki 的一流支持,并确保 Grafana Labs 的客户能获得他们所需的 Loki 支持及功能。
Grafana Loki 核心技术特点:
- 简单易用,可以使用各种各样的客户端,以任何格式、从任何来源发送日志。
- 100% 持久化到对象存储,意味着能获得 PB 级规模、高吞吐量以及经济高效且耐用的存储。
- 根据日志行构建指标并生成警报
- 没有摄入日志格式要求,这提供了更大的灵活性,并且可以选择在查询时进行格式化。
- 实时跟踪日志,以便在日志进入系统时查看它们,每隔特定时间更新日志,查看特定日期的日志等等。
- 原生集成 Prometheus、Grafana 和 K8s,因此可在单一用户界面中无缝切换指标、日志和追踪数据。
【标签索引数据格式】
一、异构系统日志采集
Grafana Loki 起初使用 Promtail 做日志采集,为了适应可观测性的发展启动了 Grafana Alloy 项目。
Grafana Alloy 是一个开源的 OpenTelemetry 收集器,可用于 Grafana Loki 日志聚合系统中进行异构系统日志采集。
1. 功能性特点
- 配置即代码,创建
config.alloy文件来配置 Grafana Alloy,可随代码推送到版本仓库,进行版本管理。 - 基于 Pull 模式的日志文件监听采集,与日志生产解耦,可以采集任何异构系统日志
- 预处理模块,借助
loki.process组件对日志进行转换、过滤、解析和丰富等操作。可使用stage.drop块定义要从抓取的日志中删除的内容,从而过滤掉非必要日志,减少日志量,降低存储成本。
2. 非功能性特点
- 云原生横向扩展
- 安全可靠
- 高可用与负载均衡
日志采集过程
- 配置文件定义:通过创建
config.alloy文件来配置 Grafana Alloy。例如,使用local.file_match组件定义要采集的日志文件路径,可支持通配符,还能设置每隔一定时间检查新文件。如path_targets = ({__path__ = "/data/log/info-*.log", service = "systemName", })表示加载以info为前缀的log文件,并为其添加service标签。 - 日志抓取:利用
loki.source.file组件连接到local.file_match组件,从指定文件中抓取日志数据。它可以从日志文件末尾开始跟踪,避免摄入整个日志文件历史,并将抓取到的日志转发给其他组件,如用于过滤的组件。 - 日志处理:借助
loki.process组件对日志进行转换、过滤、解析和丰富等操作。可使用stage.drop块定义要从抓取的日志中删除的内容,从而过滤掉非必要日志,减少日志量,降低存储成本。 - 日志发送:最后通过
loki.write组件将处理后的日志发送到 Grafana Loki 服务器。需配置 Loki 的端点地址,如endpoint { url = "http://127.0.0.1:3100/loki/api/v1/push" },将日志数据推送到指定的 Loki 实例。
2. 非功能性特点
- 多协议支持与兼容性强:Grafana Alloy 原生支持多种数据格式和协议,如 Prometheus、OpenTelemetry、Mimir、Loki 等。这使得它能够从不同类型的异构系统中采集日志,无论是基于容器的应用、传统的服务器应用,还是其他各种支持相关协议的设备,都可以方便地接入,统一采集日志数据。
- 功能丰富强大:不仅能采集日志,还支持指标、跟踪和配置文件等多种类型数据的采集。可对采集的数据进行处理和转换,如注入额外元数据或过滤数据,满足不同场景下对日志数据处理的需求,为后续的分析和监控提供更优质的数据。
- 配置灵活便捷:提供了强大的模块组件配置功能,可将复杂的配置文件简化为几行的模块。这些模块可以是社区预构建的,也可以由 Grafana 打包提供,用户能够根据实际需求快速配置,轻松实现日志采集任务,还支持本地配置和云端配置等多种方式。
- 高可用性与负载均衡:内置集群功能,针对基于拉取的工作负载,能实现更好的工作负载分配和高可用性。确保在大规模日志采集场景下,系统能够稳定运行,不会因某个节点故障而影响整体日志采集工作。
- 安全可靠:可连接到 HashiCorp Vault 服务器来检索机密信息,避免在本地管理认证凭据和令牌,提高了系统的安全性,防止敏感信息泄露,保障日志采集过程的安全可靠。
- 调试方便:内置调试用户界面,可通过 Alloy 的 HTTP 服务器查看,方便在配置时排查问题。用户能够快速定位和解决日志采集过程中出现的配置错误等问题,减少调试时间和成本。