脚本处理器
编辑脚本处理器
编辑script
处理器执行 Javascript 代码来处理事件。该处理器使用纯 Go 实现的 ECMAScript 5.1,没有外部依赖项。这在其他处理器无法提供您过滤事件所需功能的情况下非常有用。
可以通过在配置文件中嵌入 Javascript 或将处理器指向外部文件来配置处理器。
示例
编辑- script: lang: javascript source: > function process(event) { event.Tag("js"); }
此示例从磁盘加载 filter.js
- script: lang: javascript file: ${path.config}/filter.js
可以通过向配置添加 params
将参数传递给脚本。这使得脚本可以重用。使用 params
时,代码必须定义一个 register(params)
函数来接收参数。
- 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"; } }
配置设置
编辑Elastic Agent 处理器在摄取管道之前执行,这意味着它们处理的是原始事件数据,而不是发送到 Elasticsearch 的最终事件。有关相关限制,请参阅 使用处理器有哪些限制?
名称 | 必需 | 默认值 | 描述 |
---|---|---|---|
|
是 |
此字段的值必须是 |
|
|
否 |
添加到日志消息的可选标识符。如果已定义,此标签将为此处理器实例启用指标日志记录。这些指标包括异常数量和 |
|
|
内联 Javascript 源代码。 |
||
|
要加载的脚本文件的路径。相对路径被解释为相对于 |
||
|
要加载的脚本文件列表。这些脚本会连接在一起。相对路径被解释为相对于 |
||
|
传递给脚本的 |
||
|
|
如果 Javascript 代码在处理事件时导致异常,则添加到事件的标签。 |
|
|
无超时 |
|
|
|
|
为了避免重新分配而将缓存的最大 Javascript VM 会话数。 |
事件 API
编辑传递给 process
方法的 Event
对象具有以下 API。
方法 | 描述 |
---|---|
|
从事件中获取值(标量或对象)。如果键不存在,则返回 示例: |
|
将值放入事件。如果已设置键,则返回先前的值。如果由于其中一个中间值不是对象而无法设置键,则会抛出异常。 示例: |
|
重命名事件中的键。目标键必须不存在。如果源键已成功重命名为目标键,则返回 true。 示例: |
|
从事件中删除字段。成功时返回 true。 示例: |
|
将事件标记为已取消,这将导致处理器删除事件。 示例: |
|
如果标签尚不存在,则将标签附加到 示例: |
|
示例: |