增强您的监控堆栈:将 InfluxDB 添加到 Prometheus 节点
作者:Jessica Wachtel / 开发者
2024 年 6 月 20 日
导航至
Prometheus 是无数开发者和组织首选的可观测性工具,这是有充分理由的。这款流行的开源工具无需任何前期成本,也不会导致供应商锁定。Prometheus 的快速上手使该技术非常适合希望快速启动云监控之旅的组织。
然而,将 Prometheus 用作可观测性指标的单一事实来源也存在缺点。Prometheus 构建为单节点使用。它面临的许多问题与所有单节点工具相关的挑战类似。尽管这些不是完全避免使用该软件的理由,但它们使 Prometheus 不适合作为任务关键型应用程序的唯一可观测性平台。但有一个解决方案。将 InfluxDB 添加到现有堆栈不会改变 Prometheus 的工作流程,并将增加企业级功能,例如数据持久性和高可用性。本文的其余部分将重点介绍 Prometheus 的功能以及它如何与 InfluxDB 协同工作。
Prometheus:基础知识
Prometheus 是一个基于指标的监控系统,可提供对连接系统和服务的洞察。它以时间序列数据的形式收集和存储指标,时间序列数据是任何带有时间戳存储的数据。这为用户提供了在特定时间点更好地理解指标的能力。Prometheus 提供了一个库和服务器组件的工具链,允许用户公开、收集和记录指标。
Prometheus 与几乎所有技术堆栈原生兼容。它通过公开的 HTTP 端点拉取指标来收集指标,该端点提供 Prometheus 可以理解的基于文本的指标传输格式。基于文本的指标格式促进了无缝的指标收集,即使在开发者无法使用专用客户端库来跟踪和公开指标时也是如此。一旦数据进入 Prometheus,开发者就可以深入了解他们的系统。Prometheus 在实时监控和短期存储方面表现出色。
在警报和仪表板方面,开源仪表板和警报软件 Grafana 是 Prometheus 的首选伴侣。Grafana 帮助技术和非技术人员发现数据洞察。Grafana 具有易于理解、开箱即用的现成仪表板,可以“立即工作”。Grafana 还为希望构建自定义仪表板的开发者提供模板。Grafana/Prometheus 连接非常受欢迎,Grafana 的 Prometheus 社区是其最成熟的社区之一。
Prometheus:挑战
Prometheus 是一个单节点系统。虽然这本身并没有什么问题,但任务关键型、企业级系统所需的许多功能都缺失了。任务关键型应用程序需要高可用性和数据持久性,而单节点无法提供这些。Prometheus 没有任何内置的数据复制机制,这些机制对于数据持久性是强制性的。这意味着如果任何现有机制或硬盘驱动器发生故障,用户将遇到数据丢失。
由于 Prometheus 无法保证高可用性,因此它不提供针对计划外停机的任何保证,并且偶尔会宕机。这也导致不可恢复的数据丢失。最后,由于其大小,Prometheus 无法很好地扩展或提供任何长期存储。但是,有一种简单的方法可以保护应用程序免受所有这些问题的影响。在 Prometheus 旁边添加一个专用时间序列数据库 InfluxDB 实例,并将单节点转换为高可用性、任务关键型、企业级可观测性系统。
InfluxDB:解决方案
InfluxDB 是一个持久、可扩展、企业级的时间序列数据库,可与 Prometheus 协同工作。开发者可以将 InfluxDB 添加到现有的 Prometheus 堆栈中,而无需更改 Prometheus 的运行方式,并体验将 Prometheus 用于任务关键型应用程序的所有好处。开箱即用的 InfluxDB 提供高可用性和数据持久性。InfluxDB 可以随着任何工作负载进行扩展,并且没有强制的保留策略。InfluxDB 将数据持久化为高度压缩的 Apache Parquet 文件,并将数据无限期地存储在低成本对象存储中。
InfluxDB 非常适合与 Prometheus 协同工作,因为它是少数几个可以支持 Prometheus 数据的数据库之一。Prometheus 数据以高基数而闻名。InfluxDB 3.0 支持无界基数,这意味着组织可以以他们喜欢的任何分辨率收集数据。通过将数据发送到 InfluxDB,Prometheus 可以获得基于洞察力的信息。由于 Parquet 是一个通用标准,因此 InfluxDB 是 Prometheus 与开放数据生态系统中可用的尖端数据分析工具之间的网关。
InfluxDB 提供自托管、本地部署以及单租户和多租户云产品,所有这些产品都与 Prometheus 兼容。以下是两种将 InfluxDB 添加到现有 Prometheus 堆栈的方法,而无需更改数据收集工作流程。
企业级堆栈
从同一来源同时将数据写入 Prometheus 和 InfluxDB 将缓解单节点架构引起的任何问题。InfluxDB 备份保证了高可用性、冗余和可扩展性。双写提供了在数据收集期间 Prometheus 遇到中断时继续数据收集的安全性。如果没有备份,任何中断都将导致永久性数据丢失。
这种架构允许开发者从 InfluxDB 查询仪表板,或继续使用 Prometheus 作为其指标的主要来源。InfluxDB 与 Grafana 兼容,因此有兴趣查询两个数据库的组织可以在单个窗格中执行此操作。如果开发者将 InfluxDB 用作备份,并且需要在 Prometheus 突然不可用时查看数据,则可以在紧急情况下打开 Grafana 连接。
备份 Prometheus 指标
InfluxDB 的 Telegraf 插件 提供了将 Prometheus 数据简单摄取到 InfluxDB 的功能。
与单独使用 Prometheus 相比,直接从 Prometheus 向 InfluxDB 发送数据可以提供更高的数据持久性和长期存储。但是,如果 Prometheus 突然不可用,它不会阻止数据丢失。开发者还可以将 Prometheus 指标发送到企业级堆栈构建中的 InfluxDB。
Prometheus 和 InfluxDB:更好地协同工作
将 InfluxDB 添加到 Prometheus 堆栈将消除 Prometheus 的粗糙边缘,而不会改变组织查看和分析数据的方式。有大量资源可以帮助您充分利用 InfluxDB 和 Prometheus。在此处了解有关 InfluxDB 的更多信息 here。在此处了解有关 InfluxDB 的 Prometheus Telegraf 插件的更多信息 here。