文档文档

Starlark 聚合器插件

此插件允许通过 Starlark 脚本实现自定义聚合插件。

Starlark 语言是 Python 的方言,对于有 Python 语言经验的人来说会很熟悉。但是,存在重大差异。现有的 Python 代码不太可能在未修改的情况下正常工作。

执行环境是沙箱化的,无法访问本地文件系统或执行网络操作。这是 Starlark 语言作为配置语言的设计使然。

此插件使用的 Starlark 脚本需要由定义聚合器的三个方法组成:addpushreset

add 方法在新指标添加到插件时调用,将指标添加到聚合器。在 period 之后,调用 push 方法输出结果指标,最后通过使用 Starlark 脚本的 reset 方法重置聚合。

Starlark 函数可以使用全局函数 state 来保存聚合信息,例如已添加的指标等。

有关语法和可用函数的更多详细信息,请参阅Starlark 规范

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

全局配置选项

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

配置

# Aggregate metrics using a Starlark script
[[aggregators.starlark]]
  ## The Starlark source can be set as a string in this configuration file, or
  ## by referencing a file containing the script.  Only one source or script
  ## should be set at once.
  ##
  ## Source of the Starlark script.
  source = '''
state = {}

def add(metric):
  state["last"] = metric

def push():
  return state.get("last")

def reset():
  state.clear()
'''

  ## File containing a Starlark script.
  # script = "/usr/local/bin/myscript.star"

  ## The constants of the Starlark script.
  # [aggregators.starlark.constants]
  #   max_size = 10
  #   threshold = 0.75
  #   default_name = "Julia"
  #   debug_mode = true

用法

Starlark 代码应包含一个名为 add 的函数,该函数接受一个 metric 作为参数。该函数将与每个要添加的 metric 一起调用,并且不返回任何内容。

def add(metric):
  state["last"] = metric

Starlark 代码还应包含一个名为 push 的函数,该函数不接受任何参数。该函数将被调用以计算聚合,并返回要推送到累加器的 metric。

def push():
  return state.get("last")

Starlark 代码还应包含一个名为 reset 的函数,该函数不接受任何参数。该函数将被调用以重置插件,并且不返回任何内容。

def reset():
  state.clear()

有关代码中可用的类型和函数的列表,请参阅 Starlark 规范

Python 差异

请参阅有关 Starlark 处理器的文档中的 Python 差异部分。

可用库

请参阅有关 Starlark 处理器的文档中的可用库部分。

常见问题

请参阅有关 Starlark 处理器的文档中的常见问题部分。

示例

  • minmax
  • merge

所有示例都在 testdata 文件夹中。

打开一个 Pull Request 以添加任何其他有用的 Starlark 示例。


此页面是否有帮助?

感谢您的反馈!


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