У меня странная проблема с фильтром logstash, который работал до вчерашнего дня.
Это мой файл .conf:
input {
beats {
port => 5044
}
}
filter {
if "access.log" in [source] {
grok {
match => { "message" => "%{GREEDYDATA:messagebefore}\[%{HTTPDATE:real_date}\]\ %{GREEDYDATA:messageafter}" }
}
mutate {
replace => { "[message]" => "%{messagebefore} %{messageafter}" }
remove_field => [ "messagebefore" ]
remove_field => [ "messageafter" ]
}
date {
match => [ "real_date", "dd/MMM/YYYY:HH:mm:ss Z" ]
}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
}
Проблема в том, что в выходных данных производные переменные% messagebefore и% message after отображаются в виде буквенного текста, а не содержимого.
Пример:
source:/var/log/nginx/access.log message:%{messagebefore} %{messageafter}...
Странно то, что до вчерашнего дня все работало нормально. Я также ценю, что это, вероятно, не лучший способ обработки журналов nginx, но я использую его только в качестве примера, поскольку он влияет и на все мои другие файлы конфигурации.
Мое окружение:
Стек ELK, работающий как докер-контейнер на Centos 7, полученный из docker.io/sebp/elk.
Filebeat работает на клиенте Centos 7.
Есть идеи?
Спасибо.