欢迎使用 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']
示例配置文件中有三个配置块:global、rule_files 和 scrape_configs。
global 块控制 Prometheus 服务器的全局配置。我们有两个选项。第一个是 scrape_interval,它控制 Prometheus 抓取目标的频率。你可以为个别目标覆盖此设置。在本例中,全局设置为每 15 秒抓取一次。evaluation_interval 选项控制 Prometheus 评估规则的频率。Prometheus 使用规则来创建新的时间序列和生成告警。
rule_files 块指定我们希望 Prometheus 服务器加载的规则文件的位置。目前我们还没有规则。
最后一个块 scrape_configs 控制 Prometheus 监控哪些资源。由于 Prometheus 本身也作为 HTTP 端点暴露数据,因此它可以抓取和监控自身的健康状况。在默认配置中,有一个名为 prometheus 的作业,它抓取 Prometheus 服务器暴露的时间序列数据。该作业包含一个静态配置的目标,即 localhost 的 9090 端口。Prometheus 期望在目标的 /metrics 路径上获取指标。因此,这个默认作业是通过 URL http://localhost:9090/metrics 进行抓取的。
返回的时间序列数据将详细描述 Prometheus 服务器的状态和性能。
有关配置选项的完整规范,请参阅配置文档。
启动 Prometheus
要使用我们新创建的配置文件启动 Prometheus,请切换到包含 Prometheus 二进制文件的目录并运行:
./prometheus --config.file=prometheus.yml
Prometheus 应该会启动。你还应该能够在 http://localhost:9090 浏览其自身的状态页面。请给它大约 30 秒的时间从自己的 HTTP 指标端点收集数据。
你也可以通过访问其指标端点来验证 Prometheus 是否正在提供关于自身的指标:http://localhost:9090/metrics。
使用表达式浏览器
让我们尝试查看 Prometheus 收集到的关于自身的一些数据。要使用 Prometheus 内置的表达式浏览器,请导航到 http://localhost:9090/query 并选择 "Table" 标签页。
从 http://localhost: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)
有关表达式语言的更多信息,请参阅表达式语言文档。
使用图形界面
要绘制表达式图形,请导航到 http://localhost:9090/query 并使用 "Graph" 标签页。
例如,输入以下表达式来绘制 Prometheus 自身抓取中返回状态码 200 的每秒 HTTP 请求速率:
rate(promhttp_metric_handler_requests_total{code="200"}[1m])
你可以尝试调整图形范围参数和其他设置。
监控其他目标
仅从 Prometheus 自身收集指标并不能很好地展示 Prometheus 的能力。为了更好地了解 Prometheus 的功能,我们建议探索其他导出器的文档。使用 Node Exporter 监控 Linux 或 macOS 主机指标指南是一个很好的起点。
总结
在本指南中,你安装了 Prometheus,配置了一个 Prometheus 实例来监控资源,并学习了在 Prometheus 表达式浏览器中使用时间序列数据的一些基础知识。要继续学习 Prometheus,请查看概述以获取下一步探索的建议。