ElasticSearch Нет доступных ошибок соединения в Logstash - PullRequest
0 голосов
/ 30 октября 2018

Я использую экземпляр Logstash, который подключен к кластеру ES за балансировщиком нагрузки. Балансировщик нагрузки имеет время простоя 5 минут. Logstash настраивается с помощью URL-адреса ES, соответствующего IP-адресу балансировщика нагрузки.

Обычно все работает нормально, но происходит то, что после периода бездействия запросов следующий запрос, обработанный LS, выходит с ошибкой со следующим:

[2018-10-30T08:15:00,757][WARN ][logstash.outputs.elasticsearch] Marking url as dead. Last error: [LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError] Elasticsearch Unreachable: [http://10.100.24.254:9200/][Manticore::SocketTimeout] Read timed out {:url=>http://10.100.24.254:9200/, :error_message=>"Elasticsearch Unreachable: [http://10.100.24.254:9200/][Manticore::SocketTimeout] Read timed out", :error_class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError"}
[2018-10-30T08:15:00,759][ERROR][logstash.outputs.elasticsearch] Attempted to send a bulk request to elasticsearch' but Elasticsearch appears to be unreachable or down! {:error_message=>"Elasticsearch Unreachable: [http://10.100.24.254:9200/][Manticore::SocketTimeout] Read timed out", :class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError", :will_retry_in_seconds=>2}
[2018-10-30T08:15:02,760][WARN ][logstash.outputs.elasticsearch] UNEXPECTED POOL ERROR {:e=>#<LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError: No Available connections>}
[2018-10-30T08:15:02,760][ERROR][logstash.outputs.elasticsearch] Attempted to send a bulk request to elasticsearch, but no there are no living connections in the connection pool. Perhaps Elasticsearch is unreachable or down? {:error_message=>"No Available connections", :class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError", :will_retry_in_seconds=>4}
[2018-10-30T08:15:05,651][INFO ][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://10.100.24.254:9200/, :path=>"/"}

LS в конечном итоге восстанавливается, но это занимает более 1 минуты, и это не приемлемо для нашего SLA.

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

Я пробовал установить:

timeout => 3

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

1 Ответ

0 голосов
/ 31 октября 2018

Попробуйте validate_after_inactivity настройку, как описано здесь

Или вы можете попробовать включить поддержку активности на вашем сервере logstash, чтобы logstash знал, что соединение было разорвано, когда LB достигает времени простоя, и запускает новое соединение вместо отправки запросов на старое устаревшее соединение.

...