使用 Prometheus 计数器
使用 Flux 查询和转换存储在 InfluxDB 中的 Prometheus 计数器指标。
计数器是一种累积指标,表示一个单调递增的单调递增计数器,其值只能增加或在重启时重置为零。
Prometheus 格式的计数器指标示例
# HELP example_counter_total Total representing an example counter metric
# TYPE example_counter_total counter
example_counter_total 282327
由于计数器可能会定期重置为 0,因此任何涉及计数器指标的查询都应规范化数据,以在进一步处理之前考虑计数器重置。
以下示例包括使用 prometheus.scrape() 从 InfluxDB OSS 2.x /metrics 端点收集并存储在 InfluxDB 中的示例数据。
Prometheus 指标解析格式
查询结构取决于用于抓取 Prometheus 指标的 Prometheus 指标解析格式。 在下面选择适当的指标格式版本。
规范化计数器重置
- 按
prometheus测量和计数器指标名称字段筛选结果。 - 使用
increase()规范化计数器重置。increase()返回列值中正向变化的累积总和。
increase() 考虑了计数器重置,但可能会在重置时损失一些精度,具体取决于您的抓取间隔。 在计数器重置时,increase() 假定没有增加。
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "prometheus" and r._field == "http_query_request_bytes")
|> increase()


- 按计数器指标名称测量和
counter字段筛选结果。 - 使用
increase()规范化计数器重置。increase()返回列值中正向变化的累积总和。
increase() 考虑了计数器重置,但可能会在重置时损失一些精度,具体取决于您的抓取间隔。 在计数器重置时,increase() 假定没有增加。
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "http_query_request_bytes" and r._field == "counter")
|> increase()


计算规范化计数器值之间的变化
使用 difference() 和规范化的计数器数据,返回后续值之间的差值。
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "prometheus" and r._field == "http_query_request_bytes")
|> increase()
|> difference()


from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "http_query_request_bytes" and r._field == "counter")
|> increase()
|> difference()


计算规范化计数器值的变化率
使用 derivative() 计算规范化计数器值之间的变化率。 默认情况下,derivative() 返回每秒的变化率。 使用 unit 参数 自定义速率单位。
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "prometheus" and r._field == "http_query_request_bytes")
|> increase()
|> derivative()


from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "http_query_request_bytes" and r._field == "counter")
|> increase()
|> derivative()


计算指定时间窗口内的平均变化率
要计算指定时间窗口内规范化计数器值的平均变化率
使用
aggregate.rate()计算每个时间窗口的平均变化率。- 使用
every参数 定义时间窗口间隔。 - 使用
unit参数 自定义速率单位。默认情况下,aggregate.rate()返回每秒 (1s) 变化率。 - 使用
groupColumns参数 指定在执行聚合时要分组的列。
- 使用
import "experimental/aggregate"
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "prometheus" and r._field == "http_query_request_bytes")
|> increase()
|> aggregate.rate(every: 15s, unit: 1s)


import "experimental/aggregate"
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "http_query_request_bytes" and r._field == "counter")
|> increase()
|> aggregate.rate(every: 15s, unit: 1s)


此页面是否对您有帮助?
感谢您的反馈!