В Elasticsearch кончился лимит шардов
this action would add shards, but this cluster currently has 1000/1000 maximum normal shards open: Elasticsearch не создаёт новые индексы, запись и сбор журналов молча останавливаются.
Что это значит
У кластера есть предел: cluster.max_shards_per_node (по умолчанию 1000) на каждый узел данных. Кластер дошёл до предела и отказывается создавать новые индексы. Существующие индексы работают, поэтому сразу этого не видно.
Чаще всего так останавливается сбор журналов: индексы создаются каждый день, и в полночь новый индекс создать не удаётся. Симптом снаружи: графики и поиск по журналам пустеют ровно с начала суток. Диск при этом может быть свободен.
Как проверить
GET _cluster/health?filter_path=active_shards,number_of_data_nodes
GET _cluster/settings?include_defaults=true&filter_path=*.cluster.max_shards_per_node
GET _cat/indices?v&s=creation.date&h=index,creation.date.string,pri,rep,docs.count,store.size
Что сделать
- Быстро вернуть запись: поднять лимит, например до 1500. Изменение применяется сразу.
PUT _cluster/settings
{"persistent": {"cluster.max_shards_per_node": 1500}}
- Убрать причину: удалить старые индексы и настроить политику хранения, чтобы они удалялись сами.
- Проверить, что политика привязана и к старым индексам. Шаблон действует только на индексы, созданные после него.
- Уменьшить число шардов: один шард на индекс для небольших суточных индексов, укрупнение мелких серий.
Поднимать лимит без уборки нельзя бесконечно: каждый шард занимает память узла. rxdoctor показывает заполнение лимита пунктом ES-02.