Решение проблем с лимитами пользователя
Условные обозначения
$OS_HOME- домашняя директория установки OpenSearch, обычно это/app/opensearch$OSD_HOME- домашняя директория Smart Monitor Web, обычно это/app/opensearch-dashboards
Проблемы с лимитами пользователя
Лимиты пользователя — это ключевой механизм контроля потребления ресурсов, предназначенный для обеспечения стабильности Smart Monitor и справедливого распределения мощностей.
Подробная информация по настройке лимитов в Smart Monitor доступна в статье Настройка и использование лимитов.
В определенных случаях в Smart Monitor могут возникать ошибки, связанные с некорректными или неполными настройками лимитов пользователя. В частности, при выполнении поискового запроса может возникнуть ошибка Error while parsing limits: Base user limit not found in index, говорящая о проблемах с базовыми лимитами пользователя. В данной статье приведена инструкция по решению этой проблемы.

Проверка существующих лимитов
На первом этапе решения проблемы рекомендуется проверить существующие лимиты по эндпоинту base_limit. Для этого необходимо выполнить следующий запрос в Консоли разработчика:
GET _core/limits_user/base_limit
В случае, если документ с лимитами не найден по запрашиваемому эндпоинту, его необходимо добавить в системный индекс .sm_sme_limits_user. Ниже приведен пример команды, выполняющей добавление документа base_limit в индекс со значениями лимитов по умолчанию:
PUT .sm_sme_limits_user/_doc/base_limit
{
"allowed_dt_start": "now-10y",
"max_parallel_request_count": 5,
"_meta": {
"id": "base_limit"
},
"allowed_dt_end": "now",
"background_disk_quota": 5000000000,
"allowed_commands": [
"*"
],
"background_result_ttl": 86400,
"max_payload_size": 10000000000,
"max_search_running_time": 6000,
"max_command_ram_usage": 10000000000,
"max_payload_row_count": 1000000,
"max_lookup_size": 500000000,
"max_qsize": 200000
}
Пример выполнения команды в Консоли разработчика представлен на изображении ниже.

Проверка корректности конфигурации master-узлов
Так как master-узлы не предназначены для обработки поисковых запросов, важно, чтобы конфигурация ${OS_HOME}/config/opensearch.yml не содержала установки параметра node.attr.node_with_sme на master-узлах.
При значении node.attr.node_with_sme: true узел считается участвующим в работе плагина sme-re. В этом случае запрос может быть направлен на master-узел, что приводит к попытке его выполнения без необходимого окружения и, как следствие, к ошибке Base user limit not found in index.
Для устранения данной проблемы следует изменить значение параметра node.attr.node_with_sme на false, а затем выполнить перезапуск службы OpenSearch на master-узле:
systemctl restart opensearch
Проверка корректности конфигурации Smart Monitor Web
Распространенной причиной возникновения проблем с базовыми лимитами пользователя является некорректный список узлов в параметре opensearch.hosts в конфигурации ${OSD_HOME}/config/opensearch_dashboards.yml.
Важно убедиться, что в списке узлов opensearch.hosts указаны узлы только с ролью data.
Проверить роли узлов в кластере можно, выполнив следующий запрос в Консоли разработчика:
GET /_cat/nodes
В случае, если в списке opensearch.hosts содержатся узлы с ролью master, их необходимо исключить из параметра и выполнить перезапуск службы Smart Monitor Web:
systemctl restart opensearch-dashboards
Проверка установленных плагинов на master-узлах
В некоторых случаях на master-узлах могут быть установлены плагины, наличие которых вызывает конфликты при выполнении запросов и ошибку, связанную с Base user limit. Подробнее — в разделе документации Особенности установки плагинов Job Scheduler.
Проверить список плагинов можно следующей командой в Консоли разработчика:
GET _cat/plugins
При наличии плагинов sm-job-scheduler, sm-sigma, sm-job-scheduler-actions-incident и sm-job-scheduler-actions-mitre на master-узлах их необходимо удалить.
Инструкции по удалению плагинов приведены в разделе документации Удаление плагинов.
После удаления плагинов необходимо удалить пароль jobscheduler.email.pass из Keystore:
sudo -u opensearch ${OS_HOME}/bin/opensearch-keystore remove jobscheduler.email.pass
После этого необходимо перезапустить сервис OpenSearch на узлах, на которых производилось удаление плагинов:
systemctl restart opensearch
Проверка распределения шардов по узлам кластера
Важно проверить, что шарды системного индекса с лимитами распределены по всем hot-узлам кластера.
Для этого необходимо проверить наличие параметра "auto_expand_replicas": "0-all" в настройках индекса .sm_sme_limits_user. Данный параметр включает автоматическое изменение количества реплик в зависимости от количества data-узлов в кластере.
Получение настроек системного индекса .sm_sme_limits_user производится следующей командой в Консоли разработчика:
GET .sm_sme_limits_user/_settings
Пример ответа представлен ниже:
{
".sm_sme_limits_user": {
"settings": {
"index": {
"replication": {
"type": "DOCUMENT"
},
"refresh_interval": "1s",
"number_of_shards": "1",
"auto_expand_replicas": "0-all",
"provided_name": ".sm_sme_limits_user",
"max_result_window": "10000",
"creation_date": "1711975664940",
"priority": "10000",
"number_of_replicas": "0",
"uuid": "uUkJ_EJbQNSzFeLLy_-wdg",
"version": {
"created": "136327927",
"upgraded": "137237827"
}
}
}
}
}
Если параметр отсутствует в настройках, необходимо выполнить следующий запрос:
PUT .sm_sme_limits_user/_settings
{
"index": {
"auto_expand_replicas": "0-all"
}
}
После данных действий необходимо проверить, что шарды индекса .sm_sme_limits_user распределились по всем data-узлам кластера:
GET /_cat/shards/.sm_sme_limits_user?v=true
Выполнив перечисленные проверки и при необходимости применив описанные действия, можно последовательно диагностировать и устранить причины ошибки Base user limit not found in index, восстановив стабильную работу механизма лимитов и выполнение запросов в Smart Monitor.