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!