脚本处理器
编辑脚本处理器编辑
script
处理器执行 Javascript 代码来处理事件。 该处理器使用 ECMAScript 5.1 的纯 Go 实现,并且没有外部依赖项。 在其他处理器无法提供您需要的过滤事件功能的情况下,这可能很有用。
可以通过在配置文件中嵌入 Javascript 或将处理器指向外部文件来配置处理器。
processors: - script: lang: javascript source: > function process(event) { event.Tag("js"); }
这将从磁盘加载 filter.js
。
processors: - script: lang: javascript file: ${path.config}/filter.js
可以通过将 params
添加到配置中来将参数传递给脚本。 这允许脚本可重复使用。 使用 params
时,代码必须定义一个 register(params)
函数来接收参数。
processors: - script: lang: javascript tag: my_filter params: threshold: 15 source: > var params = {threshold: 42}; function register(scriptParams) { params = scriptParams; } function process(event) { if (event.Get("severity") < params.threshold) { event.Cancel(); } }
如果脚本定义了 test()
函数,则在加载处理器时将调用该函数。 抛出的任何异常都会导致处理器加载失败。 这可以用来断言脚本的行为。
function process(event) { if (event.Get("event.code") === 1102) { event.Put("event.action", "cleared"); } return event; } function test() { var event = process(new Event({event: {code: 1102}})); if (event.Get("event.action") !== "cleared") { throw "expected event.action === cleared"; } }
配置选项编辑
script
处理器具有以下配置设置
-
lang
- 此字段是必需的,其值必须为
javascript
。 -
tag
- 这是一个可选标识符,将添加到日志消息中。 如果定义,则为此处理器实例启用指标日志记录。 指标包括异常数量和
process
函数执行时间的直方图。 -
source
- 内联 Javascript 源代码。
-
file
- 要加载的脚本文件的路径。 相对路径被解释为相对于
path.config
目录。 通配符将被扩展。 -
files
- 要加载的脚本文件列表。 脚本连接在一起。 相对路径被解释为相对于
path.config
目录。 并且通配符将被扩展。 -
params
- 传递给脚本
register
的参数字典。 -
tag_on_exception
- 如果 Javascript 代码在处理事件时导致异常,则添加到事件中的标签。 默认为
_js_exception
。 -
timeout
- 这为
process
函数设置执行超时。 当process
函数的运行时间超过timeout
周期时,该函数将被中断。 您可以设置此选项以防止脚本运行时间过长(例如防止无限while
循环)。 默认情况下没有超时。 -
max_cached_sessions
- 这将设置将缓存以避免重新分配的 Javascript VM 会话的最大数量。 默认值为
4
。
事件 API编辑
传递给 process
方法的 Event
对象具有以下 API。
方法 | 描述 |
---|---|
|
从事件中获取值(标量或对象)。 如果键不存在,则返回 示例: |
|
将值放入事件中。 如果键已设置,则返回先前值。 如果由于其中一个中间值不是对象而无法设置键,则会引发异常。 示例: |
|
重命名事件中的键。 目标键必须不存在。 如果源键已成功重命名为目标键,则返回 true。 示例: |
|
从事件中删除字段。 成功时返回 true。 示例: |
|
将事件标记为已取消,这会导致处理器丢弃事件。 示例: |
|
如果 示例: |
|
示例: |