Prometheus 连接器

Prometheus 连接器允许在 Presto 中将 Prometheus.metrics 作为表格读取。

查询 Prometheus 的机制是使用 Prometheus HTTP API。具体而言,所有查询都将解析为 Prometheus 即时查询,其形式类似于: https://127.0.0.1:9090/api/v1/query?query=up[21d]&time=1568229904.000” 在这种情况下,up 指标取自 Presto 查询表名。 21d 是查询的持续时间。Prometheus time 值对应于 timestamp 字段。Presto 查询从其使用 timestamp 字段转换为持续时间和时间值(根据需要)。Presto 分片通过将查询范围划分为尝试相等的块来生成。

配置

创建 etc/catalog/prometheus.properties 以将 Prometheus 连接器安装为 prometheus 目录,根据需要替换属性

connector.name=prometheus
prometheus.uri=https://127.0.0.1:9090
prometheus.query-chunk-duration=1d
prometheus.max-query-duration=1h
prometheus.cache-ttl=30s
prometheus.bearer-token-file=/path/to/bearer/token/file

配置属性

提供以下配置属性

属性名称

描述

prometheus.uri

Prometheus 协调器主机地址

prometheus.query-chunk-duration

对 Prometheus 的每个查询的持续时间

prometheus.max-query-duration

对 Prometheus 的整体查询宽度,将被划分为 query-chunk-duration 查询

prometheus.cache-ttl

配置值缓存的时间长度

prometheus.bearer-token-file

保存访问 Prometheus 的 Bearer 令牌的文件

避免耗尽 Presto 可用堆内存

prometheus.query-chunk-durationprometheus.max-query-duration 是为了防止 Presto 从 Prometheus 获取过多数据而设置的值。 prometheus.max-query-duration 是特别感兴趣的项目。

在运行了一段时间的 Prometheus 实例上,并且取决于数据保留设置,21d 可能太长了。也许 1h 可能是更合理的设置。在 1h 的情况下,将 prometheus.query-chunk-duration 设置为 10m 可能是有用的,将查询窗口划分为 6 个查询,每个查询都可以在 Presto 分片中处理。

主要是查询发布者可以通过利用 WHERE 子句对 timestamp 的限制来限制 Prometheus 返回的数据量,设置一个上限和下限来定义一个相对较小的窗口。例如

SELECT * FROM prometheus.default.up WHERE timestamp > (NOW() - INTERVAL '10' second);

如果查询不包含 WHERE 子句限制,则这些配置设置旨在防止无限查询。

Bearer 令牌身份验证

Prometheus 可以设置为要求每个查询都带有 Authorization 标头。 prometheus.bearer-token-file 中的值允许从配置的文件中读取 Bearer 令牌。此文件是可选的,除非您的 Prometheus 设置要求它,否则不需要。