Prometheus 是什么?

Prometheus 是一种开源监控和提醒工具集,随着 Kubernetes 的发展壮大,它的受欢迎程度也随之提高。Prometheus 最初在 SoundCloud 上构建而成,但它的根源可以追溯到 Google 的一个名为 Borgmon 的监控项目。

Prometheus 是使用基于拉取的模型从应用和基础设施收集指标的主要提议者。这意味着 Prometheus 会定期向您的目标发送请求,然后收集的指标会存储在时序数据库中。在自行管理的 Prometheus 实例中,您需要提供用于收集、存储和查询指标的基础设施。在 Prometheus 的托管式版本中,供应商会提供所有基础设施以及服务等级协议 (SLA) 以保障服务的正常运行时间。

Prometheus 提供了一种名为 PromQL 的查询语言,用于查询您的时序数据。有许多项目利用 PromQL(包括 Grafana 和 Alertmanager)帮助完成分析和运营任务,例如数据可视化、创建提醒和扩缩监控基础设施。  

Prometheus 的用途?

Prometheus 用于从您的应用和基础设施收集指标。这些指标可用于跟踪系统的运行状况、发现潜在问题和排查问题。

Prometheus 有哪些优势?

以下是使用 Prometheus 的一些具体优势:

  • 开放性:Prometheus 是开源的,是 Cloud Native Computing Foundation (CNCF) 的一部分,可免费使用。
  • 可靠性:Prometheus 非常可靠,在一些全球最大公司的生产环境中拥有良好的表现。
  • 社区支持:Prometheus 拥有一个庞大而活跃的社区,可提供支持、文档和改进。它还有许多与其他工具的集成,让您可以监控您的系统和基础设施并直观呈现您的数据。
  • 与 Kubernetes 天生一对:作为 Kubernetes 实际上的默认监控解决方案,大多数第三方应用都已针对 Prometheus 指标进行了插桩。
  • 随时随地使用:虽然大多数情况下在 Kubernetes 部署中采用,但 Prometheus 也可以用于虚拟机和某些无服务器环境。

Prometheus 的组件有哪些?

  • Prometheus 服务器:Prometheus 监控系统的核心组件。它存储时序数据,并公开用于查询该数据并发出提醒的 HTTP API。
  • Prometheus 导出器:从各种系统收集指标并将其公开给 Prometheus 的软件代理。
  • Alertmanager:可接收来自 Prometheus 的提醒并将其路由到相应人员或系统的服务。
  • Prometheus 联合:可让多个 Prometheus 服务器共享数据的功能。
  • Prometheus Pushgateway:可让服务将指标推送到 Prometheus 而不必爬取指标的组件。此功能最适合短期作业。
  • Prometheus 黑箱导出器:可用于监控 HTTP、TCP 和 DNS 端点可用性的服务。

Prometheus 如何收集指标?

Prometheus 使用拉取模型来收集指标,这意味着 Prometheus 服务器会轮询它正在监控的系统或应用来获取指标。这与许多其他监控系统使用的推送模型不同,即需要您修改应用代码来定期向服务器发送指标。

此拉取模型不要求被监控的系统或应用知道 Prometheus 服务器,因此无需更改应用代码便可将其添加到监控系统中。拉取模型仅在需要指标时才收集它们,因此 Prometheus 不会收集未使用的指标,以免浪费资源。

此外,Prometheus 还可以通过以下方式自动发现数据源:

  • 服务发现:Prometheus 可以使用各种服务发现机制来查找正在运行公开指标的服务的主机。例如,Prometheus 可以使用 Kubernetes API 来发现运行 Prometheus 导出器的 Pod。
  • 静态配置:您也可以静态配置 Prometheus 以爬取特定资源。这对于无法通过其他方式发现的资源非常有用。
  • 文件发现:Prometheus 还可以通过查找包含指标的文件来发现资源。例如,Prometheus 可以发现由 collectd 或 Nagios 生成的文件。

Prometheus 发现资源后,会定期从资源中爬取指标。然后,这些指标会存储在 Prometheus 的数据库中,您可以在该数据库中查询和直观呈现这些指标。

Prometheus 的四种指标类型是什么?

  • 计数器跟踪只能增加的累计值。它们通常用于跟踪处理的请求、错误和传输的字节数等。
  • 采样平均值 (Gauge) 跟踪可增加或减少的比率,通常测量每秒速率。它们通常用于跟踪内存用量、CPU 用量和磁盘可用空间等。
  • 直方图跟踪值的分布情况。它们通常用于跟踪请求延迟时间和响应大小等。
  • 摘要与直方图类似,但它们还跟踪分位数。因此,它们对于识别离群值和了解值的整体分布更有用。

什么是 PromQL?

PromQL 是一种强大且灵活的查询语言,可用于查询 Prometheus 收集的指标(这些指标可用于创建临时图表、表和提醒)。

PromQL 使用功能性查询语言,让用户能够实时选择和汇总时序数据。表达式的结果可以显示为图表,显示为表格数据(在 Prometheus 的表达式浏览器中),或者供外部系统通过 HTTP API 使用。

以下是 Prometheus 和 PromQL 的一些用途:

  • 监控应用和基础设施的运行状况:Prometheus 会收集有关潜在问题的指标和提醒
  • 识别潜在问题:Prometheus 将当前指标与历史数据进行比较,并提醒任何重大偏差
  • 问题排查:Prometheus 提供系统状态的详细视图,使用户可以深入了解特定指标和资源,以确定问题的根本原因
  • 直观呈现您的数据:Prometheus 会使用其 PromQL 查询语言查询其时序数据,然后以各种格式显示结果,包括图表、表格和提醒
  • 创建提醒:Prometheus 会使用其 PromQL 查询语言查询其时序数据,然后在结果满足特定条件时发送通知
  • 在第三方工具中直观呈现:任何理解 Prometheus Query API 的前端(如 Grafana 或 Kiali)都可以查询 Prometheus 服务器并显示数据

PromQL 查询示例

以下是 PromQL 查询的一些示例:

每秒平均 CPU 使用率

要获取特定应用每秒的平均 CPU 使用率,您可以使用以下查询:

每秒 PromQL CPU 使用率查询

端点请求数

如需获取向特定端点发出的请求数,您可以使用以下查询:

关于端点请求数的 PromQL 查询

端点请求错误数

如需获取从特定端点返回的错误总数,您可以使用以下查询:

PromQL 端点请求错误查询示例

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。
与 Google Cloud 销售专员联系,详细讨论您的独特挑战。
Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
控制台