Prometheus 端点在 InfluxDB 中的支持
此页面记录了早期版本的 InfluxDB OSS。 InfluxDB OSS v2 是最新的稳定版本。 请参阅 InfluxDB v2 文档。
Prometheus 远程读取和写入 API 支持
注意:Prometheus API 稳定性保证声明,远程读取和远程写入端点是列为实验性或可能会更改的功能,因此对于 2.x 版本被认为是不稳定的。 任何重大更改都将包含在 InfluxDB 发行说明中。
InfluxDB 对 Prometheus 远程读取和写入 API 的支持为 InfluxDB 添加了以下 HTTP 端点
/api/v1/prom/read
/api/v1/prom/write
此外,还有一个 /metrics
端点 配置为以 Prometheus 指标格式生成默认的 Go 指标。
创建目标数据库
在您的 InfluxDB 实例中创建一个数据库,用于存放从 Prometheus 发送的数据。 在下面提供的示例中,prometheus
用作数据库名称,但您可以使用任何您喜欢的数据库名称。
CREATE DATABASE "prometheus"
配置
要启用 Prometheus 远程读取和写入 API 与 InfluxDB 的使用,请将 URL 值添加到 Prometheus 配置文件 中的以下设置
URL 必须可从您运行的 Prometheus 服务器解析,并使用 InfluxDB 正在运行的端口(默认为 8086
)。 还要使用 db=
查询参数包含数据库名称。
示例:Prometheus 配置文件中的端点
remote_write:
- url: "https://127.0.0.1:8086/api/v1/prom/write?db=prometheus"
remote_read:
- url: "https://127.0.0.1:8086/api/v1/prom/read?db=prometheus"
带有身份验证的读取和写入 URL
如果 在 InfluxDB 上启用了身份验证,请使用 u=
和 p=
查询参数分别传递具有读取和写入权限的 InfluxDB 用户的 username
和 password
。
启用身份验证的端点示例**_
remote_write:
- url: "https://127.0.0.1:8086/api/v1/prom/write?db=prometheus&u=username&p=password"
remote_read:
- url: "https://127.0.0.1:8086/api/v1/prom/read?db=prometheus&u=username&p=password"
在您的 Prometheus 配置文件中包含纯文本密码并不理想。 遗憾的是,Prometheus 配置文件中不支持环境变量和密钥。 有关更多信息,请参阅此 Prometheus 问题
Prometheus 指标如何在 InfluxDB 中解析
当 Prometheus 数据被引入 InfluxDB 时,会进行以下转换以匹配 InfluxDB 数据结构
- Prometheus 指标名称变为 InfluxDB measurement 名称。
- Prometheus 样本(值)变为 InfluxDB 字段,使用
value
字段键。 它始终是浮点数。 - 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 数据都进入名为
_
的单个 measurement,并且 Prometheus measurement 名称存储在__name__
标签中。 在 InfluxDB v1.6 或更高版本中,每个 Prometheus measurement 都有其自己的 InfluxDB measurement。
此格式与 Telegraf Prometheus 输入插件 使用的格式不同。
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子! 我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。 要寻求支持,请使用以下资源
拥有年度或支持合同的客户 可以 联系 InfluxData 支持。