InfluxDB中的Prometheus端点支持
Prometheus 远程读取和写入 API 支持
注意:Prometheus API稳定性保证指出,远程读取和远程写入端点被列为实验性特性或可能会发生变化,因此在2.x中被视为不稳定。任何破坏性更改将包含在InfluxDB发布说明中。
InfluxDB对Prometheus远程读取和写入API的支持增加了以下HTTP端点到InfluxDB:
/api/v1/prom/read/api/v1/prom/write
此外,还有一个 /metrics 端点 被配置为以 Prometheus 指标格式生成默认的 Go 指标。
创建目标数据库
在您的 InfluxDB 实例中创建一个数据库,以存储来自 Prometheus 发送的数据。
在下面提供的示例中,prometheus 被用作数据库名称,但
您可以使用您喜欢的任何数据库名称。
CREATE DATABASE "prometheus"
配置
为了启用与InfluxDB的Prometheus远程读取和写入API,请在Prometheus配置文件中添加以下设置的URL值:
这些 URL 必须能从正在运行的 Prometheus 服务器解析,并使用 InfluxDB 正在运行的端口(默认是8086)。还需使用db=查询参数包含数据库名称。
示例:Prometheus 配置文件中的端点
remote_write:
- url: "http://localhost:8086/api/v1/prom/write?db=prometheus"
remote_read:
- url: "http://localhost:8086/api/v1/prom/read?db=prometheus"
使用身份验证读取和写入URLs
如果 在 InfluxDB 上启用了认证,请使用 u= 和 p= 查询参数分别传递具有读写权限的 InfluxDB 用户的 username 和 password。
启用身份验证的端点示例**_
remote_write:
- url: "http://localhost:8086/api/v1/prom/write?db=prometheus&u=username&p=password"
remote_read:
- url: "http://localhost:8086/api/v1/prom/read?db=prometheus&u=username&p=password"
在您的Prometheus配置文件中包含明文密码并不是理想的做法。不幸的是,环境变量和秘密在Prometheus配置文件中不被支持。有关更多信息,请参见此Prometheus问题:
Prometheus指标在InfluxDB中的解析方式
当Prometheus数据被导入InfluxDB时,进行以下转换以匹配InfluxDB数据结构:
- Prometheus 的指标名称成为 InfluxDB 测量 名称。
- Prometheus 示例 (value) 通过
value字段键变成 InfluxDB 字段。它始终是一个浮点数。 - Prometheus 标签变为 InfluxDB 标签。
- 所有
# HELP和# TYPE行都会被忽略。 - [v1.8.6 及以后版本] Prometheus 远程写入端点丢弃不支持的 Prometheus 值 (
NaN,-Inf, 和+Inf) 而不是拒绝整个批次。- 如果 启用了写入追踪日志 (
[http] write-tracing = true),则会记录丢弃值的摘要。 - 如果一批值包含随后被丢弃的值,则返回 HTTP 状态码
204。
- 如果 启用了写入追踪日志 (
示例:将Prometheus解析到InfluxDB
# Prometheus metric
example_metric{queue="0:http://example:8086/api/v1/prom/write?db=prometheus",le="0.005"} 308
# Same metric parsed into InfluxDB
measurement
example_metric
tags
queue = "0:http://example:8086/api/v1/prom/write?db=prometheus"
le = "0.005"
job = "prometheus"
instance = "localhost:9090"
__name__ = "example_metric"
fields
value = 308
在 InfluxDB v1.5 及更早版本中,所有 Prometheus 数据都进入一个名为
_的单一测量,Prometheus 测量名称存储在__name__标签中。 在 InfluxDB v1.6 或更高版本中,每个 Prometheus 测量都有自己的 InfluxDB 测量。
此格式与Telegraf Prometheus input plugin使用的格式不同。