Prometheus 入门
欢迎使用 Prometheus!Prometheus 是一个监控平台,通过抓取被监控目标上的 HTTP 指标端点来收集指标。本指南将向您展示如何安装、配置并使用 Prometheus 监控您的第一个资源。您将下载、安装并运行 Prometheus。您还将下载并安装导出器(exporter)——这是一种在主机和服务上暴露时间序列数据的工具。我们的第一个导出器将是 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 服务器暴露的时间序列数据。该任务包含一个静态配置的目标,即端口 9090 上的 localhost。Prometheus 期望目标在 /metrics 路径下提供指标。因此,此默认任务是通过以下 URL 进行抓取的:https://:9090/metrics 。
返回的时间序列数据将详细说明 Prometheus 服务器的状态和性能。
有关配置选项的完整规范,请参阅配置文档。
启动 Prometheus
要使用我们新创建的配置文件启动 Prometheus,请切换到包含 Prometheus 二进制文件的目录并运行
./prometheus --config.file=prometheus.yml
Prometheus 应该会启动。您还应该能够浏览到其自身的状态页面 https://:9090 。给它大约 30 秒的时间从其自身的 HTTP 指标端点收集数据。
您还可以通过导航到其自身的指标端点来验证 Prometheus 是否正在提供其自身的指标:https://:9090/metrics 。
使用表达式浏览器
让我们试着查看一些 Prometheus 收集到的关于自身的数据。要使用 Prometheus 内置的表达式浏览器,请导航到 https://:9090/query 并选择“Table”(表格)选项卡。
正如您从 https://: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://:9090/query 并使用“Graph”(图表)选项卡。
例如,输入以下表达式以绘制在自抓取的 Prometheus 中发生的返回状态代码 200 的每秒 HTTP 请求率
rate(promhttp_metric_handler_requests_total{code="200"}[1m])
您可以尝试图表范围参数和其他设置。
监控其他目标
仅收集来自 Prometheus 本身的指标并不能很好地代表 Prometheus 的功能。为了更好地了解 Prometheus 能做什么,我们建议探索关于其他导出器的文档。使用节点导出器监控 Linux 或 macOS 主机指标指南是一个很好的起点。
总结
在本指南中,您安装了 Prometheus,配置了一个用于监控资源的 Prometheus 实例,并了解了在 Prometheus 表达式浏览器中处理时间序列数据的一些基础知识。要继续学习 Prometheus,请查看概述,了解接下来要探索的方向。