如何改进庞大的 Logstash "If Statement"

How to improve huge Logstash "If Statement"

我的 logstash 实例正在读取 sysmon 事件(从 nxlog 在 json 中传送),并在我操作一些字段后将它们存储在 elasticsearch 中。

我想用基于 sysmon 事件类型的值创建一个新字段。我可以使用字段 [Task] 来确定我正在接收哪个 sysmon 事件(1 到 9)。但我最终得到了这个巨大的 if/else 声明。

我宁愿能够建立一些本地阵列:

EventObject=>['process','file','flow','sysmon']

然后,使用类似

的内容创建一个新字段
mutate { add_field => {"object" => EventObject[$Task]}}

相反,我有这个

if [Task] == 1 { 
       mutate {
        add_field => {"object" => "process"}
       }


   } else if [Task] == 2 {
   mutate{
      add_field => {"object" => "file"}  

   } else if [Task] == 3 {
   mutate{
      add_field => {"object" => "flow"}  

   } else if [Task] == 4 {
         etc....
enter code here

正确的做法是什么?我正在努力使我的 logstash 配置易于阅读并减少行数。

你想要 translate filter.