Exec 输入插件
编辑Exec 输入插件编辑
- 插件版本:v3.6.0
- 发布时间:2022-06-15
- 更新日志
有关其他版本,请参阅版本插件文档。
获取帮助编辑
如果您对该插件有任何疑问,请在Discuss论坛中开启一个主题。如有错误或功能请求,请在Github中开启一个问题。有关 Elastic 支持的插件列表,请参阅Elastic 支持矩阵。
描述编辑
定期运行 shell 命令并将整个输出捕获为事件。
- 此事件的
command
字段将是运行的命令。 - 此事件的
message
字段将是命令的整个标准输出。
exec 输入最终使用fork
来生成子进程。使用 fork 会复制父进程地址空间(在我们的例子中是logstash 和 JVM);这可以通过操作系统的写时复制来缓解,但最终您可能会为了一个“简单”的可执行文件而分配大量内存。如果 exec 输入失败并出现ENOMEM: Cannot allocate memory
之类的错误,则表明没有足够的非 JVM 堆物理内存来执行 fork。
示例
input { exec { command => "echo 'hi!'" interval => 30 } }
这将每 30 秒执行一次echo
命令。
与 Elastic 通用模式 (ECS) 的兼容性编辑
此插件添加有关事件来源的元数据,并且可以使用ecs_compatibility
以与 ECS 兼容的方式进行配置。此元数据在事件由相应的编解码器解码后添加,并且不会覆盖现有值。
ECS 禁用 | ECS v1、v8 | 描述 |
---|---|---|
|
|
处理事件的 Logstash 主机的名称 |
|
|
插件运行的命令 |
|
|
进程的退出代码 |
— |
|
命令运行所花费的时间(以纳秒为单位) |
|
— |
命令持续时间(以秒为单位),以浮点数表示(已弃用) |
Exec 输入配置选项编辑
此插件支持以下配置选项以及稍后描述的通用选项。
另请参阅通用选项,以获取所有输入插件支持的选项列表。
ecs_compatibility
编辑
- 值类型为字符串
-
支持的值为
-
disabled
:使用向后兼容的字段名称,例如[host]
-
v1
、v8
:使用与 ECS 兼容的字段,例如[host][name]
-
控制此插件与Elastic 通用模式 (ECS)的兼容性。有关详细信息,请参阅与 Elastic 通用模式 (ECS) 的兼容性。
示例输出:ECS 已启用
{ "message" => "hi!\n", "process" => { "command_line" => "echo 'hi!'", "exit_code" => 0 }, "host" => { "name" => "deus-ex-machina" }, "@metadata" => { "input" => { "exec" => { "process" => { "elapsed_time"=>3042 } } } } }
示例输出:ECS 已禁用
{ "message" => "hi!\n", "command" => "echo 'hi!'", "host" => "deus-ex-machina", "@metadata" => { "exit_status" => 0, "duration" => 0.004388 } }
schedule
编辑
- 值类型为字符串
- 此设置没有默认值。
定期运行命令的时间表。
此计划语法由rufus-scheduler提供支持。语法类似于 cron,但有一些特定于 Rufus 的扩展(例如时区支持)。
示例
|
将在每年 1 月至 3 月的每天凌晨 5 点的每一分钟执行。 |
|
将在每天每小时的第 0 分钟执行。 |
|
将在每天上午 6:00(UTC/GMT -5)执行。 |
有关此语法的更多文档,请参见此处。
必须定义interval
或schedule
选项之一。
通用选项编辑
以下配置选项受所有输入插件支持
详细信息编辑
codec
编辑
- 值类型为编解码器
- 默认值为
"plain"
用于输入数据的编解码器。输入编解码器是一种方便的方法,可以在数据进入输入之前对其进行解码,而无需在 Logstash 管道中使用单独的过滤器。