Logstash 删除syslog筛选器中的多个日期字段
我已经设置了logstash,正在使用“默认”系统日志过滤器,如下所示:Logstash 删除syslog筛选器中的多个日期字段,logstash,logstash-configuration,Logstash,Logstash Configuration,我已经设置了logstash,正在使用“默认”系统日志过滤器,如下所示: filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDAT
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
这将导致创建两个字段,@timestamp
和syslog\u timestamp
,它们基本上包含相同的值,尽管格式不同
有没有办法在grok中创建一个临时的syslog\u timestamp
字段,以便将其传递到日期插件中,或者在“使用”该字段后必须通过mutate显式删除该字段?例如:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
mutate {
remove_field => [ "syslog_timestamp" ]
}
}
}
谢谢你的指点。这里没有真正的临时字段,如果你不想要
syslog\u timestamp
你必须删除它
不过,我建议您执行remove\u字段
。这样做只会在成功应用日期筛选器时删除该字段,这意味着如果日期筛选器失败,它将留下syslog\u timestamp
字段,可能会揭示失败的原因
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
remove_field => [ "syslog_timestamp" ]
}
没有真正的临时字段,如果您不想要
syslog\u timestamp
,则必须将其删除
不过,我建议您执行remove\u字段
。这样做只会在成功应用日期筛选器时删除该字段,这意味着如果日期筛选器失败,它将留下syslog\u timestamp
字段,可能会揭示失败的原因
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
remove_field => [ "syslog_timestamp" ]
}