Используя панель elasticsearch-head для подключения к Elasticsearch(ES), я обнаружил следующую ошибку:
Кластерное здоровье: красный (24 из 31)
Чтобы просмотреть информацию о статусе, посетите:Вход по гиперссылке виден.
{ "cluster_name" : "elasticsearch", «статус»: «красный», "timed_out" : ложно, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 24, "active_shards" : 24, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 7, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 77.41935483870968
} «Статус»: «красный»Статус — пусто
Плагин головы будет отображаться в разных цветах
1) Зелёный — самое здоровое состояние, то есть доступны все первичные и реплики осколков; 2) Жёлтый — все основные осколки доступны, но некоторые реплики отсутствуют; 3) Красный — некоторые основные осколки недоступны. (На данный момент некоторые данные всё ещё можно найти при выполнении запроса, поэтому лучше решить его быстро.) )
Чтобы увидеть статус индекса, перейдите по следующему доступу:Вход по гиперссылке виден.
.monitoring-es-6-2021.01.22 0 p НЕНАЗНАЧЕННЫЙ ALLOCATION_FAILED Что такое неназначенное шардинг?
Объяснение одним предложением: Нераспределённые осколки. При запуске ES, вы заметите, что осколки кластера будут выглядеть фиолетовыми, серыми и, наконец, зелёными после постоянного обновления через плагин Head.
Почему происходит неназначенное шардинг?
Если, например, вы не можете выделить шарды, если вы перевыделили количество реплик для количества узлов в кластере, осколки остаются НЕНАЗНАЧЕННЫМИ. Код ошибки: ALLOCATION_FAILED.
Возможные причины проблем с неприсвоением шардинга?
1) INDEX_CREATED: Не выделено из-за API, который создал индекс. 2) CLUSTER_RECOVERED: Не выделено из-за полного восстановления кластера. 3) INDEX_REOPENED: Не распределяется из-за открытия или закрытия индекса. 4) DANGLING_INDEX_IMPORTED: Не выделено из-за результата импорта висящего индекса. 5) NEW_INDEX_RESTORED: Не выделено из-за возвращения к новому индексу. 6) EXISTING_INDEX_RESTORED: Не выделено из-за возвращения к закрытому индексу. 7) REPLICA_ADDED: Не выделено из-за явного добавления фрагментов реплики. 8) ALLOCATION_FAILED: Не выделено из-за неудачи распределения осколков. 9) NODE_LEFT: Узел, несущий осколок, покидает кластер и не выделяется. 10) ПЕРЕИНИЦИАЛИЗАЦИЯ: Из-за невыделенных осколков при переходе от начала к инициализации (например, шардинг с теневой теневой копией). 11) REROUTE_CANCELLED: Распределить местоположение в результате явной команды unresail. 12) REALLOCATED_REPLICA: Определить, что для использования откалибровано лучшее место реплики, что приведёт к отмене существующего и нераспределения копий.
Войдите на сервер и просмотрите логи Elasticsearch (ES) следующим образом:
Elasticsearch выводит много логов, все в каталоге ES_HOME/logs. Стандартный уровень логирования — INFO. Он предоставляет умеренную информацию, но предназначен для того, чтобы не перегружать ваши логи. Вход по гиперссылке виден.
Существует большое количество ошибок, таких как:
[2021-01-21T03:33:26,435] [ПРЕДУПРЕЖДЕНИЕ] [o.e.x.m.e.l.LocalExporter] [A_OefhJ] неожиданная ошибка при индексации мониторинга, документ
org.elasticsearch.xpack.monitoring.exporter.ExportException: ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];] на org.elasticsearch.xpack.monitoring.exporter.local.LocalBulk.lambda$throwExportException$2(LocalBulk.java:128) ~[?:?] на java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_222] на java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_222] at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[?:1.8.0_222] на java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_222] на java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:1.8.0_222] at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:1.8.0_222] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:1.8.0_222] на java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_222] на java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485) ~[?:1.8.0_222] на org.elasticsearch.xpack.monitoring.exporter.local.LocalBulk.throwExportException(LocalBulk.java:129) ~[?:?] на org.elasticsearch.xpack.monitoring.exporter.local.LocalBulk.lambda$doFlush$0(LocalBulk.java:111) ~[?:?] на org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:60) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:43) ~[elasticsearch-6.5.2.jar:6.5.2] На сайте org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:85) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:81) ~[elasticsearch-6.5.2.jar:6.5.2] на сайте org.elasticsearch.action.bulk.TransportBulkAction$BulkRequestModifier.lambda$wrapActionListenerIfNeeded$0(TransportBulkAction.java:607) ~[elasticsearch-6.5.2.jar :6.5.2] на org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:60) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction$BulkOperation$1.finishHim(TransportBulkAction.java:414) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction$BulkOperation$1.onFailure(TransportBulkAction.java:409) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.support.TransportAction$1.onFailure(TransportAction.java:91) ~[elasticsearch-6.5.2.jar:6.5.2] на сайте org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.finishAsFailed(TransportReplicationAction.java:901) ~[elasticsearch-6.5.2.jar :6.5.2] на org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.handleBlockException(TransportReplicationAction.java:824) ~[ elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.handleBlockExceptions(TransportReplicationAction.java:812) ~[ elasticsearch-6.5.2.jar:6.5.2] на сайте org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.doRun(TransportReplicationAction.java:710) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-6.5.2.jar:6.5.2] На сайте org.elasticsearch.action.support.replication.TransportReplicationAction.doExecute(TransportReplicationAction.java:169) ~[elasticsearch-6.5.2.jar:6.5.2] На сайте org.elasticsearch.action.support.replication.TransportReplicationAction.doExecute(TransportReplicationAction.java:97) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:167) ~[elasticsearch-6.5.2.jar:6.5.2] на сайте org.elasticsearch.xpack.security.action.filter.SecurityActionFilter.apply(SecurityActionFilter.java:126) ~[?:?] на сайте org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:165) ~[elasticsearch-6.5.2.jar:6.5.2] на сайте org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:139) ~[elasticsearch-6.5.2.jar:6.5.2] на сайте org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:81) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction$BulkOperation.doRun(TransportBulkAction.java:384) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction.executeBulk(TransportBulkAction.java:496) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction.executeIngestAndBulk(TransportBulkAction.java:243) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction.doExecute(TransportBulkAction.java:169) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.bulk.TransportBulkAction.lambda$processBulkIndexIngestRequest$4(TransportBulkAction.java:549) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.ingest.IngestService$4.doRun(IngestService.java:417) [elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:723) [elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-6.5.2.jar:6.5.2] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222] на java.lang.Thread.run(Thread.java:748) [?:1.8.0_222] Причина: org.elasticsearch.cluster.block.ClusterBlockException: заблокировано: [FORBIDDEN/12/index только для чтения / разрешить удаление (api)]; на org.elasticsearch.cluster.block.ClusterBlocks.indexBlockedException(ClusterBlocks.java:183) ~[elasticsearch-6.5.2.jar:6.5.2] на org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.handleBlockExceptions(TransportReplicationAction.java:810) ~[ elasticsearch-6.5.2.jar:6.5.2] ... Ещё 21
После анализа было установлено, что это связано с тем, чтоДисковое пространство сервера, на котором находится ES, слишком мало, как только любой индекс с одним или несколькими осколками будет назначен узлу на диске, который хранит более 95% данных, индекс переключается в режим только чтения.
Просмотрите всю информацию о настройках индекса, чтобы посетить:Вход по гиперссылке виден., как показано на рисунке ниже:
«знание» : { "настройки" : { "index" : { "number_of_shards" : "3", "blocks" : { "read_only_allow_delete" : "true" }, «provided_name» : «знание», "creation_date" : "1576206251443", "number_of_replicas" : "0", "uuid" : "yeSIP_otQo6JQ8ooRdr8hA", "версия" : { «создан» : «6050299» } } } } read_only_allow_deleteКогда этот атрибут верен, индекс ES разрешает только чтение и удаление данных и не позволяет добавлять или изменять данные
решение
После решения проблемы с диском разверните или удалите нежелательные файлы, следуйте инструкции ниже.
Установите read_only_allow_delete на false
Отправьте запрос на put через elasticsearch-head:Вход по гиперссылке виден., как показано на рисунке ниже:
Это всё равно не может избавиться от состояния здоровья Реда,Удалить данные «.monitoring-es-6-*» напрямую, состояние становится здоровым, как показано на рисунке ниже:
(Конец)
|