Starlark 聚合器插件
此插件允许通过 Starlark 脚本实现自定义聚合插件。
Starlark 语言是 Python 的方言,对于有 Python 语言经验的人来说会很熟悉。但是,存在重大差异。现有的 Python 代码不太可能在未修改的情况下正常工作。
执行环境是沙箱化的,无法访问本地文件系统或执行网络操作。这是 Starlark 语言作为配置语言的设计使然。
此插件使用的 Starlark 脚本需要由定义聚合器的三个方法组成:add、push 和 reset。
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"] = metricStarlark 代码还应包含一个名为 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 示例。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Telegraf 和本文档提出反馈和 bug 报告。要获取支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。