Упругий поиск IndexShardGatewayRecoveryException

Я новичок в ELK, сегодня я нашел эти журналы (те же самые журналы на тысячах страниц), и упругий поиск стал использовать слишком много CPU. Так кто-нибудь может мне помочь с этим?

LOGS: [2015-06-24 16:16:52,309][WARN ][cluster.action.shard ] [Bereet] [logstash-2015.06.24][0] received shard failed for [logstash-2015.06.24][0], node[ucXcuxuQQTSz_leAzWq6mQ], [P], s[INITIALIZING], indexUUID [ieIR8uWLQHycnEC_szsNZQ], reason [shard failure [failed recovery][IndexShardGatewayRecoveryException[[logstash-2015.06.24][0] failed to recover shard]; nested: TranslogCorruptedException[translog corruption while reading from stream]; nested: ElasticsearchIllegalArgumentException[No version type match [99]]; ]] [2015-06-24 16:16:52,332][WARN ][cluster.action.shard ] [Bereet] [logstash-2015.06.24][0] received shard failed for [logstash-2015.06.24][0], node[ucXcuxuQQTSz_leAzWq6mQ], [P], s[INITIALIZING], indexUUID [ieIR8uWLQHycnEC_szsNZQ], reason [master [Bereet][ucXcuxuQQTSz_leAzWq6mQ][iZ23cth9hh5Z][inet[/10.162.41.162:9300]] marked shard as initializing, but shard is marked as failed, resend shard failure] [2015-06-24 16:16:52,339][WARN ][index.engine ] [Bereet] [logstash-2015.06.24][4] failed to sync translog [2015-06-24 16:16:52,345][WARN ][indices.cluster ] [Bereet] [[logstash-2015.06.24][4]] marking and sending shard failed due to [failed recovery] org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [logstash-2015.06.24][4] failed to recover shard at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:290) at org.elasticsearch.index.gateway.IndexShardGatewayService$1.run(IndexShardGatewayService.java:112) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.elasticsearch.index.translog.TranslogCorruptedException: translog corruption while reading from stream at org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:72) at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:260) ... 4 more Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: No version type match [116] at org.elasticsearch.index.VersionType.fromValue(VersionType.java:307) at org.elasticsearch.index.translog.Translog$Create.readFrom(Translog.java:376) at org.elasticsearch.index.translog.ChecksummedTranslogStream.read(ChecksummedTranslogStream.java:68) ... 5 more

2 ответа

Похоже, что журнал поврежден: TranslogCorruptedException [повреждение журнала при чтении из потока]

Я полагаю, что если вы просто удалите поврежденные записи (в подкаталогах узлов /indices/${index_name}), это должно решить эту конкретную проблему. Дальнейшие проблемы могут быть обнаружены при удалении / исправлении испорченных записей.

Вот потенциально полезная ссылка: http://unpunctualprogrammer.com/2014/05/13/corrupt-elasticsearch-translogs/

Для меня это произошло после сбоя системы (на диске было достаточно места).

Теперь есть официальный способ исправить испорченный транслог с помощью предоставленного инструменталастикометрического трансляции, но вы можете потерять неиндексированные данные, поэтому я предлагаю сделать резервную копию транслога (т.е. по соображениям соответствия; возможно, при достаточных усилиях кто-то захочет проанализировать его в некоторых случаях). точка).

Сначала подтвердите проблему, запустив:

curl -XGET localhost:9200/_cluster/allocation/explain?pretty

Более простой способ найти поврежденные осколки:

curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED

Остановить eleasticsearch.

Предположим, что в индексе qABaulDIRJyT06G3rBFfrC затронут осколок № 2 (ваши пути могут отличаться), запустите:

/usr/share/elasticsearch/bin/elasticsearch-translog truncate -d /var/lib/elasticsearch/nodes/0/indices/qABaulDIRJyT06G3rBFfrC/2/translog

Убедитесь, что вновь созданные файлы принадлежат соответствующему пользователю / группе на случай, если вы запустили инструмент от имени пользователя root:

chown -R elasticsearch:elasticsearch translog*

Начать эластичный поиск. Наконец, запустите следующую команду, чтобы заставить asticsearch устранить проблему, если он перестал пытаться повторно использовать осколок:

curl -XPOST localhost:9200/_cluster/reroute?retry_failed=true

Команда для просмотра неназначенных осколков больше не должна возвращать результаты.

Другие вопросы по тегам