Logstash 6.2 - полная постоянная очередь (неправильное отображение?)

Моя очередь почти заполнена, и я вижу эту ошибку в своем файле журнала:

[2018-05-16T00:01:33,334][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"2018.05.15-el-mg_papi-prod", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x608d85c1>], :response=>{"index"=>{"_index"=>"2018.05.15-el-mg_papi-prod", "_type"=>"doc", "_id"=>"mHvSZWMB8oeeM9BTo0V2", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse [papi_request_json.query.disableFacets]", "caused_by"=>{"type"=>"i_o_exception", "reason"=>"Current token (VALUE_TRUE) not numeric, can not use numeric value accessors\n at [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper@56b8442f; line: 1, column: 555]"}}}}}
[2018-05-16T00:01:37,145][INFO ][org.logstash.beats.BeatsHandler] [local: 0:0:0:0:0:0:0:1:5000, remote: 0:0:0:0:0:0:0:1:50222] Handling exception: org.logstash.beats.BeatsParser$InvalidFrameProtocolException: Invalid Frame Type, received: 69
[2018-05-16T00:01:37,147][INFO ][org.logstash.beats.BeatsHandler] [local: 0:0:0:0:0:0:0:1:5000, remote: 0:0:0:0:0:0:0:1:50222] Handling exception: org.logstash.beats.BeatsParser$InvalidFrameProtocolException: Invalid Frame Type, received: 84

...

[2018-05-16T15:28:09,981][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
[2018-05-16T15:28:09,982][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
[2018-05-16T15:28:09,982][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})

Если я понимаю первое предупреждение, проблема связана с отображением. У меня в папке Logstash очереди много файлов. Мои вопросы:

  1. Как очистить мою очередь, могу ли я просто удалить все файлы из папки очереди logstash (все журналы будут потеряны)? А затем повторно отправить все данные в logstash в соответствующий индекс?
  2. Как я могу определить, где именно проблема при сопоставлении или какие серверы отправляют данные неправильного типа?
  3. У меня есть конвейер на порту 5000 с именем testing-pipeline, просто чтобы проверить, активен ли Logstash из nagios. Что это за [INFO ][org.logstash.beats.BeatsHandler] журналы?
  4. Если я правильно понял, [INFO ][logstash.outputs.elasticsearch] - это просто логи о повторной попытке обработать очередь logstash?

На всех серверах стоит FIlebeat 6.2.2. Спасибо за помощь.


person dorinand    schedule 16.05.2018    source источник


Ответы (1)


  1. Все страницы в очереди могут быть удалены, но это неправильное решение. В моем случае очередь была заполнена, потому что были события с другим отображением индекса. В Elasticsearch 6 вы не можете отправлять документы с разным отображением в один и тот же индекс, поэтому журналы складываются в очередь из-за этих журналов (даже если есть только одно неправильное событие, все остальные не будут обработаны). Итак, как обработать все данные, которые можно обработать, и пропустить не те? Решение - настроить DLQ (очередь недоставленных сообщений). Каждое событие с кодом ответа 400 или 404 перемещается в DLQ, чтобы другие могли быть обработаны. Данные из DLQ могут быть обработаны позже с помощью конвейера.

  2. Неправильное отображение можно определить по журналу ошибок "error" => _ 1_. Чтобы указать точное место с неправильным отображением, вам необходимо сравнить отображение событий и индексов.

  3. [INFO ][org.logstash.beats.BeatsHandler] был вызван сервером Nagios. Проверка не состояла из действительного запроса, поэтому исключение Handling. Проверка должна проверить, активна ли служба Logstash. Теперь я проверяю службу Logstas на localhost:9600, для получения дополнительной информации здесь.

  4. [INFO ][logstash.outputs.elasticsearch] означает, что Logstash пытается обработать очередь, но индекс заблокирован ([FORBIDDEN/12/index read-only / allow delete (api)]), потому что индексы были установлены в состояние только для чтения. Elasticsearch, когда на сервере недостаточно места, автоматически настраивает индексы только для чтения. Это можно изменить с помощью cluster.routing.allocation.disk.watermark.low, для получения дополнительной информации здесь < / а>.

person dorinand    schedule 17.05.2018