1
我的logstash.conf可以在下面看到。将信息过滤出logstash.conf
我将如何去滤除包含特定字符串的消息?在这种情况下,我的一些消息正在读作“DEBUG:xxx-xxx-xxx”,我希望将这些消息过滤掉logstash。
input {
tcp {
port => 5000
type => syslog
}
udp {
port => 5000
type => syslog
}
}
filter {
if [loglevel] == "debug" {
drop { }
}
if [type] == "syslog" {
grok {
match => {
"message" => "%{SYSLOG5424PRI}%{NONNEGINT:ver} +(?:% {TIMESTAMP_ISO8601:ts}|-) +(?:%{HOSTNAME:containerid}|-) +(?:%{NOTSPACE:containername}|-)
+(?:%{NOTSPACE:proc}|-) +(?:%{WORD:msgid}|-) +(?:%{SYSLOG5424SD:sd}|-|) +%{GREEDYDATA:msg}" }
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
if !("_grokparsefailure" in [tags]) {
mutate {
replace => [ "@source_host", "%{syslog_hostname}" ]
replace => [ "@message", "%{syslog_message}" ]
}
}
mutate {
remove_field => [ "syslog_hostname", "syslog_message", "syslog_timestamp" ]
}
}
}
output {
elasticsearch { host => "elasticsearch" }
stdout { codec => rubydebug }
}
编辑: 我要澄清的是它是GREEDYDATA:MSG字段,我希望删除,如果它包括一个“DEBUG”消息。
对不起,我应该在我的文章中提到,它是包含“DEBUG”的GREEDYDATA消息。我编辑了我的帖子来澄清这一点。当[loglevel]等于debug时,我已经在使用drop。当GREEDYDATA包含“DEBUG”作为字符串的一部分时,这也可以工作吗? – User588233