初识 Prometheus

欢迎来到 Prometheus!Prometheus 是一个通过从监控目标上采集 HTTP 数据收集指标数据的监控平台。本指南将向您展示如果安装、配置 Prometheus,并使用 Prometheus 监控第一个资源对象。您将下载、安装并运行 Prometheus。您也可以下载并安装一个可在主机和服务上显示时间序列数据的 exporter 工具。我们的第一个 exporter 将是 Prometheus 本身,它提供有关内存使用,垃圾回收等各种主机级别的指标。

下载 Prometheus

下载适用于您的平台的最新版本的 Prometheus,然后解压:

  1. tar xvfz prometheus-*.tar.gz
  2. cd prometheus-*

Prometheus server 是一个名为prometheus的二进制文件(在 Windows 为prometheus.exe)。我们可以运行二进制文件,并通过传入--help参数来查看其帮助

  1. ./prometheus --help
  2. usage: prometheus [<flags>]
  3. The Prometheus monitoring server
  4. . . .

在启动 Prometheus 之前,我们先来配置它。

配置 Prometheus

Prometheus 的配置为 YAML。Prometheus 的下载文件中包含一个名为prometheus.yml的示例配置,我们可以根据它来开始配置。

我们删除了示例配置中的大多数注释,使其更加简洁(注释是以#开头的行 )

  1. global:
  2. scrape_interval: 15s
  3. evaluation_interval: 15s
  4. rule_files:
  5. # - "first.rules"
  6. # - "second.rules"
  7. scrape_configs:
  8. - job_name: prometheus
  9. static_configs:
  10. - targets: ['localhost:9090']

示例配置文件中包含三个配置块:globalrule_filesscrape_configs

global配置块控制 Prometheus server 的全局配置。目前有两个参数。scrape_interval参数控制 Prometheus 多久采集一次 targets。您可以为单个 targets 重新配置此参数。在示例中,全局配置为 15 秒采集一次。evaluation_interval 参数控制 Prometheus 多久评估一次 rules。Prometheus 使用 rules 来创建新的时间序列并生成报警。

rule_files配置块指定我们希望 Prometheus server 加载规则的文件位置。目前,我们没有任何规则。

scrape_configs配置块控制 Prometheus 监控哪些资源。由于 Prometheus 将有关自身的数据暴露为 HTTP 端点,因此它可以采集并监控其自身的运行状况。在默认配置中,只有一个名为prometheus的作业,它会采集 Prometheus 服务暴露的时间序列数据。该作业包含一个单独的静态配置的 target,为localhost9090端口。Prometheus 希望数据 指标可以通过 target 的/metrics路径可以访问。所以这个默认作业通过http://localhost:9090/metrics进行指标数据采集。

返回的时间序列数据将详细说明 Prometheus server 的状态和性能。

有关配置选项的完整说明,请参阅配置文档

启动 Prometheus

要使用我们新创建的配置文件启动 Prometheus,请切换到包含 Prometheus 二进制文件的目录并运行:

  1. ./prometheus --config.file=prometheus.yml

Prometheus 应该能够启动成功。您应该能够在http://localhost:9090上看到有关其自身状态的页面。它需要大约 30 秒的时间从自己的 HTTP 指标数据端点收集有关自身的数据。

你也可以通过访问 Prometheus 自身的指标数据端点http://localhost:9090/metrics来验证 Prometheus 是否正在提供有关其自身数据的指标数据。

使用表达式浏览器

让我们尝试查看 Prometheus 收集的有关自身的一些数据。要使用 Prometheus 的内置表达式浏览器,请导航至http://localhost:9090/graph,然后在 “Graph” 选项卡中选择 “Console” 视图。

正如您可以从http://localhost:9090/metrics获取的数据一样,Prometheus 暴露一个称为promhttp_metric_handler_requests_total(Prometheus 已处理/metrics的请求总数)的指标数据。将其输入到表达式控制台中:

  1. promhttp_metric_handler_requests_total

它应该返回多个不同的时间序列(以及每个时间序列的最新值),所有时间序列的 metric 名称均为 promhttp_metric_handler_requests_total,但具有不同的标签。这些标签指定了不同的请求状态。

如果我们只对 HTTP 状态码为200的请求感兴趣,则可以使用此查询来检索该信息:

  1. promhttp_metric_handler_requests_total{code="200"}

要计算返回的时间序列数,您可以查询

  1. count(promhttp_metric_handler_requests_total)

有关表达语言的更多信息,请参见表达语言文档

使用绘图界面

要使用绘制图形表达式,请导航至http://localhost:9090/graph并使用 “Graph” 选项卡。

例如,输入以下表达式以图形化显示从自身采集的返回状态代码为 200 的 HTTP 请求的速率:

  1. rate(promhttp_metric_handler_requests_total{code="200"}[1m])

您可以尝试其它参数和设置使用图形页面

监控其它 target

仅从 Prometheus 收集指标并不能很好地说明 Prometheus 的功能。为了更好地了解 Prometheus 可以做什么,我们建议您浏览有关其它 exporter 的文档。 使用 node_exporter 监控 Linux 或 macOS 是一个不错的选择。

小结

在本指南中,您安装了 Prometheus,配置了 Prometheus 实例以监视资源,并了解了在 Prometheus 表达式浏览器中使用时间序列数据的一些基础知识。 要继续学习 Prometheus,请查看概述以获取有关接下来要探索的内容的一些想法。