Теперь, когда я все правильно проанализировал, я пытаюсь вывести результаты в 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": {}
}
}
Я вижу, что в некоторых строках дублируется каждое поле - как в массиве из двух одинаковых значений. Я подозреваю, что это виновник. Но почему они дублируются?