Logsta sh пытается вывести на неверный индекс - PullRequest
0 голосов
/ 08 января 2020

Теперь, когда я все правильно проанализировал, я пытаюсь вывести результаты в Elasticsearch. В результате синтаксического анализа определены два поля: site и version. Значения site и version поступают из этой части синтаксического анализа:

grok {
  patterns_dir => "/usr/share/logstash/patterns"
  match => {
    "path" => "\/mnt\/logs\/%{WORD:site}\/%{WORD:version}\/node%{NUMBER:node}\/hybris_logs\/tomcat\/%{DATA:file}\.log"
  }
}

Тогда мой соответствующий раздел output в конфигурации выглядит так:

output {
  elasticsearch {
    index => "%{site}-%{version}"
    hosts => [ "http://127.0.0.1:9201" ]
  }
}

From Я ожидаю, что индекс будет, например,

bchs-qa
bim-prod
etc.

Когда все это выполнится, я вижу правильные индексы, которые создаются вasticsearch, однако я также вижу большое количество ошибок в файле журнала, который выглядеть следующим образом:

[2020-01-08T15:33:40,653][ERROR][logstash.outputs.elasticsearch][main] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"bchs,bchs-qa,qa", :routing=>nil, :_type=>"_doc"}, #<LogStash::Event:0x70eb5ede>], :response=>{"index"=>{"_index"=>"bchs,bchs-qa,qa", "_type"=>"_doc", "_id"=>nil, "status"=>400, "error"=>{"type"=>"invalid_index_name_exception", "reason"=>"Invalid index name [bchs,bchs-qa,qa], must not contain the following characters [ , \", *, \\, <, |, ,, >, /, ?]", "index_uuid"=>"_na_", "index"=>"bchs,bchs-qa,qa"}}}}

Ошибка относится к неверному имени индекса bchs,bchs-qa,qa. По-видимому, эти ошибки генерируются не для каждой записи в файле журнала, а только для некоторых из них. (Сложно оценить, сколько файлов журнала содержит сотни тысяч записей.) Похоже, что значения полей site и version повторяются дважды. Я вообще не могу понять, откуда это происходит.

Пытаясь выяснить это, я изменил выходной блок в конфигурации, чтобы иметь жестко закодированное имя индекса:

output {
  elasticsearch {
    index => "tomcat-log"
    hosts => [ "http://127.0.0.1:9201" ]
  }
}

Тем не менее, я все еще вижу те же самые ошибки в файле журнала! Теперь, похоже, что-то где-то кешируется, и я не совсем понимаю, где. Logsta sh работает как служба systemd в CentOS 7.7.

Как очистить кэши и получить правильное имя индекса для использования?

ОБНОВЛЕНИЕ: При исследовании данных через Kibana, отправив этот запрос:

GET _search
{
  "query": {
    "match_all": {}
  }
}

Я вижу, что в некоторых строках дублируется каждое поле - как в массиве из двух одинаковых значений. Я подозреваю, что это виновник. Но почему они дублируются?

...