Как следить за состоянием кластера Elasticsearch

Необходимо следить за состоянием кластера Elasticsearch. Постоянная проверка и мониторинг состояния кластера, как в разработке, так и в производстве, позволяет быстро обнаружить и устранить ошибки.

В данном руководстве показано, как проверять и отслеживать состояние кластера Elasticsearch с помощью API health.

Использование

Чтобы получить информацию о состоянии кластера, выполните GET-запрос к API health, как показано в запросе ниже:

Одним из элементов результата запроса, приведенного выше, является status (статус). В нашем примере статус кластера желтый.

Elasticsearch имеет три основных статуса состояния кластера:

  • Green - зеленый означает, что все шарды в кластере выделены.
  • Yellow - желтый статус означает, что основной шард кластера выделен, но реплики не выделены.
  • Red - красный статус означает, что указанный шард не выделен в кластере.

На основании результатов работы API-интерфейса здоровья можно определить, какие действия необходимо предпринять для исправления состояния кластера.

Параметры запроса Health API

Существуют различные параметры, которые можно передать конечной точке Health API. К таким параметрам относятся:

  • Level - определяет уровень детализации информации о здоровье, получаемой в результате запроса. По умолчанию это значение имеет значение cluster, но может также включать: indices и shards.
  • Timeout - Задает максимальное время ожидания ответа. По умолчанию установлено значение 30 с. Если указанное время истекает до того, как Elasticsearch отправит ответ, запрос не будет выполнен.
  • wait_for_nodes - Указывает запросу ожидать определенного количества узлов, которые будут доступны.
  • wait_for_status - Запрос будет ждать, пока статус кластера не изменится на указанный. Например, если задано значение green, то запрос будет ждать, пока статус не изменится с желтого или красного на зеленый. Это может быть полезно для определения того, работает ли исправление, которое вы применяете к кластеру.

Понимание тела ответа

В предыдущем примере мы получили ответ о состоянии кластера в формате JSON. Обсудим, что означает каждая из записей в ответе.

  • cluster_name  - Указывается имя указанного кластера Elasticsearch.
  • status - Состояние здоровья кластера. Либо зеленый, либо желтый, либо красный.
  • timed_out - Булево значение true или false, характеризующее получение ответа в течение максимального таймаута.
  • number_of_nodes - Общее количество узлов в указанном кластере.
  • number_of_data_nodes - Общее количество узлов, предназначенных для работы с данными.
  • active_primary_shards - общее количество активных первичных шардов в кластере.
  • active_shards - общее количество шардов в кластере. Как первичных, так и реплик.
  • relocating_shards - количество шардов, находящихся в процессе перемещения.
  • initializing_shards - шарды, находящиеся в процессе инициализации.
  • unassigned_shards - общее количество нераспределенных шардов.

Выше приведена только основная информация из ответа. Более подробную информацию можно получить из документации.

Приведенный выше запрос должен вернуть пример вывода, аналогичный приведенному ниже:

Состоянием кластера Elasticsearch

Заключение

В этой статье мы рассмотрели, как использовать API здоровья Elasticsearch для получения информации о состоянии кластера. Вы можете использовать концепции, изложенные в этом руководстве, для создания автоматического сценария на языке python, который проверяет состояние кластера в течение нескольких часов и отправляет сообщение по электронной почте, если оно красное или желтое.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий