Prometheus 系统监控工具

强大的性能和简单的集成,由 InfluxData 构建的开源数据连接器 Telegraf 提供支持。

50 亿 +

Telegraf 下载量

#1

时序数据库
来源:DB Engines

10 亿 +

InfluxDB 下载量

2,800+

贡献者

目录

强大的性能,无限的扩展能力

收集、组织和处理海量高速数据。当您将任何数据视为时序数据时,它都更有价值。InfluxDB 是排名第一的时序平台,旨在与 Telegraf 一起扩展。

查看入门方法

什么是 Prometheus?

Prometheus 是一款开源系统监控和警报工具包,最初由 SoundCloud 的前 Google 员工构建,他们希望监控服务器和应用程序的指标。Prometheus 于 2016 年加入 云原生计算基金会,成为继 Kubernetes 之后的第二个托管项目。Prometheus 是一种独立于任何公司提供的开源产品,并且作为 Kubernetes 指标的监控解决方案非常受欢迎。Prometheus 与 InfluxDB 一样,使用 Go 语言编写。

Prometheus 如何作为监控解决方案工作?

Prometheus 网站为 Prometheus 监控解决方案和底层时序基础设施提供了 出色的概述。基本上,要使用 Prometheus 监控您的服务,您的服务需要公开一个 Prometheus 端点。此端点是一个 HTTP 接口,用于公开指标列表和指标的当前值。然后,Prometheus 服务器轮询服务上的指标接口并存储数据。此架构被称为基于轮询的监控,或拉取式监控

对于 Kubernetes 环境,服务发现集成良好,Prometheus 将轮询指标端点并将指标收集到 Prometheus 服务器中,以进行监控和警报。拉取方法很好,因为它不需要安装代理来收集指标,尽管您仍然需要部署“exporter”来公开您正在从中收集指标的系统的指标。

推送与拉取式指标收集和监控

在拉取式方法中,监控代理定期轮询被监控的目标,并根据该数据发出警报。在推送方法中,遥测和指标被推送到监控代理(或更频繁地推送到 时序数据库),并且监控通过代理或其他查询数据库的进程完成。在检测您自己的应用程序代码时,需要在推送和拉取之间做出选择。您可以将指标通过客户端库发送到另一个服务,也可以通过某些网络可寻址目标(例如 HTTP API)使它们可供其他人使用。

形式化拉取方法的真正优势,正如 Prometheus 所做的那样,在于它为各种服务和应用程序提供了一种标准语言,以标准格式公开目标,从中拉取指标数据。Prometheus 已成为 Kubernetes 拉取式指标的标准语言。

拉取式方法的主要缺点是它们不适用于事件驱动的时序(例如对 API 的单个请求,或基础设施中的事件)。另一个缺点是所有指标端点都必须可从服务器访问,这意味着需要更精细的安全网络配置。对于大规模部署或需要集群来实现高可用性的情况,这也可能成为问题。

仅对于 Kubernetes,监控拉取式指标收集可能就足够了,但对于分布式环境,尤其是在物联网架构中,推送式监控更可取。在大多数环境中,通常需要监控指标(规则的时间间隔)和事件(不规则的时间间隔)并发出警报,因此最好同时支持推送和拉取。这是 Prometheus 目前的一个限制,但这正是 InfluxData 的 TelegrafKapacitor 可以用来增强 Prometheus 环境的地方。

增强 Prometheus 以支持使用推送和拉取进行监控

Kapacitor 可以读取所有按照 Prometheus 标准生成的指标。这意味着任何与 Prometheus 配合使用的服务发现目标都将与 Kapacitor 配合使用。此外,借助 InfluxDB 对 Prometheus 远程读取和写入协议的本机支持,Prometheus 可以用作收集器,并让 InfluxDB 成为其长期、高可用性、可扩展的数据存储。

使用 Kapacitor 监控 Prometheus 抓取目标可以实现进一步的流式分析、高级异常检测或添加自定义逻辑的能力,这些逻辑甚至在流式数据存储在底层数据存储之前就被触发。

Prometheus 服务器架构

Prometheus 的核心价值和主要设计目标之一是简单性。为了实现这一目标,Prometheus 专注于单节点架构,并增强服务器以在此单节点基础设施中实现越来越高的性能。Prometheus 在其路线图中可能没有集群,因为这会增加额外的复杂性,并且这与其简单性的设计目标背道而驰。

增强 Prometheus 以实现高可用性

InfluxData 的 InfluxDB 具有类似的单节点方法和一些类似的设计目标,但 InfluxDB Enterprise 包括集群,以支持需要高可用性的环境。由于 InfluxDB Enterprise 包括 Kapacitor 和 Telegraf,因此构建 Prometheus 端点的所有投资都得以保留,但数据可以存储在集群 InfluxDB Enterprise 部署中的多个节点上。InfluxData 正在开发一种 新的查询语言,该语言将支持 PromQL,以进一步减少编写查询到两个数据存储的麻烦。

结论

在需要拉取式监控和指标警报的 Kubernetes 环境中使用 Prometheus 是一个不错的选择。对于需要监控指标和事件或需要高可用性的环境,请考虑增强您的架构以包含 InfluxData 的 InfluxDB Enterprise 或 InfluxDB 和 Kapacitor。InfluxData 将继续增强对 Prometheus 的支持。要了解最新进展,请在 GitHub 上关注该项目。

更多资源
下载 Telegraf Prometheus 输入和输出插件

Telegraf 输入插件   Telegraf 输出插件

强大的性能,无限的扩展能力

收集、组织和处理海量高速数据。当您将任何数据视为时序数据时,它都更有价值。InfluxDB 是排名第一的时序平台,旨在与 Telegraf 一起扩展。

查看入门方法

相关集成