Необходимо следить за здоровьем вашего кластера Elasticsearch. Постоянная проверка и мониторинг состояния вашего кластера, как в разработке, так и в производстве, позволяет быстро обнаружить и исправить ошибки.
Использование
Чтобы получить информацию о здоровье вашего кластера, сделайте GET-запрос к API здоровья, как показано в запросе ниже:
1 | curl -k https://192.168.1.100:9200/_cluster/health?pretty |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { "cluster_name" : "es-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 2, "number_of_data_nodes" : 2, "active_primary_shards" : 1, "active_shards" : 1, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "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" : 100.0 } |
Одна запись из результата запроса выше - это статус (status). В нашем примере статус кластера - Зеленый.
Elasticsearch имеет три основных статуса состояния кластера:
- Зеленый (green) - зеленый означает, что все шарды в кластере распределены.
- Желтый (yellow) - желтый статус означает, что основной шард кластера выделен, но реплики не выделены.
- Красный (red) - красный статус означает, что указанный шард не выделен в кластере.
На основании результатов API здоровья можно определить, какие действия следует предпринять для улучшения состояния кластера.
Параметры запроса Health API
Существуют различные параметры, которые можно передать конечной точке Health API. К таким параметрам относятся:
- Level - Определяет уровень детализации информации о здоровье, получаемой в результате запроса. По умолчанию это значение установлено на кластер, но может также включать: индексы и шарды.
- 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 - общее количество нераспределенных шардов.