Повторяющиеся значения полей для данных, проанализированных с помощью Grok - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть filebeat, который записывает логи из приложения uwsgi, запущенного в Docker. Данные отправляются в logstash, который анализирует их и пересылает вasticsearch.

Вот файл конфигурации logstash:

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "log" => "\[pid: %{NUMBER:worker.pid}\] %{IP:request.ip} \{%{NUMBER:request.vars} vars in %{NUMBER:request.size} bytes} \[%{HTTPDATE:timestamp}] %{URIPROTO:request.method} %{URIPATH:request.endpoint}%{URIPARAM:request.params}? => generated %{NUMBER:response.size} bytes in %{NUMBER:response.time} msecs(?: via sendfile\(\))? \(HTTP/%{NUMBER:request.http_version} %{NUMBER:response.code}\) %{NUMBER:headers} headers in %{NUMBER:response.size} bytes \(%{NUMBER:worker.switches} switches on core %{NUMBER:worker.core}\)" }
  }
  date {
    # 29/Oct/2018:06:50:38 +0700
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z"]
  }

  kv {
    source => "request.params"
    field_split => "&?"
    target => "request.query"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "test-index"
  }
}

Все было хорошо, но я заметил, что все значения, полученные с помощью шаблона grok, дублируются. Вот как это выглядит в кибане:

enter image description here

Обратите внимание, что необработанные данные, такие как log, которые не были выводом grok, в порядке. Я видел, что фильтр kv имеет параметр allow_duplicate_values, но он не относится к grok.

Что не так с моей конфигурацией? Кроме того, возможно ли повторно запустить шаблоны grok на существующих данных вasticsearch?

1 Ответ

0 голосов
/ 03 ноября 2018

Может быть, ваш filebeat уже выполняет свою работу и создает эти поля

Вы пытались добавить этот параметр в свой грок?

overwrite => [ "request.ip", "request.endpoint", ... ]

Для повторного запуска grok на уже проиндексированных данных вам необходимо использовать входной плагин эластичного поиска , чтобы считывать данные из ES и переиндексировать их после grok.

...