Korzystając z panelu elasticsearch-head do połączenia z Elasticsearch(ES), znalazłem następujący błąd:
Zdrowie klastra: czerwone (24 z 31)
Aby zobaczyć informacje o statusie, odwiedź:Logowanie do linku jest widoczne.
{ "cluster_name" : "elasticsearch", "status" : "czerwony", "timed_out": fałsz, "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
} "Status" : "Czerwony"Status to Pusty
Wtyczka głowy będzie wyświetlana w różnych kolorach
1) Zielony – najzdrowszy stan, co oznacza, że dostępne są wszystkie odłamki pierwotne i repliki; 2) Żółty – dostępne są wszystkie odłamki podstawowe, ale niektóre odłamki replik nie są dostępne; 3) Czerwony – Niektóre odłamki główne nie są dostępne. (W tym momencie podczas wykonywania zapytania można jeszcze znaleźć pewne dane, więc lepiej rozwiązać je szybko.) )
Aby zobaczyć status indeksu, wejdź:Logowanie do linku jest widoczne.
.monitoring-es-6-2021.01.22 0 p NIEPRZYPISANY ALLOCATION_FAILED Czym jest nieprzypisany sharding?
Wyjaśnienie w jednym zdaniu: Nieprzydzielone odłamki. Po uruchomieniu ES zauważysz, że odłamki klastra będą wyglądać na fioletowy, szary i na końcu zielony po ciągłym odświeżaniu przez wtyczkę Head.
Dlaczego dochodzi do nieprzypisanego shardingu?
Jeśli nie możesz przydzielić odłamków, na przykład, przealokowałeś liczbę replik odłamków względem liczby węzłów w klastrze, odłamki pozostają NIEPRZYPISANE. Kod błędu to: ALLOCATION_FAILED.
Możliwe przyczyny problemów z nieprzypisanym shardingiem?
1) INDEX_CREATED: Nie przydzielony ze względu na API, które utworzyło indeks. 2) CLUSTER_RECOVERED: Nie przydzielono z powodu pełnego odzyskiwania klastra. 3) INDEX_REOPENED: Nie przydzielone z powodu otwarcia lub zamknięcia indeksu. 4) DANGLING_INDEX_IMPORTED: Nie przydzielane ze względu na efekt importu indeksu wiszącego. 5) NEW_INDEX_RESTORED: Nie przydzielane z powodu powrotu do nowego indeksu. 6) EXISTING_INDEX_RESTORED: Nie alokowane z powodu powrotu do zamkniętego indeksu. 7) REPLICA_ADDED: Nie przydzielono z powodu wyraźnego dodania replik odłamków. 8) ALLOCATION_FAILED: Nie przydzielono z powodu awarii alokacji odłamków. 9) NODE_LEFT: Węzeł niosący odłamek opuszcza klaster i nie jest przydzielany. 10) PONOWNA INICJALIZACJA: Z powodu niealokowanych fragmentów podczas przechodzenia od początku do inicjalizacji (np. shardowanie kopiami cienia cieniowego). 11) REROUTE_CANCELLED: Deallocate w wyniku wyraźnego rozkazu odwołania (unresail). 12) REALLOCATED_REPLICA: Ustal, że lepsza lokalizacja repliki jest skalibrowana do użycia, co skutkuje anulowaniem istniejącej alokacji kopii i jej odalokowania.
Zaloguj się na serwer i przeglądaj logi Elasticsearch (ES) w następujący sposób:
Elasticsearch generuje mnóstwo logów, wszystkie w katalogu ES_HOME/logs. Domyślny poziom logowania to INFO. Dostarcza umiarkowanych informacji, ale jest zaprojektowany tak, by nie przeciążać Twoich logów. Logowanie do linku jest widoczne.
Występuje wiele błędów, takich jak:
[2021-01-21T03:33:26,435] [OSTRZEŻENIE] [o.e.x.m.e.l.LocalExporter] [A_OefhJ] nieoczekiwany błąd podczas indeksowania dokumentu monitorującego
org.elasticsearch.xpack.monitoring.exporter.ExportException: ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];] at org.elasticsearch.xpack.monitoring.exporter.local.LocalBulk.lambda$throwExportException$2(LocalBulk.java:128) ~[?:?] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_222] at 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] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_222] at 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] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_222] at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485) ~[?:1.8.0_222] at org.elasticsearch.xpack.monitoring.exporter.local.LocalBulk.throwExportException(LocalBulk.java:129) ~[?:?] at org.elasticsearch.xpack.monitoring.exporter.local.LocalBulk.lambda$doFlush$0(LocalBulk.java:111) ~[?:?] at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:60) ~[elasticsearch-6.5.2.jar:6.5.2] na org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:43) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:85) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:81) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction$BulkRequestModifier.lambda$wrapActionListenerIfNeeded$0(TransportBulkAction.java:607) ~[elasticsearch-6.5.2.jar :6.5.2] at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:60) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction$BulkOperation$1.finishHim(TransportBulkAction.java:414) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction$BulkOperation$1.onFailure(TransportBulkAction.java:409) ~[elasticsearch-6.5.2.jar:6.5.2] na org.elasticsearch.action.support.TransportAction$1.onFailure(TransportAction.java:91) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.finishAsFailed(TransportReplicationAction.java:901) ~[elasticsearch-6.5.2.jar :6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.handleBlockException(TransportReplicationAction.java:824) ~[ elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.handleBlockExceptions(TransportReplicationAction.java:812) ~[ elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.doRun(TransportReplicationAction.java:710) ~[elasticsearch-6.5.2.jar:6.5.2] na org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction.doExecute(TransportReplicationAction.java:169) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction.doExecute(TransportReplicationAction.java:97) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:167) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.xpack.security.action.filter.SecurityActionFilter.apply(SecurityActionFilter.java:126) ~[?:?] at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:165) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:139) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:81) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction$BulkOperation.doRun(TransportBulkAction.java:384) ~[elasticsearch-6.5.2.jar:6.5.2] na org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction.executeBulk(TransportBulkAction.java:496) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction.executeIngestAndBulk(TransportBulkAction.java:243) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction.doExecute(TransportBulkAction.java:169) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.bulk.TransportBulkAction.lambda$processBulkIndexIngestRequest$4(TransportBulkAction.java:549) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.ingest.IngestService$4.doRun(IngestService.java:417) [elasticsearch-6.5.2.jar:6.5.2] na org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:723) [elasticsearch-6.5.2.jar:6.5.2] na 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] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222] Spowodowane przez: org.elasticsearch.cluster.block.ClusterBlockException: zablokowane przez: [FORBIDDEN/12/index read-only / allow delete (api)]; na org.elasticsearch.cluster.block.ClusterBlocks.indexBlockedException(ClusterBlocks.java:183) ~[elasticsearch-6.5.2.jar:6.5.2] at org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.handleBlockExceptions(TransportReplicationAction.java:810) ~[ elasticsearch-6.5.2.jar:6.5.2] ... Jeszcze 21
Po analizie stwierdzono, że jest to dlatego, żeMiejsce na dysku serwera, na którym znajduje się ES, jest zbyt mało, gdy dowolny indeks z jednym lub więcej odłamkami zostanie przypisany węzłowi na dysku, który przechowuje więcej niż 95% danych, indeks zostanie zmuszony do przejścia w tryb tylko do odczytu.
Zobacz wszystkie ustawienia indeksu, które warto odwiedzić:Logowanie do linku jest widoczne., jak pokazano na poniższym rysunku:
"wiedza" : { "settings" : { "index" : { "number_of_shards" : "3", "bloki" : { "read_only_allow_delete" : "prawda" }, "provided_name" : "wiedza", "creation_date" : "1576206251443", "number_of_replicas" : "0", "uuid": "yeSIP_otQo6JQ8ooRdr8hA", "version" : { "stworzył" : "6050299" } } } } read_only_allow_deleteGdy ten atrybut jest prawdziwy, indeks ES pozwala jedynie na odczyt i usuwanie danych, a nie na dodawanie ani modyfikowanie danych
rozwiązanie
Po rozwiązaniu problemu z dyskiem, rozwiń lub usuń pliki śmieciowe, skorzystaj z poniższego poradnika.
Ustaw read_only_allow_delete na false
Dostaniemy możliwość wysłania żądania sprzedaży za pomocą elasticsearch-head:Logowanie do linku jest widoczne., jak pokazano na poniższym rysunku:
To wciąż nie może zniszczyć stanu zdrowia Reda,Usuń bezpośrednio dane ".monitoring-es-6-*", stan staje się zdrowy, jak pokazano na poniższym rysunku:
(Koniec)
|