Promtail、Loki 和 Grafana 是一组开源工具,通常一起使用,用于帮助监控、收集、存储和可视化日志和指标数据的现代化日志解决方案。
介绍:Promtail 是 Grafana Labs 开发的一个用于日志收集的开源代理。它特别与 Prometheus 和 Loki 集成得非常好,以帮助用户从各种应用程序和服务中轻松收集和标准化日志数据。
功能:Promtail 会监视目标日志文件、目录或系统日志流,并将其发送到 Loki 数据源。它还支持标签化日志以使其更易于查询,类似于 Prometheus 的标签数据模型。
用途:Promtail 可以与容器化环境、Kubernetes 集群和传统主机一起使用,以便实时收集和传输日志数据。
介绍:Grafana Loki 是一个开源的日志聚合和存储系统,旨在提供高效的日志存储和查询。它专门用于处理大规模的分布式日志数据。
功能:Loki 提供了一个标签索引系统,类似于 Prometheus,以便高效地存储和查询日志。它支持 LogQL 查询语言,允许用户执行强大的查询以检索和分析日志数据。
用途:Loki 通常与Promtail一起使用,以收集、存储和查询分散的日志数据。它还与 Grafana 集成,使用户可以创建仪表板和可视化,以展示日志数据和监控指标的关系。
介绍:Grafana 是一款开源的数据可视化和监控工具,用于创建仪表板和可视化不同数据源的指标数据和日志数据。
功能:Grafana 支持多种数据源,包括 Prometheus、Loki、Elasticsearch、InfluxDB 等。它允许用户创建交互式仪表板,图表、警报和面板,以实时监控应用程序性能、系统指标和日志数据。
用途:Grafana 通常用于可视化监控指标数据和日志数据,以便在一个集中的仪表板中跟踪应用程序性能和健康状态。它与 Prometheus、Loki 和其他数据源集成得很好,为用户提供一个综合的监控和可视化解决方案。
综合使用 Promtail、Loki 和 Grafana 可以实现从应用程序生成的日志数据的收集、存储、查询和可视化,有助于更好地理解应用程序的行为,识别问题,以及监视性能和可用性。这一组工具通常在现代DevOps和云原生环境中得到广泛使用。
https://grafana.com/docs/loki/latest/
Loki 是一个受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。Loki 与 Prometheus 的不同之处在于,它关注日志而不是指标,并通过推送而不是拉取来收集日志。
Loki 的设计非常经济高效且具有高度可扩展性。与其他日志系统不同,Loki 不会对日志内容进行索引,而只会对有关日志的元数据进行索引,作为每个日志流的一组标签。
日志流是一组共享相同标签的日志。标签可帮助 Loki 在数据存储中查找日志流,因此拥有一组高质量的标签是高效执行查询的关键。
然后,日志数据被压缩并以块的形式存储在对象存储中,例如 Amazon Simple Storage Service (S3) 或 Google Cloud Storage (GCS),甚至为了开发或概念验证而存储在文件系统上。小索引和高度压缩的块简化了操作并显着降低了 Loki 的成本。
代理- 代理或客户端,例如与 Loki 一起分发的 Promtail 或 Grafana 代理。代理抓取日志,通过添加标签将日志转换为流,并通过 HTTP API 将流推送到 Loki。
Loki - 主服务器,负责摄取和存储日志以及处理查询。它可以部署在三种不同的配置中,有关详细信息,请参阅部署模式。
Grafana用于查询和显示日志数据。您还可以使用LogCLI或直接使用 Loki API从命令行查询日志
可扩展性- Loki 专为可扩展性而设计,可以从小到在 Raspberry Pi 上运行扩展到每天摄取 PB 数据。在其最常见的部署“简单可扩展模式”中,Loki 将请求解耦到单独的读取和写入路径中,以便您可以独立扩展它们,从而实现灵活的大规模安装,可以快速适应在任何给定时间满足您的工作负载。如果需要,Loki 的每个组件也可以作为微服务运行,旨在在 Kubernetes 中本地运行。
多租户- Loki 允许多个租户共享一个 Loki 实例。通过多租户,每个租户的数据和请求与其他租户完全隔离。通过在代理中分配租户 ID 来配置多租户。
第三方集成- 多个第三方代理(客户端)通过插件支持 Loki。这使您可以保留现有的可观察性设置,同时还将日志发送到 Loki。
高效存储- Loki 将日志数据存储在高度压缩的块中。同样,Loki 索引由于只索引标签集,因此明显小于其他日志聚合工具。压缩的块、更小的索引以及低成本对象存储的使用使得 Loki 的运行成本更低。
LogQL,Loki 的查询语言- LogQL是 Loki 的查询语言。已经熟悉 Prometheus 查询语言PromQL的用户会发现 LogQL 熟悉且灵活,可以针对日志生成查询。该语言还有助于从日志数据生成指标,这是一个远远超出日志聚合范围的强大功能。
警报- Loki 包含一个称为标尺的组件,它可以持续评估针对日志的查询,并根据结果执行操作。这使您可以监视日志中的异常或事件。Loki 与Prometheus Alertmanager或Grafana 中的警报管理器集成。
Grafana 集成- Loki 与 Grafana、Mimir 和 Tempo 集成,提供完整的可观察性堆栈以及日志、指标和跟踪之间的无缝关联。