Перейти к основному содержимому
Версия: 5.3

Решение проблем с лимитами пользователя

Условные обозначения

  • $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
}

Пример выполнения команды в Консоли разработчика представлен на изображении ниже.

Добавление документа base_limit


Проверка корректности конфигурации 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.