Elasticsearch
Grappolo
Ricerca…
Osservazioni
Cluster Health fornisce molte informazioni sul cluster, ad esempio il numero di frammenti allocati ("attivi") e il numero di assegnazioni non assegnate e di riposizionamento. Inoltre, fornisce il numero corrente di nodi e nodi dati nel cluster, che può consentire di eseguire il polling per i nodi mancanti (ad esempio, se ci si aspetta che sia 15 , ma mostra solo 14 , allora manca un nodo) .
Per qualcuno che conosce Elasticsearch, i frammenti "assegnati" e "non assegnati" possono aiutarli a rintracciare i problemi.
Il campo più comune verificato da Cluster Health è lo status , che può essere in uno dei tre stati:
- rosso
- giallo
- verde
I colori significano ognuno - e solo uno - una cosa molto semplice:
- Il rosso indica che ti manca almeno un frammento primario.
- Un frammento primario mancante indica che un indice non può essere utilizzato per scrivere (indicizzare) nuovi dati nella maggior parte dei casi.
- Tecnicamente, puoi comunque indicizzare qualsiasi frammento primario disponibile in quell'indice, ma in pratica significa che non puoi farlo perché generalmente non controlli quale frammento riceve un determinato documento.
- La ricerca è ancora possibile contro un cluster rosso, ma significa che otterrai risultati parziali se qualsiasi indice che cerchi manca di frammenti.
- In circostanze normali, significa solo che il frammento primario è stato allocato (
initializing_shards). - Se un nodo ha appena lasciato il cluster (ad esempio, poiché la macchina è in esecuzione ha perso potenza), allora ha senso che mancherà temporaneamente alcuni frammenti primari.
- Qualsiasi frammento di replica per quel frammento primario verrà promosso come frammento primario in questo scenario.
- Un frammento primario mancante indica che un indice non può essere utilizzato per scrivere (indicizzare) nuovi dati nella maggior parte dei casi.
- Il giallo indica che tutti i frammenti primari sono attivi, ma manca almeno un frammento di replica.
- Una replica mancante influisce solo sull'indicizzazione se le impostazioni di coerenza richiedono un impatto sull'indicizzazione.
- Per impostazione predefinita, esiste una sola replica per qualsiasi primario e l'indicizzazione può avvenire con una singola replica mancante.
- In circostanze normali, significa solo che il frammento di replica è stato allocato (
initializing_shards). - Un cluster con un nodo con repliche abilitate sarà sempre giallo al meglio . Può essere rosso se non è stato ancora assegnato un frammento primario.
- Se si ha un solo nodo, allora ha senso disabilitare le repliche perché non le si prevedono. Quindi può essere verde.
- Una replica mancante influisce solo sull'indicizzazione se le impostazioni di coerenza richiedono un impatto sull'indicizzazione.
- Il verde indica che tutti i frammenti sono attivi.
- L'unica attività di shard consentita per un cluster verde è
relocating_shards. - Nuovi indici, e quindi nuovi frammenti, faranno passare il cluster da rosso a giallo a verde, dato che ogni frammento viene allocato (primariamente per primo, rendendolo giallo, quindi repliche se possibile, rendendolo verde).
- In Elasticsearch 5.xe versioni successive, i nuovi indici non renderanno il cluster rosso a meno che non impieghino troppo tempo per essere allocati.
- L'unica attività di shard consentita per un cluster verde è
Cruscotto umano leggibile, tabulare con intestazioni
Esempio utilizza la sintassi HTTP di base. Qualsiasi <#> nell'esempio dovrebbe essere rimosso quando lo si copia.
È possibile utilizzare le API _cat per ottenere un output tabulare leggibile dall'uomo per vari motivi.
GET /_cat/health?v <1>
- Il
?vè facoltativo, ma implica che si desidera un output "dettagliato".
_cat/health esiste da Elasticsearch 1.x, ma ecco un esempio del suo output da Elasticsearch 5.x:
Con output dettagliato:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1469302011 15:26:51 elasticsearch yellow 1 1 45 45 0 0 44 0 - 50.6%
Cruscotto umano leggibile, tabulare senza intestazioni
Esempio utilizza la sintassi HTTP di base. Qualsiasi <#> nell'esempio dovrebbe essere rimosso quando lo si copia.
È possibile utilizzare le API _cat per ottenere un output tabulare leggibile dall'uomo per vari motivi.
GET /_cat/health <1>
_cat/health esiste da Elasticsearch 1.x, ma ecco un esempio del suo output da Elasticsearch 5.x:
Senza output dettagliato:
1469302245 15:30:45 elasticsearch yellow 1 1 45 45 0 0 44 0 - 50.6%
Cruscotto umano leggibile, tabulare con intestazioni selezionate
Esempio utilizza la sintassi HTTP di base. Qualsiasi <#> nell'esempio dovrebbe essere rimosso quando lo si copia.
Come la maggior _cat API _cat in Elasticsearch, l'API risponde selettivamente con un set predefinito di campi. Tuttavia, altri campi esistono dall'API se li vuoi:
GET /_cat/health?help <1>
-
?helpfa sì che l'API restituisca i campi (e nomi brevi) e una breve descrizione.
_cat/health esiste da Elasticsearch 1.x, ma ecco un esempio del suo output da Elasticsearch 5.x:
Campi disponibili come: della data di creazione di questo esempio:
epoch | t,time | seconds since 1970-01-01 00:00:00
timestamp | ts,hms,hhmmss | time in HH:MM:SS
cluster | cl | cluster name
status | st | health status
node.total | nt,nodeTotal | total number of nodes
node.data | nd,nodeData | number of nodes that can store data
shards | t,sh,shards.total,shardsTotal | total number of shards
pri | p,shards.primary,shardsPrimary | number of primary shards
relo | r,shards.relocating,shardsRelocating | number of relocating nodes
init | i,shards.initializing,shardsInitializing | number of initializing nodes
unassign | u,shards.unassigned,shardsUnassigned | number of unassigned shards
pending_tasks | pt,pendingTasks | number of pending tasks
max_task_wait_time | mtwt,maxTaskWaitTime | wait time of longest task pending
active_shards_percent | asp,activeShardsPercent | active number of shards in percent
Puoi quindi usarlo per stampare solo quei campi:
GET /_cat/health?h=timestamp,cl,status&v <1>
-
h=...definisce l'elenco dei campi che vuoi vengano restituiti. -
v(verbose) definisce che si desidera che stampi le intestazioni.
L'output di un'istanza di Elasticsearch 5.x:
timestamp cl status
15:38:00 elasticsearch yellow
Cluster Health basato su JSON
Esempio utilizza la sintassi HTTP di base. Qualsiasi <#> nell'esempio dovrebbe essere rimosso quando lo si copia.
Le API _cat sono spesso convenienti per gli utenti per ottenere dettagli a colpo d'occhio sul cluster. Ma spesso si desidera un output costantemente parsabile da utilizzare con il software. In generale, le API JSON sono pensate per questo scopo.
GET /_cluster/health
_cluster/health esiste da Elasticsearch 1.x, ma ecco un esempio del suo output da Elasticsearch 5.x:
{
"cluster_name": "elasticsearch",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 45,
"active_shards": 45,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 44,
"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": 50.56179775280899
}