Esta guía ilustrará cómo verificar y monitorear Elasticsearch Cluster Health utilizando la API de salud.
Uso
Para obtener la información sobre la salud de su clúster, haga una solicitud GET a la API de salud como se muestra en la solicitud a continuación:
"cluster_name": "55fe667810a347cebf1db500b702f968",
"Estado": "Amarillo",
"Timed_out": falso,
"Number_of_nodes": 3,
"Number_of_data_nodes": 2,
"Active_Primary_Shards": 109,
"Active_shards": 218,
"reubicar_shards": 0,
"Initializing_shards": 0,
"Unassigned_shards": 6,
"demandado_unassigned_shards": 0,
"Number_of_pending_tasks": 0,
"Number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"Active_Shards_Pergent_As_Number": 97.32142857142857
Una entrada del resultado de la consulta anterior es el estado. En nuestro ejemplo anterior, el estado del clúster es amarillo.
Elasticsearch tiene tres estados de salud del clúster principal:
Verde - Verde significa que se asignan todos los fragmentos en el clúster.
Amarillo - Un estado amarillo indica que se asigna el fragmento principal del clúster, pero las réplicas no están asignadas.
Rojo - El estado rojo significa que el fragmento especificado no está asignado en el clúster.
Según la salida de la API de salud, puede determinar qué acciones tomar para arreglar la salud de su clúster.
Parámetros de consulta de API de salud
Hay varios parámetros que puede pasar el punto final de la API de salud. Tales parámetros incluyen:
Nivel - Determina el nivel de detalles de la información de salud obtiene de la solicitud. Por defecto, este valor se establece en clúster pero también puede incluir: índices y fragmentos.
Se acabó el tiempo - Establece el tiempo máximo para esperar una respuesta. Establecer en 30s por defecto. Si el tiempo especificado expira antes de que ElasticSearch envíe una respuesta, la solicitud falla.
Wait_for_nodes - Le dice a la solicitud de esperar a que esté disponible un número específico de nodos.
Wait_for_status - La solicitud esperará hasta que el estado del clúster se desvíe al uno especificado. Por ejemplo, si se establece en Green, la solicitud esperará a que el estado cambie de amarillo o rojo a verde. Esto puede ser útil para determinar si la solución que está aplicando al clúster funciona.
Comprender el cuerpo de respuesta
En el ejemplo anterior, recibimos una respuesta de la salud del clúster en formato JSON. Discutamos qué implica cada una de las entradas en la respuesta.
cluster_name - Muestra el nombre del clúster de elasticsearch especificado.
Estado - El estado de salud del clúster. O: verde, amarillo o rojo.
Caducado - Un booleano verdadero o falso que describe la recepción de la respuesta dentro del valor máximo de tiempo de espera.
Number_of_nodes - El número total de nodos en el clúster especificado.
Number_of_data_nodes - El número total de nodos dedicados a los datos.
activo_primary_shards - El número total de fragmentos primarios activos en el clúster.
activo_shards - el número total de fragmentos en el clúster. Fragmentos primarios y réplicos.
reubicación_shards - Número de fragmentos que se reubican.
Initializing_shards - fragmentos que están experimentando inicialización.
sinsigned_shards - Número total de fragmentos no asignados.
Lo anterior es parte de la información esencial de la respuesta. Puede obtener más información utilizando la documentación.
Para consultar la información de un clúster de un índice, use la consulta como se muestra a continuación:
Get/_cluster/salud/kibana_sample_data_ecommerce?nivel = fragmentos
La solicitud anterior debe devolver una salida de muestra similar a la que se muestra a continuación:
Para resumir
Este artículo discutió cómo usar la API de Elasticsearch Health para obtener información sobre la salud de un clúster. Puede usar los conceptos que se enseñan en esta guía para crear un script de Python automático que verifique la salud durante unas horas y envíe un correo electrónico si es rojo o amarillo.
Gracias por leer!