elasticsearch 如何在logstash grok模式中写入if条件?
我的问题与logstash grok模式有关。我在下面创建了一个工作正常的模式,但最大的问题不是字符串值。有时;“Y”和“age”可以为空,因此我的grok模式不会在elasticseach中创建任何日志。它不能正常工作。我需要告诉我的grok模式:elasticsearch 如何在logstash grok模式中写入if条件?,elasticsearch,logstash,elastic-stack,logstash-grok,elasticsearch,Logstash,Elastic Stack,Logstash Grok,我的问题与logstash grok模式有关。我在下面创建了一个工作正常的模式,但最大的问题不是字符串值。有时;“Y”和“age”可以为空,因此我的grok模式不会在elasticseach中创建任何日志。它不能正常工作。我需要告诉我的grok模式: if(age is null || age i empty){ updatefield["age",0] } 但我不知道怎么做。顺便说一句我用谷歌搜索了很多解决方案,但这与我的问题直接相关 input { file { p
if(age is null || age i empty){
updatefield["age",0]
}
但我不知道怎么做。顺便说一句我用谷歌搜索了很多解决方案,但这与我的问题直接相关
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}"
}
}
您可以使用过滤器检查字段是否存在或为空
filter {
if ![age] or [age] == "" {
mutate {
update => { "age" => "0" }
}
}
}
这是不可能的,但您可以使用多行模式。讨论elasticsearch中的一篇文章是否能以适当的方式完成它