Come monitorare la salute del cluster di ElasticSearch

Come monitorare la salute del cluster di ElasticSearch
È necessario mantenere sotto controllo la salute del cluster Elasticsearch. Controllare e monitorare costantemente la salute del cluster, sia nello sviluppo che nella produzione, ti consente di catturare e correggere gli errori rapidamente.

Questa guida illustrerà come controllare e monitorare la salute del cluster di Elasticsearch utilizzando l'API per la salute.

Utilizzo

Per ottenere le informazioni sulla salute del tuo cluster, ottenere una richiesta di ottenere all'API di salute come mostrato nella richiesta di seguito:


"cluster_name": "55fe667810a347cebf1db500b702f968",
"Status": "Yellow",
"timed_out": false,
"numero_of_nodes": 3,
"Number_of_data_nodes": 2,
"Active_primary_shards": 109,
"Active_Shards": 218,
"Relecting_Shards": 0,
"Initializing_Shards": 0,
"UNASSEGNED_SHARDS": 6,
"ritardo_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": 97.32142857142857

Una voce dal risultato della query sopra è lo stato. Nel nostro esempio sopra, lo stato del cluster è giallo.

Elasticsearch ha tre stati di salute dei cluster principali:

Verde - Verde significa che tutti i frammenti nel cluster sono assegnati.

Giallo - Uno stato giallo indica che il frammento primario del cluster è assegnato, ma le repliche non sono allocate.

Rosso - Stato rosso significa che il frammento specificato non è assegnato nel cluster.

Sulla base dell'output dell'API per la salute, è possibile determinare quali azioni intraprendere per correggere la salute del cluster.

Parametri di query API Health

Esistono vari parametri che puoi superare l'endpoint dell'API di salute. Tali parametri includono:

Livello - Determina il livello di dettagli delle informazioni sulla salute ottengono dalla richiesta. Per impostazione predefinita, questo valore è impostato su cluster ma può anche includere: indici e frammenti.

Tempo scaduto - Imposta il tempo massimo per attendere una risposta. Impostato su 30s per impostazione predefinita. Se il tempo specificato scade prima che ElasticSearch rimanda una risposta, la richiesta non riesce.

wait_for_nodes - Dice alla richiesta di attendere che sia disponibile un numero specifico di nodi.

wait_for_status - La richiesta attende fino a quando lo stato del cluster si discosta a quello specificato. Ad esempio, se impostata su verde, la richiesta attende che lo stato cambi da giallo o rosso. Questo può essere utile per determinare se la correzione che stai applicando al cluster funziona.

Comprendere il corpo della risposta

Nell'esempio precedente, abbiamo ricevuto una risposta della salute del cluster in formato JSON. Discutiamo di cosa comporta ciascuna delle voci nella risposta.

cluster_name - Mostra il nome del cluster ElasticSearch specificato.

Stato - Lo stato di salute del cluster. O: verde, giallo o rosso.

Fuori tempo - Un vero o falso booleano che descrive la ricezione della risposta entro il valore di timeout massimo.

Number_of_nodes - Il numero totale di nodi nel cluster specificato.

NUMBER_OF_DATA_NODES - Il numero totale di nodi dedicati ai dati.

Active_primary_shards - Il numero totale di frammenti primari attivi nel cluster.

Active_Shards - il numero totale di frammenti nel cluster. Frammenti sia primari che replica.

RELOCATING_SHARDS - Numero di frammenti sottoposti a trasferimento.

Initializing_Shards - frammenti sottoposti all'inizializzazione.

UNASSEGNED_SHARDS - Numero totale di frammenti non allocati.

Quanto sopra sono alcune delle informazioni essenziali dalla risposta. Puoi saperne di più usando la documentazione.

Per interrogare le informazioni di un cluster di un indice, utilizzare la query come mostrato di seguito:

Get/_cluster/Health/kibana_sample_data_ecommerce?Livello = frammenti

La richiesta di cui sopra deve restituire un output di esempio simile a quello mostrato di seguito:

Riassumere

Questo articolo ha discusso su come utilizzare l'API di Elasticsearch Health per ottenere informazioni sulla salute di un cluster. Puoi utilizzare i concetti insegnati in questa guida per creare uno script Python automatico che controlla la salute per alcune ore e invia un'e -mail se rosso o giallo.

Grazie per aver letto!