Как написать, если условие внутри шаблона logstash grok? - PullRequest
0 голосов
/ 25 мая 2018

Мой вопрос связан с шаблоном logstash grok.Я создал шаблон ниже, который работает нормально, но большая проблема не в строковых значениях.Иногда;"Y" и "age" могут быть нулевыми, поэтому мой шаблон grok не создает никакого лога вasticseach.Это не работает должным образом.Мне нужно сказать мой образец грока:


if(age is null || age i empty){
updatefield["age",0]
}

, но я не знаю, как это сделать.Кстати;Я проверил многие решения с помощью Google, но это напрямую связано с моей проблемой.


input {
  file {
       path => ["C:/log/*.log"]
        start_position => "beginning" 
        discover_interval => 10
        stat_interval => 10
        sincedb_write_interval => 10
        close_older => 10
        codec => multiline { 
        pattern => "^%{TIMESTAMP_ISO8601}\|"
        negate => true
        what => "previous" 
       }
  }
}

filter {  
 grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:formattedDate}.* X: %{DATA:X} Y: %{NUMBER:Y} Z: %{DATA:Z} age: %{NUMBER:age:int} "}
        }   
 date {
            timezone => "Europe/Istanbul"
            match => ["TimeStamp", "ISO8601"]
             }  
    json{
        source => "request"
        target => "parsedJson"

    }   
    mutate {
    remove_field => [ "path","message","tags","@version"]

    }
}   

output {  

    stdout {
        codec => rubydebug
    }
  elasticsearch {
        hosts => [ "http://localhost:9200" ]
         index => "logstash-%{+YYYY.MM}"

    }   
}

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете проверить, существуют ли ваши поля или нет, используя условия с вашим фильтром,

filter {
  if ![age] or [age] == "" { 
       mutate {
         update => { "age" => "0" }
       }    
   } 
}
...