Prometheus 入门

欢迎使用 Prometheus! Prometheus 是一个监控平台,它通过抓取这些目标上的指标 HTTP 端点,从受监控的目标收集指标。本指南将向您展示如何使用 Prometheus 安装、配置和监控我们的第一个资源。您将下载、安装和运行 Prometheus。您还将下载并安装一个导出器,即在主机和服务上暴露时间序列数据的工具。我们的第一个导出器将是 Prometheus 本身,它提供了关于内存使用、垃圾回收等的大量主机级指标。

下载 Prometheus

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

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

Prometheus 服务器是一个名为 prometheus 的单个二进制文件(在 Microsoft Windows 上为 prometheus.exe)。我们可以运行该二进制文件并通过传递 --help 标志来查看其选项的帮助。

./prometheus --help
usage: prometheus [<flags>]

The Prometheus monitoring server

. . .

在启动 Prometheus 之前,让我们对其进行配置。

配置 Prometheus

Prometheus 配置是 YAML 格式。Prometheus 下载包中包含一个名为 prometheus.yml 的示例配置文件,这是一个不错的入门起点。

我们删除了示例文件中的大部分注释,使其更简洁(注释是以 # 开头的行)。

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

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

global 块控制 Prometheus 服务器的全局配置。我们有两个选项存在。第一个选项 scrape_interval 控制 Prometheus 将抓取目标的频率。您可以为各个目标覆盖此设置。在本例中,全局设置是每 15 秒抓取一次。evaluation_interval 选项控制 Prometheus 将评估规则的频率。Prometheus 使用规则来创建新的时间序列并生成告警。

rule_files 块指定我们希望 Prometheus 服务器加载的任何规则的位置。目前我们没有任何规则。

最后一个块 scrape_configs 控制 Prometheus 监控哪些资源。由于 Prometheus 也将其自身的数据作为 HTTP 端点暴露,因此它可以抓取和监控自身的运行状况。在默认配置中,有一个名为 prometheus 的作业,它抓取 Prometheus 服务器暴露的时间序列数据。该作业包含一个静态配置的目标,即端口 9090 上的 localhost。Prometheus 希望指标在目标的 /metrics 路径上可用。因此,此默认作业是通过 URL 抓取的:https://127.0.0.1:9090/metrics

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

有关配置选项的完整规范,请参阅配置文档

启动 Prometheus

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

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

Prometheus 应该会启动。您还应该能够在 https://127.0.0.1:9090 浏览关于它自身的状态页面。请给它大约 30 秒的时间从其自身的 HTTP 指标端点收集关于它自身的数据。

您还可以通过导航到其自身的指标端点来验证 Prometheus 是否正在提供关于它自身的指标:https://127.0.0.1:9090/metrics

使用表达式浏览器

让我们尝试查看 Prometheus 收集的一些关于它自身的数据。要使用 Prometheus 的内置表达式浏览器,请导航到 https://127.0.0.1:9090/graph,并在“Graph”选项卡中选择“Table”视图。

正如您可以从 https://127.0.0.1:9090/metrics 中收集到的那样,Prometheus 导出关于它自身的一个指标称为 promhttp_metric_handler_requests_total(Prometheus 服务器已服务的 /metrics 请求的总数)。继续将其输入到表达式控制台中

promhttp_metric_handler_requests_total

这将返回多个不同的时间序列(以及每个时间序列记录的最新值),所有时间序列都具有指标名称 promhttp_metric_handler_requests_total,但具有不同的标签。这些标签指定不同的请求状态。

如果我们只对导致 HTTP 代码 200 的请求感兴趣,我们可以使用此查询来检索该信息

promhttp_metric_handler_requests_total{code="200"}

要计算返回的时间序列的数量,您可以编写

count(promhttp_metric_handler_requests_total)

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

使用图形界面

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

例如,输入以下表达式以绘制在自我抓取的 Prometheus 中发生的每秒返回状态代码 200 的 HTTP 请求速率

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

您可以尝试使用图形范围参数和其他设置。

监控其他目标

仅从 Prometheus 收集指标并不能很好地代表 Prometheus 的功能。要更好地了解 Prometheus 可以做什么,我们建议您浏览关于其他导出器的文档。使用节点导出器监控 Linux 或 macOS 主机指标指南是一个不错的起点。

总结

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

本文档是 开源的。请通过提交问题或拉取请求来帮助改进它。