Конфигурация фильтра Logstash не обнаружена

Я использую elk (elasticsearch, logstash и kibana) в докере. В logstash у меня есть input.conf и output.conf. Все работает нормально, но я не добавляю никаких фильтров Grok .. Если я попытаюсь добавить его в input.conf или создать новый файл "filter.conf", но logstash не увидит эти фильтры.

Мой input.conf

input {
    file {
        type => "test"
        path => [
            "/host/var/log/test.log"
            ]
    }
}

Мой output.conf

output {
    elasticsearch {
        hosts => ["localhost"]
    }
}

Мой фильтр:

filter {
  grok {
    type => "test"
    match => [ "%{IP:client}, "%{WORD:method}", "%{URIPATHPARAM:request}", "%{NUMBER:bytes}", "%{NUMBER:duration}" ]

 }
}

Пример журнала, который сохраняется в test.log: echo 51.0.50.1 POST /index.html 15824 0.049 >> var / log / test.log

Что не так в этой конфигурации?


person Mateusz Chudy    schedule 13.01.2016    source источник
comment
Не видит? Вы имеете в виду, что у вас нет полей «клиент», «запрос» (и т. Д.) Или ??   -  person Alain Collins    schedule 13.01.2016


Ответы (1)


Ваш шаблон Grok сформирован неправильно, он должен быть таким, как показано ниже, то есть с двойными кавычками в начале и в конце и без запятых:

filter {
  grok {
    match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
 }
}

Используя этот фильтр с образцом строки журнала 51.0.50.1 POST /index.html 15824 0.049, я получаю следующее событие, которое кажется правильным:

{
       "message" => "51.0.50.1 POST /index.html 15824 0.049",
      "@version" => "1",
    "@timestamp" => "2016-01-13T17:07:15.274Z",
          "host" => "iMac.local",
        "client" => "51.0.50.1",
        "method" => "POST",
       "request" => "/index.html",
         "bytes" => "15824",
      "duration" => "0.049"
}
person Val    schedule 13.01.2016
comment
Удалось ли вам это попробовать? - person Val; 14.01.2016