Elasticsearch
кластер
Поиск…
замечания
Cluster Health предоставляет много информации о кластере, например количество выделенных («активных»), а также количество не назначенных и перемещаемых. Кроме того, он предоставляет текущее количество узлов и узлов данных в кластере, что позволяет вам опросить отсутствующие узлы (например, если вы ожидаете, что оно будет 15 , но оно отображает только 14 , то вам не хватает узла) ,
Для тех, кто знает об Elasticsearch, «назначенные» и «неназначенные» осколки могут помочь им выявить проблемы.
Наиболее распространенным полем, отмеченным в разделе « status кластера», является status , который может находиться в одном из трех состояний:
- красный
- желтый
- зеленый
Цвета каждого означают один - и только один - очень простая вещь:
- Красный означает, что у вас отсутствует хотя бы один первичный осколок.
- Отсутствующий первичный осколок означает, что индекс не может использоваться для записи (индексации) новых данных в большинстве случаев.
- Технически вы можете индексировать все первичные осколки, доступные в этом индексе, но практически это означает, что вы не можете, потому что обычно не контролируете, какой осколок получает какой-либо документ.
- Поиск по-прежнему возможен против красного кластера, но это означает, что вы получите частичные результаты, если какой-либо индекс, который вы ищете, не содержит осколков.
- В обычных условиях это просто означает, что первичный осколок выделяется (
initializing_shards). - Если узел просто покинул кластер (например, из-за того, что работающий на нем компьютер потерял электроэнергию), тогда имеет смысл, что вы временно потеряете некоторые первичные осколки.
- Любой реплика-осколок для этого первичного осколка будет продвигаться как основной осколок в этом сценарии.
- Отсутствующий первичный осколок означает, что индекс не может использоваться для записи (индексации) новых данных в большинстве случаев.
- Желтый означает, что все первичные осколки активны, но по крайней мере один осколок реплики отсутствует.
- Отсутствующая реплика влияет только на индексирование, если для параметров согласованности требуется, чтобы это повлияло на индексацию.
- По умолчанию для любой первичной версии существует только одна реплика, и индексирование может происходить с одной отсутствующей репликой.
- В обычных обстоятельствах это просто означает, что выделяется осколок реплики (
initializing_shards). - Один кластер узлов с включенными репликами всегда будет в лучшем случае желтым. Он может быть красным, если первичный осколок еще не назначен.
- Если у вас только один узел, тогда имеет смысл отключить реплики, потому что вы не ожидаете. Тогда он может быть зеленым.
- Отсутствующая реплика влияет только на индексирование, если для параметров согласованности требуется, чтобы это повлияло на индексацию.
- Зеленый означает, что все осколки активны.
- Единственное действие наложения, которое разрешено для зеленого кластера, - это
relocating_shards. - Новые индексы и, следовательно, новые осколки приведут к тому, что кластер переходит от красного к желтому до зеленого, так как каждый осколок выделяется (сначала первичный, делая его желтым, а затем реплики, если это возможно, делая его зеленым).
- В Elasticsearch 5.x и более поздних версиях новые индексы не будут красить ваш кластер, если не потребуется слишком много времени для их выделения.
- Единственное действие наложения, которое разрешено для зеленого кластера, - это
Человекочитаемое табличное кластерное здоровье с заголовками
В примере используется базовый синтаксис HTTP. Любые <#> в этом примере должны быть удалены при копировании.
Вы можете использовать API-интерфейсы _cat чтобы получить доступный для чтения, табличный вывод по различным причинам.
GET /_cat/health?v <1>
- «
?vявляется необязательным, но это означает, что вы хотите «подробный» вывод.
_cat/health существует с Elasticsearch 1.x, но вот пример его выхода из Elasticsearch 5.x:
С подробным выходом:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1469302011 15:26:51 elasticsearch yellow 1 1 45 45 0 0 44 0 - 50.6%
Человеческое чтение, табличное здоровье кластера без заголовков
В примере используется базовый синтаксис HTTP. Любые <#> в этом примере должны быть удалены при копировании.
Вы можете использовать API-интерфейсы _cat чтобы получить доступный для чтения, табличный вывод по различным причинам.
GET /_cat/health <1>
_cat/health существует с Elasticsearch 1.x, но вот пример его выхода из Elasticsearch 5.x:
Без подробного вывода:
1469302245 15:30:45 elasticsearch yellow 1 1 45 45 0 0 44 0 - 50.6%
Человеко-читаемое табличное кластерное здоровье с выбранными заголовками
В примере используется базовый синтаксис HTTP. Любые <#> в этом примере должны быть удалены при копировании.
Как и большинство API-интерфейсов _cat в Elasticsearch, API выборочно отвечает набором полей по умолчанию. Однако другие поля существуют из API, если вы хотите:
GET /_cat/health?help <1>
-
?helpзаставляет API возвращать поля (и короткие имена), а также краткое описание.
_cat/health существует с Elasticsearch 1.x, но вот пример его выхода из Elasticsearch 5.x:
Поля, доступные на момент создания этого примера:
epoch | t,time | seconds since 1970-01-01 00:00:00
timestamp | ts,hms,hhmmss | time in HH:MM:SS
cluster | cl | cluster name
status | st | health status
node.total | nt,nodeTotal | total number of nodes
node.data | nd,nodeData | number of nodes that can store data
shards | t,sh,shards.total,shardsTotal | total number of shards
pri | p,shards.primary,shardsPrimary | number of primary shards
relo | r,shards.relocating,shardsRelocating | number of relocating nodes
init | i,shards.initializing,shardsInitializing | number of initializing nodes
unassign | u,shards.unassigned,shardsUnassigned | number of unassigned shards
pending_tasks | pt,pendingTasks | number of pending tasks
max_task_wait_time | mtwt,maxTaskWaitTime | wait time of longest task pending
active_shards_percent | asp,activeShardsPercent | active number of shards in percent
Затем вы можете использовать это для печати только тех полей:
GET /_cat/health?h=timestamp,cl,status&v <1>
-
h=...определяет список полей, которые вы хотите вернуть. -
v(verbose) определяет, что вы хотите, чтобы он печатал заголовки.
Результат из экземпляра Elasticsearch 5.x:
timestamp cl status
15:38:00 elasticsearch yellow
JSON-кластерное здоровье
В примере используется базовый синтаксис HTTP. Любые <#> в этом примере должны быть удалены при копировании.
API-интерфейсы _cat часто удобны для людей, чтобы получить подробные сведения о кластере. Но вы часто хотите, чтобы последовательно анализируемый вывод использовался с программным обеспечением. В общем, API JSON предназначены для этой цели.
GET /_cluster/health
_cluster/health существует с Elasticsearch 1.x, но вот пример его вывода из Elasticsearch 5.x:
{
"cluster_name": "elasticsearch",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 45,
"active_shards": 45,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 44,
"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": 50.56179775280899
}