Im пытается совместить подстроку в моем условном фильтре, но, похоже, она не работает.Logstash условный не соответствует
У меня есть журнал, как это:
<30>ddns[21535]: Dynamic DNS update for xxx (Duck DNS) successful
И я пытаюсь соответствовать ddns
часть журнала, так как журналы также могут быть отправлены различными службами.
В настоящее время мой фильтр выглядит следующим образом: фильтр {
if [program] =~ "ddns" {
grok {
match => { "message" => "<%{PROG:syslog_pri}>%{DATA:program}[%{INT:pid}]: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
}
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "yyyy:MM:dd-HH:mm:ss" ]
}
mutate {
replace => [ "@source_host", "sflne01.sarandasnet.local" ]
replace => [ "@message", "%{syslog_message}" ]
remove_field => [ "syslog_message", "syslog_timestamp" ]
}
}
Я также попытался с помощью if [program] =~ /^ddns$/
, но без успеха.
ОБНОВЛЕНО CONFIG:
filter {
################
# START IPFIRE #
################
if [host] =~ /172\.16\.0\.1/ {
if [program] =~ /(?:k|kernel)/ {
grok {
match => { "message" => "<%{PROG:syslog_pri}>%{DATA:program}: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
}
}
if [prog] =~ /^ddns$/ {
grok {
match => { "message" => "<%{PROG:syslog_pri}>%{DATA:program}\[%{INT:pid}\]: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
}
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "yyyy:MM:dd-HH:mm:ss" ]
}
mutate {
replace => [ "@source_host", "sflne01.sarandasnet.local" ]
replace => [ "@message", "%{syslog_message}" ]
remove_field => [ "syslog_message", "syslog_timestamp" ]
}
kv {
source => "@message"
}
geoip {
source => "SRC"
target => "geoip"
database => "/etc/logstash/GeoLiteCity.dat"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float"]
}
}
################
# END IPFIRE #
################
}
Что в вашей программе на местах? Вы создали это поле со значением вашего журнала? Если нет, то поле не существует, и условие всегда будет ложным. – baudsp
Кроме того, это не в вашем вопросе, но ваш фильтр grok имеет проблему, '' '' и ']' должен быть экранирован с помощью \ like this: '\ [' and '\]' – baudsp
@baudsp Я добавил полный конфигурации. Меня просто беспокоит часть ddns, а остальные работают. – rhillhouse