文档文档

Quantile 聚合器插件

此插件将每个数值字段按度量聚合到指定的量级,并每 period 发出量级。支持不同的聚合算法,具有不同的精度和限制。

引入于: Telegraf v1.18.0 标签: statistics 操作系统支持: all

全局配置选项

插件支持其他全局和插件配置设置,用于修改指标、标签和字段,创建别名以及配置插件顺序等任务。更多详情请参阅 CONFIGURATION.md

配置

# Keep the aggregate quantiles of each metric passing through.
[[aggregators.quantile]]
  ## General Aggregator Arguments:
  ## The period on which to flush & clear the aggregator.
  # period = "30s"

  ## If true, the original metric will be dropped by the
  ## aggregator and will not get sent to the output plugins.
  # drop_original = false

  ## Quantiles to output in the range [0,1]
  # quantiles = [0.25, 0.5, 0.75]

  ## Type of aggregation algorithm
  ## Supported are:
  ##  "t-digest" -- approximation using centroids, can cope with large number of samples
  ##  "exact R7" -- exact computation also used by Excel or NumPy (Hyndman & Fan 1996 R7)
  ##  "exact R8" -- exact computation (Hyndman & Fan 1996 R8)
  ## NOTE: Do not use "exact" algorithms with large number of samples
  ##       to not impair performance or memory consumption!
  # algorithm = "t-digest"

  ## Compression for approximation (t-digest). The value needs to be
  ## greater or equal to 1.0. Smaller values will result in more
  ## performance but less accuracy.
  # compression = 100.0

算法类型

t-digest

Dunning & Ertl (2019) 提出,此类型使用一种特殊的数据结构来聚类数据。这些聚类随后用于近似请求的百分位数。近似的界限可以通过 compression 设置进行控制,其中较小的值会带来更高的性能但精度较低。

由于其增量性质,该算法可以高效地处理大量样本。建议将其用于不需要精确百分位数计算的应用。

有关实现细节,请参阅底层 golang 库

exact R7 和 R8

这些算法按照 Hyndman & Fan (1996) 的描述计算百分位数。R7 变体在 Excel 和 NumPy 中使用。R8 变体被 Hyndman & Fan 推荐,因为它独立于底层样本分布。

这些算法会保存聚合 period 的所有数据。当与大量系列或大量样本一起使用时,它们需要大量内存。它们比 t-digest 算法慢,并且建议仅与少量样本和系列一起使用。

基准测试 (linux/amd64)

基准测试通过向聚合器添加 100 个具有六个数值字段(和两个非数值字段)的指标并推导出聚合结果来执行。

算法# 百分位数平均运行时
t-digest3376372 ns/op
exact R739782946 ns/op
exact R839158205 ns/op
t-digest100899204 ns/op
exact R71007868816 ns/op
exact R81008099612 ns/op

测量

测量名称会通过此聚合器进行传递。

字段

对于所有数值字段 (int32/64, uint32/64 和 float32/64),将以 <字段名>_<百分位数*100> 的形式聚合新的百分位数字段。其他字段类型(例如布尔值、字符串)将被忽略并从输出中删除。

例如,将以下指标作为输入传入

  • somemetric
    • average_response_ms (float64)
    • minimum_response_ms (float64)
    • maximum_response_ms (float64)
    • status (string)
    • ok (boolean)

以及 quantiles 的默认设置,您将获得以下输出

  • somemetric
    • average_response_ms_025 (float64)
    • average_response_ms_050 (float64)
    • average_response_ms_075 (float64)
    • minimum_response_ms_025 (float64)
    • minimum_response_ms_050 (float64)
    • minimum_response_ms_075 (float64)
    • maximum_response_ms_025 (float64)
    • maximum_response_ms_050 (float64)
    • maximum_response_ms_075 (float64)

statusok 字段被删除,因为它们不是数值字段。请注意,结果字段的数量会随着指定的 quantiles 数量而增加。

标签

标签会通过此聚合器传递到输出。

示例输出

cpu,cpu=cpu-total,host=Hugin usage_user=10.814851731872487,usage_system=2.1679541490155687,usage_irq=1.046598554697342,usage_steal=0,usage_guest_nice=0,usage_idle=85.79616247197244,usage_nice=0,usage_iowait=0,usage_softirq=0.1744330924495688,usage_guest=0 1608288360000000000
cpu,cpu=cpu-total,host=Hugin usage_guest=0,usage_system=2.1601016518428664,usage_iowait=0.02541296060990694,usage_irq=1.0165184243964942,usage_softirq=0.1778907242693666,usage_steal=0,usage_guest_nice=0,usage_user=9.275730622616953,usage_idle=87.34434561626493,usage_nice=0 1608288370000000000
cpu,cpu=cpu-total,host=Hugin usage_idle=85.78199052131747,usage_nice=0,usage_irq=1.0476428036915637,usage_guest=0,usage_guest_nice=0,usage_system=1.995510102269591,usage_iowait=0,usage_softirq=0.1995510102269662,usage_steal=0,usage_user=10.975305562484735 1608288380000000000
cpu,cpu=cpu-total,host=Hugin usage_guest_nice_075=0,usage_user_050=10.814851731872487,usage_guest_075=0,usage_steal_025=0,usage_irq_025=1.031558489546918,usage_irq_075=1.0471206791944527,usage_iowait_025=0,usage_guest_050=0,usage_guest_nice_050=0,usage_nice_075=0,usage_iowait_050=0,usage_system_050=2.1601016518428664,usage_irq_050=1.046598554697342,usage_guest_nice_025=0,usage_idle_050=85.79616247197244,usage_softirq_075=0.1887208672481664,usage_steal_075=0,usage_system_025=2.0778058770562287,usage_system_075=2.1640279004292173,usage_softirq_050=0.1778907242693666,usage_nice_050=0,usage_iowait_075=0.01270648030495347,usage_user_075=10.895078647178611,usage_nice_025=0,usage_steal_050=0,usage_user_025=10.04529117724472,usage_idle_025=85.78907649664495,usage_idle_075=86.57025404411868,usage_softirq_025=0.1761619083594677,usage_guest_025=0 1608288390000000000

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2