Расширение переменной конфигурации Logstash - PullRequest
0 голосов
/ 03 июля 2018

У меня странная проблема с фильтром 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.

Есть идеи?

Спасибо.

1 Ответ

0 голосов
/ 03 июля 2018

Решил это сам и публикую здесь на случай, если кто-нибудь получит такую ​​же проблему.

При сборке контейнера Docker я случайно оставил другой файл .conf, который также содержал ссылку на access.log. Два файла .conf конфликтовали, так как logstash обрабатывал оба. Я удалил ошибочный файл, и он начал работать.

...