Documentation

抓取Prometheus指标

要使用Flux从可通过HTTP访问的端点抓取Prometheus格式的指标

  1. 导入experimental/prometheus
  2. 使用 prometheus.scrape 并指定 url 以抓取指标。
import "experimental/prometheus"

prometheus.scrape(url: "http://localhost:8086/metrics")

输出结构

prometheus.scrape() 返回一个 表流,包含以下列:

表格按 _measurement_field标签列 分组。

下划线前缀的列

带有下划线 (_) 前缀的列被视为“系统”列。某些 Flux 函数需要这些列才能正常工作。

示例 Prometheus 查询结果

以下是从InfluxDB OSS 2.x /metrics 端点抓取的示例 Prometheus 指标:

# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 1.42276424e+09
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 5.259247e+06
# HELP task_executor_run_latency_seconds Records the latency between the time the run was due to run and the time the task started execution, by task type
# TYPE task_executor_run_latency_seconds histogram
task_executor_run_latency_seconds_bucket{task_type="system",le="0.25"} 4413
task_executor_run_latency_seconds_bucket{task_type="system",le="0.5"} 11901
task_executor_run_latency_seconds_bucket{task_type="system",le="1"} 12565
task_executor_run_latency_seconds_bucket{task_type="system",le="2.5"} 12823
task_executor_run_latency_seconds_bucket{task_type="system",le="5"} 12844
task_executor_run_latency_seconds_bucket{task_type="system",le="10"} 12864
task_executor_run_latency_seconds_bucket{task_type="system",le="+Inf"} 74429
task_executor_run_latency_seconds_sum{task_type="system"} 4.256783538679698e+11
task_executor_run_latency_seconds_count{task_type="system"} 74429
# HELP task_executor_run_duration The duration in seconds between a run starting and finishing.
# TYPE task_executor_run_duration summary
task_executor_run_duration{taskID="00xx0Xx0xx00XX0x0",task_type="threshold",quantile="0.5"} 5.178160855
task_executor_run_duration{taskID="00xx0Xx0xx00XX0x0",task_type="threshold",quantile="0.9"} 5.178160855
task_executor_run_duration{taskID="00xx0Xx0xx00XX0x0",task_type="threshold",quantile="0.99"} 5.178160855
task_executor_run_duration_sum{taskID="00xx0Xx0xx00XX0x0",task_type="threshold"} 2121.9758301650004
task_executor_run_duration_count{taskID="00xx0Xx0xx00XX0x0",task_type="threshold"} 570

当被Flux抓取时,这些指标返回以下表的流:

时间测量值网址字段
2021-01-01T00:00:00Zprometheushttp://localhost:8086/metricsgo_memstats_alloc_bytes_total1422764240.0
_时间_测量网址_字段_值
2021-01-01T00:00:00Zprometheushttp://localhost:8086/metricsgo_memstats_buck_hash_sys_bytes5259247.0
时间测量任务类型网址le字段
2021-01-01T00:00:00Zprometheussystemhttp://localhost:8086/metrics0.25task_executor_run_latency_seconds4413
时间测量任务类型网址小于或等于字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metrics0.5task_executor_run_latency_seconds11901
时间测量任务类型网址le字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metrics1task_executor_run_latency_seconds12565
时间测量任务类型网址le字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metrics2.5task_executor_run_latency_seconds12823
时间测量任务类型网址le字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metrics5task_executor_run_latency_seconds12844
时间测量任务类型网址小于或等于字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metrics+无穷大task_executor_run_latency_seconds74429
时间测量任务类型网址字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metricstask_executor_run_latency_seconds_sum425678353867.9698
时间测量任务类型网址字段
2021-01-01T00:00:00Zprometheus系统http://localhost:8086/metricstask_executor_run_latency_seconds_count74429
时间测量任务类型任务ID网址分位数字段
2021-01-01T00:00:00Zprometheus阈值00xx0Xx0xx00XX0x0http://localhost:8086/metrics0.5task_executor_run_duration5.178160855
时间测量任务类型任务ID网址分位数字段
2021-01-01T00:00:00Zprometheus阈值00xx0Xx0xx00XX0x0http://localhost:8086/metrics0.9任务执行者运行持续时间5.178160855
时间测量任务类型任务ID网址分位数字段
2021-01-01T00:00:00Zprometheus阈值00xx0Xx0xx00XX0x0http://localhost:8086/metrics0.99任务执行者运行时长5.178160855
时间测量任务类型任务ID网址字段
2021-01-01T00:00:00Zprometheus阈值00xx0Xx0xx00XX0x0http://localhost:8086/metricstask_executor_run_duration_sum2121.9758301650004
时间测量任务类型任务ID网址字段
2021-01-01T00:00:00Zprometheus阈值00xx0Xx0xx00XX0x0http://localhost:8086/metricstask_executor_run_duration_count570

用于抓取的 Prometheus 指标的不同数据结构

TelegrafInfluxDB 提供工具来抓取 Prometheus 指标并将其存储在 InfluxDB 中。根据您使用的工具和配置,抓取的指标生成的数据结构可能与 prometheus.scrape() 返回的结构不同,如上面所述。

有关存储在 InfluxDB 中的抓取 Prometheus 指标的不同数据结构的信息,请参见 InfluxDB Prometheus metric parsing formats

将Prometheus指标写入InfluxDB

将抓取的Prometheus指标写入InfluxDB:

  1. 使用 prometheus.scrape 来抓取 Prometheus 指标。
  2. 使用 to() 将抓取的指标写入 InfluxDB。
import "experimental/prometheus"

prometheus.scrape(url: "http://example.com/metrics")
    |> to(bucket: "example-bucket", host: "http://localhost:8086", org: "example-org", token: "mYsuP3R5eCR37t0K3n")

定期将Prometheus指标写入InfluxDB

要定期抓取Prometheus指标并将其写入InfluxDB,请在InfluxDB任务中抓取Prometheus指标。

import "experimental/prometheus"

option task = {name: "Scrape Prometheus metrics", every: 10s}

prometheus.scrape(url: "http://example.com/metrics")
    |> to(bucket: "example-bucket")


Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: