Como monitorar a saúde do Elasticsearch Cluster

Como monitorar a saúde do Elasticsearch Cluster
É necessário manter a saúde do seu cluster de elasticsearch sob controle. Verificando e monitorando constantemente a saúde do seu cluster, tanto em desenvolvimento quanto de produção, permite capturar e corrigir erros rapidamente.

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!