Prometheus

55479
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

Prometheus 入门指南


欢迎来到 Prometheus!Prometheus 是一个监控平台,它通过从监控 Target(采集目标)采集指标 HTTP 端点的数据来收集指标。本指南将向你展示如何安装、配置并使用 Prometheus 监控我们创建的第一个资源。你将下载、安装并运行 Prometheus。同时,你还将下载并安装 Exporter(Exporter 会暴露主机和服务上的时间序列数据)。我们的第一个 Exporter 是 Prometheus 本身,它提供了内存使用、垃圾回收等主机级别的大量指标。

下载 Prometheus

访问下载页面可以为你的平台下载最新的 Prometheus。随后你需要进行解压:

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

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

Terminal window
./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 向 Target 采集的频率。你可以给单个 Target 覆盖此设置。在样例中,我们将全局采集频率设置为每15秒采集一次。evaluation_interval选项控制 Prometheus 规则评估(rules evaluation)的频率。Prometheus 使用规则来创建新的时间序列,并生成告警(alert)。

rule_files指定了我们想要 Prometheus 服务器加载的规则文件位置。在本示例中,我们没有配置规则。

最后的scrape_configs块控制 Prometheus 要监控的资源。由于 Prometheus 自身也作为 HTTP 端点暴露数据,因此它可以采集自身的指标和监控自身的健康状况。在默认配置中,有一个单一的采集任务(job),称为prometheus,它采集 Prometheus 服务器暴露的时间序列数据。该任务包含一个静态配置的 Target ,即localhost上的9090端口。Prometheus 期望在 Target 的/metrics路径上能够采集到指标。最后,默认任务将通过URL:http://localhost:9090/metrics进行采集。

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

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

启动 Prometheus

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

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

此时,Prometheus 应该启动成功,你也应该能够浏览到有关 Prometheus 自身状态的页面:http://localhost:9090。它大约需要花费 30 秒钟的时间从自身的 HTTP 端点采集数据。

你还可以在浏览器打开http://localhost:9090/metrics验证 Prometheus 是否正在提供关于自身的指标。

使用表达式浏览器

让我们尝试查看 Prometheus 收集的有关自身的数据。为了使用 Prometheus 内置的表达式浏览器(expression browser),请打开http://localhost:9090/graph并在“Graph”标签页内选择“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/graph并点击“Graph”标签页。

例如,输入以下表达式来绘制采集的 Prometheus 每秒返回代码200的 HTTP 请求率:

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

你也可以试一下设置范围参数和其他设置。

监控其他 Target

仅从 Prometheus 收集指标并不能很好地体现 Prometheus 的强大能力。为了更好地了解 Prometheus 可以做些什么,我们建议你探索一下其他 Exporter 的文档。使用 Node Exporter 监控 Linux 或 macOS 主机指标教程是一个不错的开始。

总结

在这个指南中,我们安装了 Prometheus,配置了一个 Prometheus 实例来监控资源,并学习了如何在 Prometheus 的表达式浏览器中处理时间序列数据的一些基本知识。要继续学习 Prometheus,请查看概览以获取有关进一步学习的建议。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32