Este guia ilustrará como verificar e monitorar o Elasticsearch Cluster Health usando a API de saúde.
Uso
Para obter as informações sobre a saúde do seu cluster, faça uma solicitação para obter a API de saúde, conforme mostrado na solicitação abaixo:
"Cluster_name": "55FE667810A347CEBF1DB500B702F968",
"Status": "amarelo",
"timed_out": false,
"number_of_nodes": 3,
"number_of_data_nodes": 2,
"Active_Primary_Shards": 109,
"Active_shards": 218,
"realocating_shards": 0,
"Initializing_shards": 0,
"UNASSIGNED_SHARDS": 6,
"touched_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
Uma entrada do resultado da consulta acima é o status. No nosso exemplo acima, o status do cluster é amarelo.
Elasticsearch tem três principais status de saúde do cluster:
Verde - Verde significa que todos os fragmentos no cluster são alocados.
Amarelo - Um status amarelo indica que o fragmento principal do cluster é alocado, mas as réplicas não são alocadas.
Vermelho - Status vermelho significa que o fragmento especificado não é alocado no cluster.
Com base na saída da API de saúde, você pode determinar quais ações tomar para corrigir a saúde do seu cluster.
Parâmetros de consulta da API de saúde
Existem vários parâmetros que você pode passar no terminal da API de saúde. Tais parâmetros incluem:
Nível - Determina o nível de detalhes das informações de saúde obtém da solicitação. Por padrão, esse valor é definido como cluster, mas também pode incluir: índices e fragmentos.
Tempo esgotado - Define o tempo máximo para esperar por uma resposta. Definido como 30s por padrão. Se o tempo especificado expirar antes que o Elasticsearch envie de volta uma resposta, a solicitação falhará.
wait_for_nodes - Diz ao pedido de aguardar que um número específico de nós esteja disponível.
espera_for_status - A solicitação esperará até que o status do cluster se desvie para aquele especificado. Por exemplo, se definido como verde, a solicitação aguardará o status mudar de amarelo ou vermelho para verde. Isso pode ser útil para determinar se a correção que você está aplicando ao cluster funciona.
Compreendendo o corpo de resposta
No exemplo anterior, recebemos uma resposta da saúde do cluster no formato JSON. Vamos discutir o que cada uma das entradas na resposta implica.
cluster_name - Mostra o nome do cluster Elasticsearch especificado.
Status - O status de saúde do cluster. Ou: verde, amarelo ou vermelho.
Tempo esgotado - Um verdadeiro ou falso booleano que descreve o recebimento da resposta dentro do valor máximo de tempo limite.
número_of_nodes - O número total de nós no cluster especificado.
número_of_data_nodes - O número total de nós dedicados aos dados.
Active_Primary_Shards - o número total de fragmentos primários ativos no cluster.
Active_Shards - o número total de fragmentos no cluster. Cacos de réplica e réplica.
realocating_shards - Número de fragmentos em realocação.
inicializando_shards - fragmentos que estão passando por inicialização.
UNASSIGNED_SHARDS - Número total de fragmentos não alocados.
O exposto acima são algumas das informações essenciais da resposta. Você pode aprender mais usando a documentação.
Para consultar as informações de um cluster de um índice, use a consulta como mostrado abaixo:
Get/_cluster/health/kibana_sample_data_ecommerce?nível = fragmentos
A solicitação acima deve retornar uma saída de amostra semelhante à mostrada abaixo:
Para resumir
Este artigo discutiu como usar a API de saúde do Elasticsearch para obter informações sobre a saúde de um cluster. Você pode usar os conceitos ensinados neste guia para criar um script python automático que verifique a saúde por algumas horas e envia um email se vermelho ou amarelo.
Obrigado pela leitura!