现代化日志解决方案 PLG (Promtail +Loki + Grafana )

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 综合使用 Promtail、Loki 和 Grafana 可以实现从应用程序生成的日志数据的收集、存储、查询和可视化,有助于更好地理解应用程序的行为,识别问题,以及监视性能和可用性。这一组工具通常在现代DevOps和云原生环境中得到广泛使用

@[toc]

解决方案 PLG概述

Promtail、Loki 和 Grafana 是一组开源工具,通常一起使用,用于帮助监控、收集、存储和可视化日志和指标数据的现代化日志解决方案。

Promtail:

介绍:Promtail 是 Grafana Labs 开发的一个用于日志收集的开源代理。它特别与 Prometheus 和 Loki 集成得非常好,以帮助用户从各种应用程序和服务中轻松收集和标准化日志数据。
功能:Promtail 会监视目标日志文件、目录或系统日志流,并将其发送到 Loki 数据源。它还支持标签化日志以使其更易于查询,类似于 Prometheus 的标签数据模型。
用途:Promtail 可以与容器化环境、Kubernetes 集群和传统主机一起使用,以便实时收集和传输日志数据。

Loki:

介绍:Grafana Loki 是一个开源的日志聚合和存储系统,旨在提供高效的日志存储和查询。它专门用于处理大规模的分布式日志数据。
功能:Loki 提供了一个标签索引系统,类似于 Prometheus,以便高效地存储和查询日志。它支持 LogQL 查询语言,允许用户执行强大的查询以检索和分析日志数据。
用途:Loki 通常与Promtail一起使用,以收集、存储和查询分散的日志数据。它还与 Grafana 集成,使用户可以创建仪表板和可视化,以展示日志数据和监控指标的关系。

Grafana:

介绍:Grafana 是一款开源的数据可视化和监控工具,用于创建仪表板和可视化不同数据源的指标数据和日志数据。

功能:Grafana 支持多种数据源,包括 Prometheus、Loki、Elasticsearch、InfluxDB 等。它允许用户创建交互式仪表板,图表、警报和面板,以实时监控应用程序性能、系统指标和日志数据。

用途:Grafana 通常用于可视化监控指标数据和日志数据,以便在一个集中的仪表板中跟踪应用程序性能和健康状态。它与 Prometheus、Loki 和其他数据源集成得很好,为用户提供一个综合的监控和可视化解决方案。

综合使用 Promtail、Loki 和 Grafana 可以实现从应用程序生成的日志数据的收集、存储、查询和可视化,有助于更好地理解应用程序的行为,识别问题,以及监视性能和可用性。这一组工具通常在现代DevOps和云原生环境中得到广泛使用。


Loki overview

Loki 是一个受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。Loki 与 Prometheus 的不同之处在于,它关注日志而不是指标,并通过推送而不是拉取来收集日志。

Loki 的设计非常经济高效且具有高度可扩展性。与其他日志系统不同,Loki 不会对日志内容进行索引,而只会对有关日志的元数据进行索引,作为每个日志流的一组标签。

日志流是一组共享相同标签的日志。标签可帮助 Loki 在数据存储中查找日志流,因此拥有一组高质量的标签是高效执行查询的关键。

然后,日志数据被压缩并以块的形式存储在对象存储中,例如 Amazon Simple Storage Service (S3) 或 Google Cloud Storage (GCS),甚至为了开发或概念验证而存储在文件系统上小索引和高度压缩的块简化了操作并显着降低了 Loki 的成本


3个组件 (Promtail + Loki + Grafana)

  • 代理- 代理或客户端,例如与 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 集成,提供完整的可观察性堆栈以及日志、指标和跟踪之间的无缝关联。

相关文章
|
3月前
|
存储 Prometheus Cloud Native
「译文」Grafana Loki 简要指南:关于标签您需要了解的一切
「译文」Grafana Loki 简要指南:关于标签您需要了解的一切
|
3月前
|
JSON Prometheus Cloud Native
Grafana 系列 - 统一展示 -8-ElasticSearch 日志快速搜索仪表板
Grafana 系列 - 统一展示 -8-ElasticSearch 日志快速搜索仪表板
|
1月前
|
存储 监控 数据可视化
Nginx+Promtail+Loki+Grafana Nginx日志展示
通过这些步骤,你可以将Nginx的日志收集、存储、查询和可视化整合在一起。这样,你就可以在Grafana中轻松地创建和展示Nginx日志的图表和面板。
33 3
|
3月前
|
存储 测试技术 索引
「译文」Loki 简明指南:如何处理失序和较旧的日志
「译文」Loki 简明指南:如何处理失序和较旧的日志
|
3月前
|
存储 Prometheus Cloud Native
「译文」开源日志监控:Grafana Loki 简要指南
「译文」开源日志监控:Grafana Loki 简要指南
|
3月前
|
JSON Prometheus Cloud Native
Grafana 系列 -Loki- 基于日志实现告警
Grafana 系列 -Loki- 基于日志实现告警
|
23天前
|
安全 Linux 网络安全
/var/log/secure日志详解
Linux系统的 `/var/log/secure` 文件记录安全相关消息,包括身份验证和授权尝试。它涵盖用户登录(成功或失败)、`sudo` 使用、账户锁定解锁及其他安全事件和PAM错误。例如,SSH登录成功会显示"Accepted password",失败则显示"Failed password"。查看此文件可使用 `tail -f /var/log/secure`,但通常只有root用户有权访问。
69 4
|
25天前
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
116757 10
|
2天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
2天前
|
运维 监控 Go
Golang深入浅出之-Go语言中的日志记录:log与logrus库
【4月更文挑战第27天】本文比较了Go语言中标准库`log`与第三方库`logrus`的日志功能。`log`简单但不支持日志级别配置和多样化格式,而`logrus`提供更丰富的功能,如日志级别控制、自定义格式和钩子。文章指出了使用`logrus`时可能遇到的问题,如全局logger滥用、日志级别设置不当和过度依赖字段,并给出了避免错误的建议,强调理解日志级别、合理利用结构化日志、模块化日志管理和定期审查日志配置的重要性。通过这些实践,开发者能提高应用监控和故障排查能力。
8 1