Устранение проблем при эксплуатации системы
В данном разделе приведены возможные проблемы при работе системы и способы их решения.
ClickHouse: не выполняются распределенные запросы (on cluster)
Проявление: в графическом интерфейсе не создаются новые объекты, такие как хранилища или активные списки.
В консоли кластера ClickHouse не выполняются распределенные запросы, содержащие секцию on cluster. Например, не создается распределенная таблица test:
create table test on cluster '{cluster}' (id UUID) Engine = MergeTree order by id
Причина: сбой запроса, который привел к невозможности обработки очереди запросов.
Решение:
-
Получите список подов, на которых расположены шарды ClickHouse:
kubectl -n <namespace> get pods -l app.kubernetes.io/name=clickhouseЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Найдите в логах шардов ошибку очереди запросов:
kubectl logs -n <namespace> <shard_name> --all-containers=true | grep "DB::Exception: Cannot create status dirs"Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<shard_name>— имя шарда из списка, полученного на шаге 1, например,clickhouse-shard1-0.Пример ошибки очереди запросов:
2024.12.12 10:31:51.883015 [ 410 ] {} <Error> DDLWorker: Unexpected error (1559 times in a row), will try to restart main thread: Code: 341. DB::Exception: Cannot create status dirs for /clickhouse/task_queue/ddl/query-0007458048, most likely because someone is deleting it concurrently. (UNFINISHED), Stack trace (when copying this message, always include the lines below)
-
-
Сохраните идентификатор запроса в очереди, вызвавшего ошибку: в примере выше —
/clickhouse/task_queue/ddl/query-0007458048. -
Проверьте размер очереди запросов ClickHouse на шарде, на котором возникла ошибка:
kubectl exec -n <namespace> <clickhouse_shard_name> -- clickhouse-keeper-client -h 127.0.0.1 -p 2181 -q "ls 'clickhouse/task_queue/ddl'" 2>/dev/null | tr ' ' "\n"| wc -lЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<clickhouse_shard_name>— имя шарда ClickHouse, на котором возникла ошибка, например,clickhouse-shard1-0.
-
-
Удалите запрос из очереди ClickHouse:
kubectl exec -n <namespace> <clickhouse_shard_name> -it -- clickhouse-keeper-client -h 127.0.0.1 -p 2181 -q "rmr '<query_id>'"Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<clickhouse_shard_name>— имя шарда ClickHouse, на котором возникла ошибка, например,clickhouse-shard1-0; -
<query_id>— идентификатор запроса из сообщения об ошибке, полученный на шаге 3.
-
-
Повторно проверьте размер очереди запросов ClickHouse, выполнив команду из шага 4. Убедитесь, что размер очереди уменьшается, что подтверждает возобновление ее обработки.
-
Повторно выполните распределенный запрос.
ClickHouse: ошибка аутентификации при выполнении запросов
Проявление: запросы к БД ClickHouse завершаются с ошибкой Authentication failed: password is incorrect, or there is no user with such name. Это может происходить в любом разделе, где осуществляется работа с событиями, например, в разделе Поиск.
Причина: не совпадают пароли пользователей owner, reader или writer в объектном хранилище NATS Key/Value и в конфигурации ClickHouse.
Решение: установите единые пароли в NATS Key/Value и в конфигурации ClickHouse. Для этого:
-
Получите пароли пользователей из NATS Key/Value:
-
Подключитесь к терминалу master-узла кластера.
-
Подключитесь к терминалу пода
nats-main-box, выполнив следующую команду:kubectl exec -itn <namespace> deployment/nats-main-box -c nats-box -- shЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Получите пути к ключам, в которых хранятся пароли ClickHouse, выполнив следующую команду:
nats kv ls siemПример путей к ключам, в которых хранятся пароли ClickHouse
space-main/evo-clickhouse1/owner space-main/evo-clickhouse1/reader space-main/evo-clickhouse1/writer
-
Просмотрите пароли пользователей ClickHouse, выполнив для каждого из них команду:
nats kv get siem <path_to_key> --rawЗдесь:
-
<path_to_key>— путь к ключу, где хранится пароль.
-
-
-
Определите, пароль какого пользователя в конфигурации ClickHouse не совпадает с паролем в хранилище. Для этого:
-
Осуществите проброс портов ClickHouse, выполнив на хосте с сетевым доступом к master-узлу кластера следующую команду:
kubectl port-forward -n <namespace> service/clickhouse <local_click_port>:8123Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<local_click_port>— порт на хосте, по которому будет осуществляться доступ к ClickHouse.
-
-
В браузере откройте URL
localhost:<local_click_port>/play, где<local_click_port>— порт с предыдущего шага. Отобразится графический клиент ClickHouse. -
Выполните следующие действия для каждого из пользователей
owner,readerиwriter:-
Введите логин и пароль в поля в правом верхнем углу экрана.
-
Выполните любой запрос, например,
SELECT * FROM default.disks.Если возникает ошибка
Authentication failed: password is incorrect, or there is no user with such name. (AUTHENTICATION_FAILED), то пароль текущего пользователя необходимо исправить в таблице пользователей ClickHouse.
-
-
-
Получите список подов, на которых расположены шарды ClickHouse:
kubectl -n <namespace> get pods -l app.kubernetes.io/name=clickhouseЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Получите с любого шарда имя и пароль пользователя ClickHouse, чтобы впоследствии выполнить запросы к базе данных через консольный клиент:
-
Чтобы получить имя пользователя ClickHouse, выведите подробную информацию о поде шарда:
kubectl -n <namespace> describe pod <shard_pod>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<shard_pod>— имя пода, на котором расположен шард ClickHouse.Имя пользователя ClickHouse расположено в разделе
Containers → <имя контейнера ClickHouse> → Environment → CLICKHOUSE_ADMIN_USER.
-
-
Получите пароль пользователя ClickHouse из секрета
clickhouseи декодируйте его из base64:kubectl -n <namespace> get secret clickhouse -o jsonpath='{.data.admin-password}' | base64 -dЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
-
Для каждого пользователя, для которого возникла ошибка аутентификации, обновите пароль, выполнив следующую команду на каждом шарде:
kubectl exec -n <namespace> <shard_pod> -- clickhouse-client --user <clickhouse_user> --password <clickhouse_password> "ALTER USER <user_to_edit> IDENTIFIED BY '<password_from_storage>'"Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<shard_pod>— имя пода, на котором расположен шард ClickHouse. -
<clickhouse_user>— имя пользователя ClickHouse, полученное на шаге 4. -
<clickhouse_password>— пароль пользователя ClickHouse, полученный на шаге 4. -
<user_to_edit>— пользователь, пароль которого нужно изменить:owner,readerилиwriter. -
<password_from_storage>— пароль пользователя из объектного хранилища, полученный на шаге 1.
-
-
Для пользователя
writerтакже следует обновить пароль в ConfigMapclickhouse. Чтобы открыть ее, выполните следующую команду:kubectl -n <namespace> edit configmap clickhouseУкажите пароль пользователя
writerиз объектного хранилища как значение ключаremote_servers → default → shard → replica → password.Ключей remote_servers → default → shard → replica → passwordстолько же, сколько шардов. Необходимо установить пароль из объектного хранилища для каждого шарда. -
Удалите поды ClickHouse. Они будут пересозданы автоматически и начнут использовать новые пароли:
kubectl -n <namespace> delete pods -l app.kubernetes.io/name=clickhouseЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
NATS: переполнение стрима аудита
Проявление: внутренние ошибки при работе с различными разделами системы, в том числе Ресурсы → Коллекторы, Ресурсы → Активные списки, Поиск, Инструменты → Аудит источников.
Причина: переполнение стрима аудита NATS, сообщения из которого не вычитываются другими сервисами системы.
Проверить размер стрима можно следующим образом:
-
Получите полное имя пода сервиса
nats-main-box, выполнив следующую команду:kubectl -n <namespace> get pods -l app.kubernetes.io/instance=nats-main | grep nats-main-boxЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Пример вывода имени пода
nats-main-boxnats-main-box-658b9fc759-x9fkb 1/1 Running 2 (61d ago) 118d
В примере выше полное имя пода
nats-main-box—nats-main-box-658b9fc759-x9fkb. -
-
Просмотрите информацию о стриме, выполнив следующую команду:
kubectl exec -n <namespace> <nats_main_box_name> -- nats stream info events-streams-audit-prepared-auditЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_main_box_name>— полное имя подаnats-main-box, полученное на предыдущем шаге.
Пример вывода информации о стриме, когда он переполнен
Information for Stream events-streams-audit-prepared-audit created 2025-04-24 09:16:55 Subjects: events.streams.audit.prepared-audit Replicas: 1 Storage: File Options: Retention: Interest Acknowledgments: true Discard Policy: Old Duplicate Window: 2m0s Allows Msg Delete: true Allows Purge: true Allows Rollups: false Limits: Maximum Messages: unlimited Maximum Per Subject: unlimited Maximum Bytes: unlimited Maximum Age: unlimited Maximum Message Size: unlimited Maximum Consumers: unlimited State: Messages: 3,818,150 Bytes: 28 GiB First Sequence: 4,237,386 @ 2025-06-16 11:53:57 Last Sequence: 7,419,535 @ 2025-07-24 10:58:30 Active Consumers: 1 -
В примере выше стрим переполнен: его размер (State → Bytes) достиг 28 ГиБ. Нормальный размер стрима должен находиться около 0 КиБ, поскольку при нормальной работе системы сообщения вычитываются в режиме реального времени.
Решение: удалите контроллеры Deployment коллекторов, которые используют образ коллектора версии ниже 2.3.0. Для этого:
-
Получите список контроллеров Deployment для коллекторов в системе, выполнив следующую команду:
kubectl -n <namespace> get deployments | grep -- -collector-Здесь:
-
<namespace>— название пространства имен, в котором установлена система.
Пример вывода списка контроллеров
collector-9c7baa5d-011a-4fdb-84d9-dd577303782e-main 1/1 1 1 61d wl.db66eb9e-6a03-4919-a23a-edf8fc8a9de7-collector-main 1/1 1 1 61d
Контроллеры Deployment из списка, имя которых начинается с префикса
collector, используют версию коллектора ниже 2.3.0. В примере этоcollector-9c7baa5d-011a-4fdb-84d9-dd577303782e-main. -
-
Удалите контроллеры коллекторов, использующих версию коллектора ниже 2.3.0, выполнив для каждого из них следующую команду:
kubectl -n <namespace> delete deployment <deployment>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<deployment>— имя контроллера, полученное на предыдущем шаге.
-
-
Получите полное имя пода сервиса
nats-main-box, выполнив следующую команду:kubectl -n <namespace> get pods -l app.kubernetes.io/instance=nats-main | grep nats-main-boxЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Пример вывода имени пода
nats-main-boxnats-main-box-658b9fc759-x9fkb 1/1 Running 2 (61d ago) 118d
В примере выше полное имя пода
nats-main-box—nats-main-box-658b9fc759-x9fkb. -
-
Удалите стрим аудита из NATS, выполнив следующую команду:
kubectl exec -n <namespace> <nats_main_box_name> -- nats stream rm events-streams-audit-prepared-auditЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_main_box_name>— полное имя подаnats-main-box, полученное на предыдущем шаге.
-
Пространства и сервисы: отсутствуют метрики или логи сервиса
Проявление: в карточке сервиса в разделе Настройки → Пространства и сервисы → Сервисы не отображаются метрики CPU и RAM, используемых сервисом, или отсутствуют логи сервиса.
Возможные причины:
-
Переполнение хранилища логов
loki-minio. -
Недостаточная пропускная способность системы сбора телеметрии.
-
Превышение лимита количества лейблов логов Loki.
-
Сетевая недоступность пространства.
Решение:
| При возникновении данной проблемы не следует самостоятельно изменять конфигурацию элементов системы, перечисленных ниже. Изменения, не согласованные со службой поддержки, могут привести к нестабильной работе системы. |
-
Соберите информацию о вашем кластере:
-
Просмотрите статус пространства, в котором запущен сервис, в разделе Настройки → Пространства и сервисы → Пространства веб-интерфейса системы.
-
Просмотрите статус сервиса в разделе Настройки → Пространства и сервисы → Сервисы веб-интерфейса системы.
-
Подключитесь к терминалу master-узла кластера.
-
Выгрузите логи подов системы сбора логов Loki в файл
loki-logs.txt, выполнив следующую команду:kubectl -n kube-prometheus-stack logs -l app.kubernetes.io/component=write --all-containers=true > loki-logs.txt -
Выгрузите логи подов сервиса
vector-aggregatorв файлvector-aggregator-logs.txt, выполнив следующую команду:kubectl -n <namespace> -l app.kubernetes.io/instance=evo.space.vector-aggregator --all-containers=true > vector-aggregator-logs.txtЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Выгрузите логи подов сервиса
vector-collectorв текстовый файлvector-collector-logs.txt, выполнив следующую команду:kubectl -n <namespace> -l app.kubernetes.io/instance=evo.space.vector-collector --all-containers=true > vector-collector-logs.txtЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Получите информацию о стриме
r-space-telemetryв основном экземпляре NATS:-
Получите полное имя пода сервиса
nats-main-box, выполнив следующую команду:kubectl -n <namespace> get pods -l app.kubernetes.io/instance=nats-main | grep nats-main-boxЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Пример вывода имени пода
nats-main-boxnats-main-box-658b9fc759-x9fkb 1/1 Running 2 (61d ago) 118d
В примере выше полное имя пода
nats-main-box—nats-main-box-658b9fc759-x9fkb. -
-
Получите таблицу стримов NATS, выполнив следующую команду:
kubectl exec -n <namespace> <nats_main_box_name> -- nats s lsЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_main_box_name>— полное имя подаnats-main-box, полученное на предыдущем шаге.
-
-
Сохраните количество сообщений (
Messages) и размер (Size) стримаr-space-telemetry.
-
-
Получите информацию о стриме
r-space-telemetryв экземпляре NATS для управления пространствами:-
Получите полное имя пода сервиса
nats-space-box, выполнив следующую команду:kubectl -n <namespace> get pods -l app.kubernetes.io/instance=nats-space | grep nats-space-boxЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Пример вывода имени пода
nats-space-boxnats-space-box-646fb89d4b-st2bd 1/1 Running 1 (7d1h ago) 16d
В примере выше полное имя пода
nats-space-box—nats-space-box-646fb89d4b-st2bd. -
-
Получите таблицу стримов NATS, выполнив следующую команду:
kubectl exec -n <namespace> <nats_space_box_name> -- nats s lsЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_space_box_name>— полное имя подаnats-space-box, полученное на предыдущем шаге.
-
-
Сохраните количество сообщений (
Messages) и размер (Size) стримаr-space-telemetry.
-
-
Выгрузите ConfigMap
vector-aggregator-extravarsв файлvector-aggregator-extravars.yml, выполнив следующую команду:kubectl -n <namespace> describe configmap vector-aggregator-extravars > vector-aggregator-extravars.ymlЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Выгрузите ConfigMap
vector-collector-extravarsв файлvector-collector-extravars.yml, выполнив следующую команду:kubectl -n <namespace> describe configmap vector-collector-extravars > vector-collector-extravars.ymlЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
-
Отправьте в службу поддержки по адресу support@rvision.ru следующую информацию:
-
Технические характеристики вашего кластера:
-
Среднее число событий в секунду (EPS).
-
Количество master- и worker-узлов.
-
Технические характеристики узлов: количество ядер процессора, объем ОЗУ и хранилища, пропускная способность сетевого соединения.
-
-
Статус сервиса, для которого наблюдается проблема, и пространства, где он развернут.
-
Файлы логов:
-
loki-logs.txt. -
vector-aggregator-logs.txt. -
vector-collector-logs.txt.
-
-
Метрики стримов
r-space-telemetryвnats-mainиnats-space. -
Файлы объектов ConfigMap:
-
vector-aggregator-extravars.yml. -
vector-collector-extravars.yml.
-
-
-
Следуйте инструкциям, полученным в ответ на ваше обращение.
Работа с событиями: ошибки в логах сервисов
Проявление: при работе системы с потоком событий в логах сервисов возникает ошибка, содержащая строку EXT4-fs error (device sdu). Установлен провайдер хранилища Longhorn. Инсталляция ClickHouse находится внутри кластера.
Причина: конфигурация оборудования не соответствует техническим требованиям системы. Например, выделено мало ядер CPU.
Решение: приведите конфигурацию оборудования в соответствие с техническими требованиями системы.
Работа с событиями: не работает поиск, не строятся графики на дашбордах
Проявление: не работает поиск, не строятся графики на дашбордах.
При выполнении поискового запроса в консоли браузера возникает ошибка вида:
search::search::endpoints::simplified_search: error: Invalid state: Unable get connection info: Unable to get connection info for event storage: grpc status: code=13, message=error trying to connect: tcp open error: Address family not supported by protocol (os error 97)
Причина:
-
либо gRPC-порт инсталляции ClickHouse недоступен или не совпадает с указанным при установке системы, поэтому сервис поиска
searchне может подключиться к ClickHouse; -
либо сервис поиска не может подключиться к сервису
event-storage-manager.
Решение:
-
Получите номер gRPC-порта из значения ключа
grpc_portконфигурации ClickHouse. -
Попробуйте выполнить поиск или построить график несколько раз, чтобы в логах пода накопились сообщения об ошибках.
-
Просмотрите логи пода
event-storage-manager:-
Получите полное имя пода сервиса
event-storage-manager, выполнив следующую команду:kubectl -n <namespace> get pods -l app.kubernetes.io/name=evo.streams.event-storage-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.Пример вывода имени пода
event-storage-managerNAME READY STATUS RESTARTS AGE evo.streams.event-storage-manager-7db4bc4c99-wlqlk 1/1 Running 0 21m
В примере выше полное имя пода
event-storage-manager—evo.streams.event-storage-manager-7db4bc4c99-wlqlk.
-
-
Для просмотра логов пода
event-storage-managerиспользуйте руководство Просмотр логов пода. В качестве имени пода (<pod_name>) укажите полное имя подаevent-storage-manager, полученное на предыдущем шаге.
-
-
В логах пода может присутствовать номер gRPC-порта ClickHouse, используемого сервисом
event-storage-manager, как значение ключаclickHouseConnectionInfo → port. В примере ниже —9100:{"level":10,"time":1738668412977,"pid":1,"hostname":"evo.streams.event-storage-manager-66667479f5-74tn2","context":"EventStorageService","clickHouseConnectionInfo":{"host":"clickhouse","password":"REDACTED","port":9100,"user":"owner"},"requestId":"[missing]","msg":"connection info"}-
Если ключ
clickHouseConnectionInfo → portприсутствует в логах и номер порта отличается от номера в конфигурации ClickHouse:-
Укажите номер порта из
clickHouseConnectionInfo → portкак значение ключаgrpc_portконфигурации ClickHouse. -
Удалите поды ClickHouse. Они будут пересозданы автоматически и будут использовать новый gRPC-порт:
kubectl -n <namespace> delete pods -l app.kubernetes.io/name=clickhouseЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
-
Если ключ
clickHouseConnectionInfo → portотсутствует или номера портов в конфигурации ClickHouse и логах совпадают, удалите поды сервисовsearchиbff:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.streams.search kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.core.bffЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Удаленные поды будут автоматически пересозданы в течение нескольких минут. Когда поды будут иметь статус
Running, можно будет повторить поиск или построение графика.Если после пересоздания подов поиск и графики на дашбордах не работают, обратитесь в службу поддержки.
-
-
Диспетчер запросов: отсутствуют метрики запросов
Проявление: в разделе Инструменты → Диспетчер запросов не отображаются метрики RQL-запросов, такие как время выполнения и выделенная память. Для установки ClickHouse был использован существующий кластер.
Причина: при настройке кластера ClickHouse не были созданы служебные распределенные таблицы.
Решение: создайте таблицы в кластере ClickHouse. Для этого:
-
Получите список подов, на которых расположены шарды ClickHouse:
kubectl -n <namespace> get pods -l app.kubernetes.io/name=clickhouseЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
На любом шарде выполните следующие действия:
-
Чтобы получить имя пользователя ClickHouse, выведите подробную информацию о поде шарда:
kubectl -n <namespace> describe pod <shard_pod>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<shard_pod>— имя пода, на котором расположен шард ClickHouse.Имя пользователя ClickHouse расположено в разделе
Containers → <имя контейнера ClickHouse> → Environment → CLICKHOUSE_ADMIN_USER.
-
-
Получите пароль пользователя ClickHouse из секрета
clickhouseи декодируйте его из base64:kubectl -n <namespace> get secret clickhouse -o jsonpath='{.data.admin-password}' | base64 -dЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Подключитесь к консольному клиенту ClickHouse с учетными данными, полученными на предыдущих шагах:
kubectl -n <namespace> exec -it <shard_pod> -- clickhouse-client --user <clickhouse_user> --password <clickhouse_password>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<shard_pod>— имя пода, на котором расположен шард ClickHouse. -
<clickhouse_user>— имя пользователя ClickHouse. -
<clickhouse_password>— пароль пользователя ClickHouse.
-
-
Получите имя кластера ClickHouse, выполнив следующий запрос:
SELECT distinct cluster FROM system.clusters -
Выполните следующие запросы для создания служебных таблиц:
CREATE TABLE IF NOT EXISTS default.disks ON CLUSTER '<cluster>' AS system.disks ENGINE = Distributed('<cluster>', system, disks); CREATE TABLE IF NOT EXISTS default.storage_policies ON CLUSTER '<cluster>' AS system.storage_policies ENGINE = Distributed('<cluster>', system, storage_policies); CREATE TABLE IF NOT EXISTS default.parts ON CLUSTER '<cluster>' AS system.parts ENGINE = Distributed('<cluster>', system, parts); CREATE TABLE IF NOT EXISTS default.query_log ON CLUSTER '<cluster>' AS system.query_log ENGINE = Distributed('<cluster>', system, query_log); CREATE TABLE IF NOT EXISTS default.columns ON CLUSTER '<cluster>' AS system.columns ENGINE = Distributed('<cluster>', system, columns); CREATE TABLE IF NOT EXISTS default.parts_columns ON CLUSTER '<cluster>' AS system.parts_columns ENGINE = Distributed('<cluster>', system, parts_columns); CREATE TABLE IF NOT EXISTS default.tables ON CLUSTER '<cluster>' AS system.tables ENGINE = Distributed('<cluster>', system, tables); CREATE TABLE IF NOT EXISTS default.clusters ON CLUSTER '<cluster>' AS system.clusters ENGINE = Distributed('<cluster>', system, clusters); CREATE TABLE IF NOT EXISTS default.asynchronous_metrics ON CLUSTER '<cluster>' AS system.asynchronous_metrics ENGINE = Distributed('{cluster}', system, asynchronous_metrics);Здесь:
-
<cluster>— имя кластера, полученное на предыдущем шаге.
-
-
WebSocket: ошибки запросов
Проявление: не работают функции, использующие протокол WebSocket: например, поиск, импорт элементов экспертизы или скачивание отчетов. В консоли браузера запросы по протоколу WebSocket завершаются с ошибками.
Причина: для сервиса API evo.streams.bff не включены подписки WebSocket, или есть проблема с соединениями WebSocket на уровне инфраструктуры.
Решение:
-
Откройте ConfigMap
evo.streams-bff-env, выполнив следующую команду:kubectl -n <namespace> edit configmap evo.streams-bff-envЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Если переменная
EVO_STREAMS_BFF_GRAPHQL_ENABLE_PLAYGROUNDимеет значение"false", включите подписки WebSocket:-
Установите для переменной
EVO_STREAMS_BFF_GRAPHQL_SUBSCRIPTION_TRANSPORT_WS_ENABLEDзначение"true". -
Закройте ConfigMap.
-
Удалите под сервиса
evo.streams.bff, выполнив следующую команду:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.streams.bffПод будет пересоздан со включенными подписками WebSocket.
-
-
Если способ выше не решил проблему или переменная
EVO_STREAMS_BFF_GRAPHQL_ENABLE_PLAYGROUNDуже имеет значение"true", выполните запрос с помощью любой утилиты wss, например, wscat, к следующему URL:wss://<system_url>/api/graphqlЗдесь:
-
<system_url>— URL, по которому осуществляется доступ к системе.
-
Если после выполнения вышеперечисленных действий попытка установить WSS-соединение завершается с ошибкой, то вероятная причина проблемы — нарушения в инфраструктуре, в которой установлена система: например, сбой сети, некорректные настройки прокси или ограничение файрвола.
Коллекторы: падение или отсутствие EPS
Проявление: значительное падение EPS (количества событий в секунду) или отсутствие событий на коллекторе.
Ошибки в логе коллектора:
"line": "2024-11-28T11:39:52.739224Z ERROR source{component_kind=\"source\" component_id=4b5ae224-78fc-4c00-9614-5ecb41871f2b_eJ__wBp4vtuHe9YVoOxCm_syslog component_type=socket}: vector::internal_events::codecs: Failed framing bytes. error=Unable to decode input as UTF8 error_code=\"decoder_frame\" error_type=\"parser_failed\" stage=\"processing\" internal_log_rate_limit=true",
"line": "2024-11-28T11:39:52.753215Z ERROR source{component_kind=\"source\" component_id=4b5ae224-78fc-4c00-9614-5ecb41871f2b_eJ__wBp4vtuHe9YVoOxCm_syslog component_type=socket}: vector::topology: An error occurred that Vector couldn't handle: the task panicked and was aborted.",
Причина: выбран некорректный тип точки входа, не соответствующий формату поступающих событий; например, в точку входа типа Syslog поступают события в формате JSON.
Решение: необходимо проверить конфигурацию точек входа конвейеров, установленных в коллекторе, и привести их типы в соответствие с форматом поступающих событий.
Коллекторы: не отображаются метрики коллекторов, конвейеров и элементов конвейеров
Проявление: в карточках коллекторов и конвейеров, а также на элементах конвейеров в режиме активной версии не отображаются метрики.
Причина: поду сервиса сбора метрик Prometheus не хватает размера тома, определяемого ресурсом PVC (Persistent Volume Claim), для хранения данных.
Решение: нужно увеличить PVC для Prometheus. Для этого:
-
Получите имя PVC Prometheus, выполнив следующую команду:
kubectl -n kube-prometheus-stack describe pod prometheus-kube-prometheus-stack-prometheus-0Имя PVC Prometheus является значением ключа
Volumes → <prometheus_volume_name> → ClaimName.Пример имени PVC Prometheus
# ... Volumes: prometheus-kube-prometheus-stack-prometheus-db: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0 ReadOnly: false # ...В этом случае имя PVC Prometheus —
prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0. -
Откройте конфигурацию PVC для Prometheus, выполнив следующую команду:
kubectl -n kube-prometheus-stack edit pvc <prometheus_pvc_name>Здесь:
-
<prometheus_pvc_name>— имя PVC Prometheus, полученное на предыдущем шаге.
-
-
Увеличьте размер PVC, отредактировав значение ключа
spec → resources → requests → storage. Формат и единицы измерения размеров PVC приведены в документации Kubernetes.# ... spec: accessModes: - ReadWriteOnce resources: requests: # Отредактируйте значение этого ключа. storage: 15Gi # ... -
Закройте файл. Kubernetes перераспределит дисковое пространство в соответствии с обновленным PVC, и размер тома изменится через некоторое время.
Коллекторы: при установке нового конвейера или перезапуске коллектора не поступают события
Проявление: при установке нового конвейера в коллектор не поступают события на конвейер, или при перезапуске коллектора перестают поступать события в весь коллектор.
Причина: занят порт, который используют конвейеры коллектора.
Решение:
-
Просмотрите конфигурации каждого из включенных конвейеров, установленных в коллекторе, и сохраните список портов, используемых точками входа этих конвейеров.
-
Скопируйте идентификатор коллектора из его карточки.
-
Получите список портов узла кластера, используемых коллектором. Для этого на узле кластера выполните следующую команду:
kubectl -n <namespace> get svc | grep <collector_id>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<collector_id>— идентификатор коллектора, полученный на предыдущем шаге.
Пример вывода команды для коллектора с идентификатором
a6985d07-6400-49ef-a47c-e5c1a411f8f3wl-a6985d07-6400-49ef-a47c-e5c1a411f8f3-collector-main ClusterIP 10.233.37.47 <none> 31537/TCP,8686/TCP wl-a6985d07-6400-49ef-a47c-e5c1a411f8f3-collector-main-ports NodePort 10.233.10.154 <none> 31537:31537/TCP
Один из конвейеров, запущенных в коллекторе, использует TCP-порт 31537.
-
-
Обратите внимание на сервис
main-portsс типомNodePort:-
Если в выводе команды есть все порты, используемые конвейерами, но события все равно не поступают в систему, обратитесь в службу поддержки по адресу support@rvision.ru.
-
Если сервис
main-portsотсутствует в выводе команды, или в списке его портов нет какого-либо из портов, который используют конвейеры, выполните следующие действия:-
Получите полное имя пода коллектора, выполнив команду ниже.
Каждому поду присваивается случайный идентификатор, добавляемый к имени сервиса, для которого создается под.
kubectl -n <namespace> get pods -l app.kubernetes.io/name=wl-<collector_id>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<collector_id>— идентификатор коллектора, полученный на предыдущем шаге.
Пример вывода имени пода для коллектора с идентификатором
d712394d-90ae-41fb-b998-2dd5b580d77dNAME READY STATUS RESTARTS AGE wl.d712394d-90ae-41fb-b998-2dd5b580d77d-collector-main-59fzz62v 2/2 Running 0 3h10m
-
-
Получите список событий пода коллектора, выполнив следующую команду:
kubectl -n <namespace> events --for pod/<collector_pod_name>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<collector_pod_name>— полное имя пода коллектора, полученное на предыдущем шаге.
-
-
Если в списке событий обнаружились события, указывающие на то, что требуемый конвейером порт занят, освободите порт, используя информацию из событий, и перезапустите коллектор.
-
Если в списке событий нет событий, указывающих на то, что порты заняты, изучите правила
iptables, настроенные в системе. Возможно, они запрещают использование необходимого порта. В таком случае следует изменить или выключить эти правила и перезапустить коллектор. -
Если в результате вышеперечисленных действий события все равно не поступают в систему, обратитесь в службу поддержки по адресу support@rvision.ru.
-
-
Точка входа типа Database: загрузка драйвера прекращается по таймауту
Проявление: загрузка файла драйвера в точку входа типа Database происходит слишком долго и прекращается по таймауту.
Причина: недостаточно ресурсов сервиса evo.streams.driver-manager.
Решение: увеличьте ресурсы сервиса evo.streams.driver-manager. Для этого:
-
Подключитесь к кластеру с помощью Lens.
-
В выпадающем меню свойств кластера выберите пункт Workloads → Deployments.
-
Выберите пространство имен, в котором установлена система, в выпадающем списке Select Namespace в правой части экрана.
-
Выберите сервис
evo.streams.driver-managerиз списка. -
Нажмите на кнопку редактирования в верхней части правой панели.
-
В отобразившейся конфигурации увеличьте значения лимитов оперативной памяти и процессора в секции
resources:resources: limits: cpu: 500m memory: 300Mi requests: cpu: 25m memory: 100Mi -
Нажмите на кнопку Save. Новая конфигурация будет применена.
Точка входа типа Database (MS SQL): не поступают события
Проявление: не поступают события в точку входа типа Database с драйвером MS SQL.
Ошибки в логе коллектора:
ERROR vector::sources::database: JDBC Server unexpected stopped error=Unable to open JDBC Connection PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.
Причина: ошибка при разборе сертификата сервера БД, что приводит к невозможности установить защищенное SSL-соединение.
Решение: отключите SSL для соединения с БД. Для этого измените настройки точки входа, добавив в Адрес подключения параметры trustServerCertificate=false и encrypt=false.
Пример строки подключения:
jdbc:sqlserver://localhost;user=user;password=password;trustServerCertificate=false;encrypt=false
| Если подобная ошибка возникает при использовании другой СУБД, кроме MS SQL, получите информацию о способах отключения SSL в официальной документации JDBC-драйвера соответствующей СУБД. |
Базы данных событий: не удается зарегистрировать новую базу данных
Проявление: в интерфейсе системы не удается зарегистрировать новую базу данных событий. ClickHouse установлен в выделенном кластере (вынесенная установка). В логах сервера ClickHouse возникает ошибка вида:
Error when deleting table of event storage: All connection tries failed while connecting to ZooKeeper. nodes: [fe80::20c:29ff:fe89:fa80%ens33]:9181\nPoco::Exception. Code: 1000, e.code() = 111, Connection refused (version 24.3.2.23 (official build)), [fe80::20c:29ff:fe89:fa80%ens33]:9181\n
Причина: если во время установки системы выбрана вынесенная установка ClickHouse и указано полное доменное имя (FQDN) сервера ClickHouse, то при выполнении запроса доменное имя по умолчанию преобразуется в адрес IPv6. Это приводит к ошибке, если у сервера ClickHouse нет IPv6-адреса.
Решение: следует отключить использование IPv6 на сервере, на котором установлен ClickHouse. Для этого выполните следующие действия на сервере, на котором установлен ClickHouse:
-
В каталоге
/etc/sysctl.dсоздайте файл99-disable-ipv6.confсо следующим содержимым:net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 -
Сохраните файл.
-
Примените изменения с помощью следующей команды:
sudo sysctl --system -
Перезагрузите службу ClickHouse:
sudo service clickhouse-server restart
Хранилище событий аудита: не поступают новые события
Проявление: в хранилище событий аудита не поступают новые события.
Причина: сбой чтения событий аудита из стрима NATS.
Решение: проверьте, совпадает ли номер последней переданной последовательности в стриме и consumer (потребителе) событий аудита. Для этого:
-
Получите полное имя пода сервиса
nats-main-box, выполнив следующую команду:kubectl -n <namespace> get pods -l app.kubernetes.io/instance=nats-main | grep nats-main-boxЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Пример вывода имени пода
nats-main-boxnats-main-box-658b9fc759-x9fkb 1/1 Running 2 (61d ago) 118d
В примере выше полное имя пода
nats-main-box—nats-main-box-658b9fc759-x9fkb. -
-
Получите номер последней переданной последовательности стрима аудита
events-streams-audit-system-audit:-
Получите информацию о стриме
events-streams-audit-system-audit, выполнив следующую команду:kubectl exec -n <namespace> <nats_main_box_name> -- nats stream info events-streams-audit-system-auditЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_main_box_name>— полное имя подаnats-main-box, полученное ранее.
Пример вывода информации о стриме
events-streams-audit-system-auditInformation for Stream events-streams-audit-system-audit created 2025-06-27 01:40:48 Subjects: events.streams.audit.v1.SystemAuditEvent Replicas: 1 Storage: File Options: Retention: WorkQueue Acknowledgments: true Discard Policy: Old Duplicate Window: 2m0s Allows Msg Delete: true Allows Purge: true Allows Per-Message TTL: false Allows Rollups: false Limits: Maximum Messages: unlimited Maximum Per Subject: unlimited Maximum Bytes: unlimited Maximum Age: unlimited Maximum Message Size: unlimited Maximum Consumers: unlimited State: Host Version: 2.11.2 Required API Level: 0 hosted at level 1 Messages: 40 Bytes: 19 KiB First Sequence: 131,385 @ 2025-11-01 13:55:26 Last Sequence: 131,424 @ 2025-11-01 14:29:15 Active Consumers: 1 Number of Subjects: 1 -
-
Сохраните номер последней переданной последовательности, указанный в значении ключа
Last Sequence. В примере выше —131,424.
-
-
Получите номер последней полученной последовательности из информации о consumer
nats_system_audit_events:-
Получите информацию о consumer
nats_system_audit_events, выполнив следующую команду:kubectl exec -n <namespace> <nats_main_box_name> -- nats consumer info events-streams-audit-system-audit nats_system_audit_eventsЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_main_box_name>— полное имя подаnats-main-box, полученное ранее.
Пример вывода информации о consumer
nats_system_audit_eventsInformation for Consumer events-streams-audit-system-audit > nats_system_audit_events created 2025-10-10T11:06:44Z Configuration: Name: nats_system_audit_events Pull Mode: true Filter Subjects: events.streams.audit.v1.SystemAuditEvent Deliver Policy: All Ack Policy: Explicit Ack Wait: 30.00s Replay Policy: Instant Max Ack Pending: 1,000 Max Waiting Pulls: 512 State: Host Version: 2.11.2 Required API Level: 0 hosted at level 1 Last Delivered Message: Consumer sequence: 307,282 Stream sequence: 205,215 Last delivery: 268s ago Acknowledgment Floor: Consumer sequence: 307,184 Stream sequence: 205,175 Last Ack: 1h32m6s ago Outstanding Acks: 40 out of maximum 1,000 Redelivered Messages: 40 Unprocessed Messages: 0 Waiting Pulls: 2 of maximum 512 -
-
Сохраните номер последнего полученного сообщения, указанный в поле
Last Delivered Message, в значении ключаStream sequence. В примере выше —205,215.
-
-
Сравните номер последней переданной последовательности, полученный из информации о стриме, с номером последнего полученного сообщения. В примере выше —
205,215. Этот номер значительно больше, чем131,424. В таком случае переданные последовательности не читаются из стрима до тех пор, пока их номер не достигнетLast Delivered Message, что и приводит к отсутствию новых событий в хранилище. -
Если номер последнего полученного сообщения значительно больше номера последней переданной последовательности, выполните следующие действия:
-
Удалите consumer, выполнив следующую команду:
kubectl exec -n <namespace> <nats_main_box_name> -- nats consumer rm events-streams-audit-system-audit nats_system_audit_eventsЗдесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<nats_main_box_name>— полное имя подаnats-main-box, полученное ранее.
-
-
Удалите под
audit-manager, выполнив следующую команду:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.streams.audit-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
Consumer и под будут пересозданы автоматически, и события начнут поступать в хранилище аудита.
-
|
Если вышеперечисленные действия не решили проблему, обратитесь к следующим разделам, описывающим схожие проблемы: |
Хранилища событий: не отображаются события за последние несколько минут
Проявление: при просмотре хранилища событий или поиске по нему не отображаются события, поступившие в систему за последние несколько минут.
Причина: отставание времени на узлах от текущего. Получить время на узлах можно, выполнив в их консоли команду date.
Решение: настройте синхронизацию времени на узлах согласно документации операционной системы, которая установлена на этих узлах. Например, документация по синхронизации времени в Astra Linux расположена на справочном портале разработчика ОС.
Хранилища событий: не поступают новые события из-за превышения максимального размера события
Проявление: в хранилище событий не поступают события. В логах пода nats-space возникают ошибки, содержащие сообщение maximum payload exceeded, например:
[74] 2025/07/23 09:03:12.276656 [ERR] 10.233.112.88:45352 - cid:401631 - maximum payload exceeded: 13466645 vs 4194304
Причина: в систему поступило событие, размер которого превышает максимальный размер сообщения NATS, задаваемый параметром конфигурации max_payload.
Решение: увеличьте значение параметра max_payload. Для этого:
-
Добавьте параметр
max_payloadв объекты ConfigMapnats-main-configиnats-space-config. Для каждой из них выполните следующие действия:-
Откройте ConfigMap, выполнив следующую команду:
kubectl -n <namespace> edit configmap <configmap>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<configmap>— имя ConfigMap:nats-main-configилиnats-space-config.
-
-
По пути
data → nats.confдобавьте ключmax_payload. В качестве значения этого ключа укажите необходимый максимальный размер события в байтах.Пример ConfigMap с ключом
max_payloaddata: nats.conf: | { "http_port": 8222, "jetstream": { "domain": "main", "max_file_store": 30Gi, "max_memory_store": 0, "store_dir": "/data" }, "lame_duck_duration": "30s", "lame_duck_grace_period": "10s", "leafnodes": { "no_advertise": true, "port": 7422 }, # Добавьте данный ключ. "max_payload": 13631488, "pid_file": "/var/run/nats/nats.pid", "port": 4222, "server_name": $SERVER_NAME }
-
-
Подождите несколько минут. Когда Kubernetes применит новую конфигурацию, события начнут поступать в систему.
Если новая конфигурация не применяется в течение длительного времени, удалите поды
nats-mainиnats-space, выполнив следующие команды:kubectl -n <namespace> delete pods -l app.kubernetes.io/instance=nats-main kubectl -n <namespace> delete pods -l app.kubernetes.io/instance=nats-spaceЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Поды будут пересозданы автоматически и начнут использовать новый максимальный размер сообщения.
-
|
После изменения максимального размера сообщения вы можете получить и проанализировать выборку событий большого размера, из-за которых могла возникнуть данная проблема. Для этого:
Возможные причины появления событий большого размера:
Если вы считаете, что события большого размера появились из-за ошибки в логике работы системы, обратитесь в службу поддержки по адресу support@rvision.ru. |
Хранилище событий: не выполняется поиск или не поступают события
Проявление: возникает внутренняя ошибка сервера при поиске в хранилище событий или в хранилище не поступают новые события.
Причина: на некоторых шардах ClickHouse отсутствует таблица, соответствующая хранилищу событий.
Решение: проведите автоматическое восстановление таблиц хранилищ событий. Для этого выполните следующие действия:
-
Откройте ConfigMap сервиса
evo.streams.event-storage-manager. Для этого выполните следующую команду:kubectl -n <namespace> edit configmap evo.streams-event-storage-manager-envЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Измените значение переменной
EVO_STREAMS_EVENT_STORAGE_MANAGER_RECREATE_EVENT_STORAGESна"true".Восстановление таблиц хранилищ событий занимает некоторое время. В процессе восстановления liveness-пробы сервиса
event-storage-managerмогут завершиться с ошибкой, что приведет к циклическому перезапуску этого сервиса. Во избежание такого поведения рекомендуется увеличить интервал между liveness-пробами, выполнив следующие действия:-
Откройте конфигурацию контроллера Deployment
evo.streams.event-storage-manager, выполнив следующую команду:kubectl -n <namespace> edit deployment evo.streams.event-storage-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Скопируйте и сохраните текущие значения параметров в секции
livenessProbe.Пример содержимого секции
livenessProbelivenessProbe: grpc: port: 3000 service: '' initialDelaySeconds: 10 timeoutSeconds: 3 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 -
Увеличьте значения параметров
timeoutSeconds,periodSecondsиfailureThreshold. -
Сохраните изменения.
После перезапуска сервиса
evo.streams.event-storage-managerрекомендуется восстановить настройки liveness-проб по умолчанию. -
-
Удалите под сервиса
evo.streams.event-storage-manager, выполнив следующую команду:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.streams.event-storage-managerПод будет пересоздан автоматически.
-
Дождитесь, когда под
evo.streams.event-storage-managerперейдет в статусRunning. Инструкция по проверке статуса пода приведена в разделе Просмотр состояния подов кластера. -
Когда под перейдет в статус
Running, перейдите в веб-интерфейс системы и убедитесь, что поиск по хранилищам событий выполняется успешно и события поступают в хранилища. -
Откройте ConfigMap сервиса
evo.streams.event-storage-manager. Для этого выполните следующую команду:kubectl -n <namespace> edit configmap evo.streams-event-storage-manager-envЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Измените значение переменной
EVO_STREAMS_EVENT_STORAGE_MANAGER_RECREATE_EVENT_STORAGESобратно на"false". -
Если вы меняли интервал liveness-проб, восстановите интервал по умолчанию в конфигурации
evo.streams.event-storage-manager. Ее можно открыть, выполнив следующую команду:kubectl -n <namespace> edit deployment evo.streams.event-storage-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
Активный список: не выполняется поиск или не обновляются записи
Проявление: возникает внутренняя ошибка сервера при поиске в активном списке или записи в нем не обновляются.
Причина: на некоторых шардах ClickHouse отсутствует таблица, соответствующая активному списку.
Решение: проведите автоматическое восстановление таблиц активных списков. Для этого выполните следующие действия:
-
Откройте ConfigMap сервиса
evo.streams.active-list-manager. Для этого выполните следующую команду:kubectl -n <namespace> edit configmap evo.streams-active-list-manager-envЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Измените значение переменной
EVO_STREAMS_ACTIVE_LIST_MANAGER_RECREATE_ACTIVE_LISTSна"true".Восстановление таблиц активных списков занимает некоторое время. В процессе восстановления liveness-пробы сервиса
active-list-managerмогут завершиться с ошибкой, что приведет к циклическому перезапуску этого сервиса. Во избежание такого поведения рекомендуется увеличить интервал между liveness-пробами, выполнив следующие действия:-
Откройте конфигурацию контроллера Deployment
evo.streams.active-list-manager, выполнив следующую команду:kubectl -n <namespace> edit deployment evo.streams.active-list-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Скопируйте и сохраните текущие значения параметров в секции
livenessProbe.Пример содержимого секции
livenessProbelivenessProbe: grpc: port: 3000 service: '' initialDelaySeconds: 10 timeoutSeconds: 3 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 -
Увеличьте значения параметров
timeoutSeconds,periodSecondsиfailureThreshold. -
Сохраните изменения.
После перезапуска сервиса
evo.streams.active-list-managerрекомендуется восстановить настройки liveness-проб по умолчанию. -
-
Удалите под сервиса
evo.streams.active-list-manager, выполнив следующую команду:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.streams.active-list-managerПод будет пересоздан автоматически.
-
Дождитесь, когда под
evo.streams.active-list-managerперейдет в статусRunning. Инструкция по проверке статуса пода приведена в разделе Просмотр состояния подов кластера. -
Когда под перейдет в статус
Running, перейдите в веб-интерфейс системы и убедитесь, что поиск по активным спискам выполняется успешно и записи в них обновляются. -
Откройте ConfigMap сервиса
evo.streams.active-list-manager. Для этого выполните следующую команду:kubectl -n <namespace> edit configmap evo.streams-active-list-manager-envЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Измените значение переменной
EVO_STREAMS_ACTIVE_LIST_MANAGER_RECREATE_ACTIVE_LISTSобратно на"false". -
Если вы меняли интервал liveness-проб, восстановите интервал по умолчанию в конфигурации
evo.streams.active-list-manager. Ее можно открыть, выполнив следующую команду:kubectl -n <namespace> edit deployment evo.streams.active-list-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
Активные списки: таблица активных списков не отображается
Проявление: в разделе Ресурсы → Активные списки не отображается таблица активных списков. Вместо нее отображается сообщение о внутренней ошибке.
В логах пода ClickHouse возникает ошибка, содержащая сообщение MEMORY_LIMIT_EXCEEDED, например:
2025.07.24 12:52:17.464721 [ 234 ] {} <Error> MergeTreeBackgroundExecutor: Exception while executing background task {08280789-8eee-4778-8445-009a607256e1::202507_536822_541220_179}: Code: 241. DB::Exception: Memory limit (total) exceeded: would use 1.13 GiB (attempt to allocate chunk of 5047923 bytes), maximum: 1.08 GiB. OvercommitTracker decision: Memory overcommit isn't used. Waiting time or overcommit denominator are set to zero. (MEMORY_LIMIT_EXCEEDED), Stack trace (when copying this message, always include the lines below):
Причина: лимиты памяти для подов ClickHouse недостаточны.
Решение: увеличьте лимиты оперативной памяти для подов ClickHouse. Для этого:
-
Получите список контроллеров StatefulSet, управляющих ресурсами, которые выделяются для подов ClickHouse:
kubectl -n <namespace> get sts -l app.kubernetes.io/name=clickhouseЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Для каждого шарда увеличьте лимиты памяти:
-
Откройте конфигурацию контроллера StatefulSet, соответствующего поду:
kubectl -n <namespace> edit sts <shard_stateful_set>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<shard_stateful_set>— имя Stateful Set.
-
-
Увеличьте лимит оперативной памяти в значении ключа
resources → limits → memory:Пример содержимого секцииresources → limitsresources: limits: cpu: 300m memory: 1288490188800mПримеры возможных значений лимита памяти:
-
В мегабайтах:
2560Mi. -
В гигабайтах:
3Gi.
Список доступных единиц измерения памяти приведен в документации Kubernetes.
-
-
Сохраните изменения.
-
Поды шардов ClickHouse будут перезагружены для применения изменений, и доступ к разделу Ресурсы → Активные списки восстановится. Если этого не произошло, обратитесь в службу поддержки по адресу support@rvision.ru.
Экспертиза: не удается импортировать элементы экспертизы
Проявление: импорт некоторых элементов экспертизы завершается с ошибкой Worker terminated.
Причина: сервис evo.streams.pipeline-verification обладает недостаточными ресурсами для полной обработки импорта.
Решение:
-
Подключитесь к кластеру с помощью Lens.
-
Увеличьте значения таймаутов для сервиса
evo.streams.pipeline-verification. Для этого:-
В выпадающем меню свойств кластера выберите пункт Config → Config Maps.
-
Выберите пространство имен, в котором установлена система, в выпадающем списке Select Namespace в правой части экрана.
-
Выберите ConfigMap
evo.streams.pipeline-verification-envиз списка. -
В открывшейся панели справа увеличьте значения следующих переменных среды:
-
EVO_STREAMS_PIPELINE_VERIFICATION_ROBJECT_RUN_TEST_TIMEOUT— таймаут для выполнения тестов элемента экспертизы в миллисекундах. Значение по умолчанию:60000. -
EVO_STREAMS_PIPELINE_VERIFICATION_ROBJECT_CHECK_SCHEMA_TIMEOUT— таймаут для проверки конфигурации элемента экспертизы в миллисекундах. Значение по умолчанию:60000.
-
-
-
Увеличьте лимиты ресурсов для сервиса
evo.streams.pipeline-verification. Для этого:-
В выпадающем меню свойств кластера выберите пункт Workloads → Deployments.
-
Выберите пространство имен, в котором установлена система, в выпадающем списке Select Namespace в правой части экрана.
-
Выберите сервис
evo.streams.pipeline-verificationиз списка. -
Нажмите на кнопку редактирования в верхней части правой панели.
-
В отобразившейся конфигурации увеличьте значения лимитов оперативной памяти и процессора в секции
resources:resources: limits: cpu: 1500m memory: 600Mi requests: cpu: 100m memory: 200Mi -
Нажмите на кнопку Save. Новая конфигурация будет применена.
-
Шлюзы: шлюз регулярно перезапускается
Проявление: шлюз в системе регулярно отключается и включается заново.
Причина: не хватает оперативной памяти для работы шлюза.
Решение: увеличьте максимальный размер выделенной памяти для шлюза. Для этого:
-
Получите идентификатор шлюза из его карточки.
-
Подключитесь к терминалу master-узла кластера.
-
Получите идентификатор контроллера Deployment нужного шлюза, выполнив следующую команду:
kubectl -n <namespace> get deployment | grep <gateway_id>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<gateway_id>— идентификатор шлюза, полученный из его карточки.
Пример вывода имени контроллера шлюза
wl.5db08c79-b5f3-4f07-a7b7-49e3b2ac6202-gateway 1/1 1 1 26h
В примере выше имя контроллера шлюза —
wl.5db08c79-b5f3-4f07-a7b7-49e3b2ac6202-gateway. -
-
Откройте конфигурацию контроллера шлюза, выполнив следующую команду:
kubectl -n <namespace> edit deployment <deployment_id>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<deployment_id>— идентификатор контроллера, полученный на предыдущем шаге.
-
-
В отобразившейся конфигурации увеличьте лимит оперативной памяти в переменной окружения
GOMEMLIMIT:- name: GOMEMLIMIT value: 1536MiBРекомендуется устанавливать лимит в 75% от общего объема оперативной памяти, выделенной для кластера Kubernetes. -
Сохраните изменения в конфигурации контроллера.
| При отключении и повторном включении шлюза настройки его ресурсов и переменных окружения сбрасываются до значений по умолчанию. После перезапуска шлюза необходимо повторить вышеприведенные действия. |
Nginx: не загружаются файлы больших размеров
Проявление: не удается загрузить файл размером больше 1 МБ через веб-интерфейс системы. В инструментах разработчика в браузере отображается ошибка запроса с кодом HTTP 413.
Причина: превышен лимит на размер загружаемых файлов (по умолчанию 1 МБ).
Решение: увеличьте максимальный размер загружаемых файлов. Инструкция приведена в разделе Настройка ограничений размера загружаемых файлов.
Была ли полезна эта страница?