使用 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)


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