Prometheus 是一种开源监控和提醒工具集,随着 Kubernetes 的发展壮大,它的受欢迎程度也随之提高。Prometheus 最初在 SoundCloud 上构建而成,但它的根源可以追溯到 Google 的一个名为 Borgmon 的监控项目。
Prometheus 是使用基于拉取的模型从应用和基础设施收集指标的主要提议者。这意味着 Prometheus 会定期向您的目标发送请求,然后收集的指标会存储在时序数据库中。在自行管理的 Prometheus 实例中,您需要提供用于收集、存储和查询指标的基础设施。在 Prometheus 的托管式版本中,供应商会提供所有基础设施以及服务等级协议 (SLA) 以保障服务的正常运行时间。
Prometheus 提供了一种名为 PromQL 的查询语言,用于查询您的时序数据。有许多项目利用 PromQL(包括 Grafana 和 Alertmanager)帮助完成分析和运营任务,例如数据可视化、创建提醒和扩缩监控基础设施。
Prometheus 用于从您的应用和基础设施收集指标。这些指标可用于跟踪系统的运行状况、发现潜在问题和排查问题。
以下是使用 Prometheus 的一些具体优势:
Prometheus 使用拉取模型来收集指标,这意味着 Prometheus 服务器会轮询它正在监控的系统或应用来获取指标。这与许多其他监控系统使用的推送模型不同,即需要您修改应用代码来定期向服务器发送指标。
此拉取模型不要求被监控的系统或应用知道 Prometheus 服务器,因此无需更改应用代码便可将其添加到监控系统中。拉取模型仅在需要指标时才收集它们,因此 Prometheus 不会收集未使用的指标,以免浪费资源。
此外,Prometheus 还可以通过以下方式自动发现数据源:
Prometheus 发现资源后,会定期从资源中爬取指标。然后,这些指标会存储在 Prometheus 的数据库中,您可以在该数据库中查询和直观呈现这些指标。
PromQL 是一种强大且灵活的查询语言,可用于查询 Prometheus 收集的指标(这些指标可用于创建临时图表、表和提醒)。
PromQL 使用功能性查询语言,让用户能够实时选择和汇总时序数据。表达式的结果可以显示为图表,显示为表格数据(在 Prometheus 的表达式浏览器中),或者供外部系统通过 HTTP API 使用。
以下是 Prometheus 和 PromQL 的一些用途:
以下是 PromQL 查询的一些示例:
要获取特定应用每秒的平均 CPU 使用率,您可以使用以下查询:
如需获取向特定端点发出的请求数,您可以使用以下查询:
如需获取从特定端点返回的错误总数,您可以使用以下查询: