Устранение проблем
В данном разделе приведены возможные проблемы при установке или обновлении R-Vision SIEM и способы их решения.
Установка: ошибка конфигурации Longhorn
Версия R-Vision SIEM: 1.0.0 и выше. Должен быть установлен провайдер хранилища Longhorn.
Проблема: при установке или обновлении системы возникает ошибка Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[kube-api-access scripts data config tz]: timed out waiting for the condition
.
Причина: некорректные настройки Longhorn или на узлах кластера не запущена служба iscsid
.
Решение:
-
Проверьте настройки Longhorn. Для этого выполните следующие действия:
-
Осуществите проброс портов. Для этого выполните на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl -n longhorn-system port-forward service/longhorn-frontend <local_port>:80
bashЗдесь:
-
<local_port>
— порт на хосте, по которому будет осуществляться доступ к Longhorn.
-
-
В браузере откройте URL
localhost:<local_port>
, где<local_port>
— порт с предыдущего шага. Отобразится панель управления Longhorn. -
Чтобы просмотреть и отредактировать конфигурацию узлов (реплик) Longhorn, перейдите в раздел Node.
-
Если количество узлов Longhorn больше, чем количество рабочих узлов кластера, удалите лишние узлы. Для этого нажмите на кнопку Remove Node в выпадающем меню в столбце Operation для каждого из лишних узлов.
-
Для каждого узла Longhorn проверьте, не превышает ли объем выделенного ему пространства размер диска узла кластера:
-
В выпадающем меню в столбце Operation нажмите на кнопку Edit node and disks.
-
Если в поле Storage Reserved выделено больше пространства, чем размер диска узла кластера, уменьшите размер пространства и нажмите на кнопку Save.
Рекомендуется выделять под Longhorn 30% диска узла кластера.
-
-
-
Если исправление конфигурации Longhorn не решило проблему, проверьте, запущена ли служба
iscsid
на всех узлах кластера:-
На каждом узле кластера выполните команду:
systemctl status iscsid
bash -
Если статус службы отличается от
active (running)
, запустите ее:systemctl start iscsid
bash
-
Longhorn: ошибка файловой системы
Версия R-Vision SIEM: 1.0.0 и выше. Должен быть установлен провайдер хранилища Longhorn. Инсталляция ClickHouse находится внутри кластера.
Проблема: при работе системы с потоком событий в логах сервисов возникает ошибка, содержащая строку EXT4-fs error (device sdu)
.
Причина: конфигурация оборудования не соответствует техническим требованиям системы. Например, выделено мало ядер CPU.
Решение: приведите конфигурацию оборудования в соответствие с техническими требованиями системы.
Kafka: INVALID_REPLICATION_FACTOR
Версия R-Vision SIEM: 1.5.1 и выше.
Ошибка в поде Kafka:
INVALID_REPLICATION_FACTOR (Unable to replicate the partition 3 time(s): The target replication factor of 3 cannot be reached because only 1 broker(s) are registered.) (org.apache.kafka.controller.ReplicationControlManager)
Проявление: не добавляются записи в активный список.
Причина: при автоматическом создании топиков используется параметр репликации offsets.topic.replication.factor
со значением по умолчанию 3. При количестве реплик контроллера Kafka менее 3 возникает ошибка.
Решение: необходимо выполнить повторный деплой чарта Kafka с явным указанием параметра репликации топиков:
cd /opt/r-vision/common/helm/stateful helm upgrade -n siem kafka ./kafka -f ./kafka/custom_values.yaml --set controller.replicaCount=1 --set extraConfig="offsets.topic.replication.factor=1"
Точка входа типа Database (MS SQL): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.
Версия R-Vision SIEM: 1.10.2 и выше.
Ошибки в логе коллектора:
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.
Проявление: не поступают события в точку входа типа Database с драйвером MS SQL.
Причина: ошибка при разборе сертификата сервера БД, что приводит к невозможности установить защищенное SSL-соединение.
Решение: отключите SSL для соединения с БД. Для этого измените настройки точки входа, добавив в Адрес подключения параметры trustServerCertificate=false
и encrypt=false
.
Пример строки подключения:
jdbc:sqlserver://localhost;user=user;password=password;trustServerCertificate=false;encrypt=false
Если подобная ошибка возникает при использовании другой СУБД, кроме MS SQL, получите информацию о способах отключения SSL в официальной документации JDBC-драйвера соответствующей СУБД. |
Коллектор: vector::internal_events::codecs: Failed framing bytes. error=Unable to decode input as UTF8
Версия R-Vision SIEM: 1.10.2 и выше.
Ошибки в логе коллектора:
"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.",
Проявление: значительное падение или отсутствие EPS на коллекторе.
Причина: выбран некорректный тип точки входа, не соответствующий формату поступающих событий; например, в точку входа типа Syslog поступают события в формате JSON.
Решение: необходимо проверить конфигурацию точек входа конвейеров, установленных в коллекторе, и привести их типы в соответствие с форматом поступающих событий.
ClickHouse: не выполняются распределенные запросы (on cluster
)
Версия R-Vision SIEM: 2.0.0 и выше.
Проявление: в графическом интерфейсе не создаются новые объекты, такие как хранилища или активные списки.
В консоли кластера 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
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
Найдите в логах шардов ошибку очереди запросов:
kubectl logs -n <namespace> <shard_name> --all-containers=true | grep "DB::Exception: Cannot create status dirs"
bashЗдесь:
-
<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
bashЗдесь:
-
<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>'"
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<clickhouse_shard_name>
— имя шарда ClickHouse, на котором возникла ошибка, например,clickhouse-shard1-0
; -
<query_id>
— идентификатор запроса из сообщения об ошибке, полученный на шаге 3.
-
-
Повторно проверьте размер очереди запросов ClickHouse, выполнив команду из шага 4. Убедитесь, что размер очереди уменьшается, что подтверждает возобновление ее обработки.
-
Повторно выполните распределенный запрос.
Хранилища событий: не отображаются события за последние несколько минут
Версия R-Vision SIEM: 2.0.0 и выше.
Проявление: при просмотре хранилища событий или поиске по нему не отображаются события, поступившие в систему за последние несколько минут.
Причина: отставание времени на узлах от текущего. Получить время на узлах можно, выполнив в их консоли команду date
.
Решение: настройте синхронизацию времени на узлах согласно документации операционной системы, которая установлена на этих узлах. Например, документация по синхронизации времени в Astra Linux расположена на справочном портале разработчика ОС.
Loki: не работает loki-gateway
Версия R-Vision SIEM: ниже 2.0.0.
Проявление: ошибка при просмотре логов коллектора в интерфейсе:
Не удалось получить логи коллектора. connect ECONNREFUSED <...>
В логах пода loki-gateway
отображается ошибка:
host not found in resolver "coredns.kube-system.svc.cluster.local." in /etc/nginx/nginx.conf:33
Причина: чарт Loki по умолчанию использует имя coredns
для конфигурации разрешения имен пода loki-gateway
, однако в кластере может использоваться другое имя для сервиса DNS --- например, kube-dns
.
В системе версии 2.0.0 и выше данный параметр определяется автоматически, но при обновлении с более старой версии проблема может воспроизводиться, поэтому перед обновлением следует ее устранить.
Решение: нужно исправить конфигурацию сервиса loki-gateway
. Для этого:
-
Получите фактическое имя DNS-сервиса:
K8S_DNS_SERVICE="$(kubectl get service -n kube-system -l k8s-app=kube-dns -o 'jsonpath={.items..metadata.name}')"
bash -
Получите конфигурацию
loki-gateway
:LOKI_CONFIG="$(get cm loki-gateway -n kube-prometheus-stack -o 'jsonpath={.data.nginx\.conf}')"
bash -
Сравните имена DNS-сервисов:
echo "K8s DNS: $K8S_DNS_SERVICE" echo "Loki DNS: $(echo "$LOKI_CONFIG" | grep resolver)"
bashПример вывода имен DNS-сервисов
K8s DNS: kube-dns Loki DNS: resolver coredns.kube-system.svc.cluster.local.;
bashЕсли в выводе имена сервисов разные, перейдите к шагу 4.
-
Откройте карту конфигурации
loki-gateway
:KUBE_EDITOR=nano kubectl edit configmap/loki-gateway -n kube-prometheus-stack
bashЗамените имя DNS-сервиса
coredns
послеresolver
на значение переменнойK8S_DNS_SERVICE
. После исправления строка карты конфигурации должна принять вид:resolver <dns_name>.kube-system.svc.cluster.local.;
Здесь:
-
<dns_name>
— имя DNS-сервиса Kubernetes, полученное на шаге 3, например,kube-dns
.
-
-
Сохраните файл и перезапустите
loki-gateway
:kubectl rollout restart deployment/loki-gateway -n kube-prometheus-stack
bash
Хранилища событий аудита: не выполняется поиск или не поступают события
Версия R-Vision SIEM: 1.0.0 и выше.
Проявление: возникает внутренняя ошибка сервера при поиске в хранилище событий аудита или в хранилище событий аудита не поступают новые события.
Причина: на некоторых шардах ClickHouse отсутствует таблица, соответствующая хранилищу событий аудита.
Решение:
-
Получите ID хранилища событий (далее
<TABLE_ID>
) из его карточки. -
Получите список подов, на которых расположены шарды ClickHouse:
kubectl -n <namespace> get pods -l app.kubernetes.io/name=clickhouse
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
Получите с любого шарда имя и пароль пользователя ClickHouse, чтобы впоследствии выполнить запросы к базе данных через консольный клиент:
-
Чтобы получить имя пользователя ClickHouse, выведите подробную информацию о поде шарда:
kubectl -n <namespace> describe pod <shard_pod>
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse.Имя пользователя ClickHouse расположено в разделе
Containers → <имя контейнера ClickHouse> → Environment → CLICKHOUSE_ADMIN_USER
.
-
-
Получите пароль пользователя ClickHouse из секрета
clickhouse
:-
Получите значение секрета:
kubectl get secret clickhouse -o jsonpath='{.data}'
bashПример вывода значения секрета
{"admin-password":"ABCDEF=="}
-
Декодируйте значение секрета из base64. Результат декодирования — пароль пользователя ClickHouse.
echo <encoded_secret> | base64 --decode
bashЗдесь:
-
<encoded_secret>
— закодированное значениеadmin-password
с предыдущего шага, например,ABCDEF==
.
-
-
-
-
На каждом шарде ClickHouse проверьте, существуют ли таблицы
EventStorage_<TABLE_ID>
иEventStorage_<TABLE_ID>_local
. Если они отсутствуют, создайте их. Для этого:-
Выполните следующие запросы:
kubectl exec -n <namespace> <shard_pod> -- clickhouse-client --user <clickhouse_user> --password <clickhouse_password> 'SELECT 1 FROM "EventStorage_<TABLE_ID>" LIMIT 1'
bashkubectl exec -n <namespace> <shard_pod> -- clickhouse-client --user <clickhouse_user> --password <clickhouse_password> 'SELECT 1 FROM "EventStorage_<TABLE_ID>_local" LIMIT 1'
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<clickhouse_user>
— имя пользователя ClickHouse. -
<clickhouse_password>
— пароль пользователя ClickHouse.
-
-
Изучите результат выполнения запросов:
-
Если в результате запроса отображается
1
, значит, таблица существует на шарде. В таком случае получите запрос для ее создания, выполнив следующий запрос и скопировав его вывод:kubectl exec -n <namespace> <shard_pod> -- clickhouse-client --user <clickhouse_user> --password <clickhouse_password> 'SHOW CREATE TABLE <table_name>'
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<clickhouse_user>
— имя пользователя ClickHouse. -
<clickhouse_password>
— пароль пользователя ClickHouse. -
<table_name>
— имя таблицы.Пример 1. Пример вывода запроса для создания таблицыCREATE TABLE default.EventStorage_91bbadf5_0c77_4719_b4d0_dc6b8f298cab\n(\n `id` UUID,\n `sourceIp` IPv6,\n `tenantId` LowCardinality(String),\n `art` DateTime,\n `raw` String,\n `collectorId` LowCardinality(String),\n `timestamp` DateTime,\n `type` Enum8(\'Unspecified\' = -1, \'исходное событие\' = 0, \'нормализованное событие\' = 1, \'агрегированное событие\' = 2, \'корреляционное событие\' = 3, \'событие аудита\' = 4),\n `dvc` IPv6,\n `rt` DateTime,\n `suser` LowCardinality(String),\n `eventType` LowCardinality(String),\n `moduleKey` LowCardinality(String),\n `eventRiskLevel` Enum8(\'Unspecified\' = -1, \'DEBUG\' = 1, \'LOW\' = 2, \'MEDIUM\' = 3, \'HIGH\' = 4, \'CRITICAL\' = 5, \'FATAL\' = 6, \'ACCIDENT\' = 7),\n `data` String,\n `meta` String\n)\nENGINE = Distributed(\'{cluster}\', \'default\', \'EventStorage_91bbadf5_0c77_4719_b4d0_dc6b8f298cab_local\', rand())
sql
-
-
Если в результате запроса отображается ошибка
UNKNOWN_TABLE
, значит, таблица на шарде отсутствует. Чтобы создать ее, используйте запрос, полученный с другого шарда:kubectl exec -n <namespace> <shard_pod> -- clickhouse-client --user <clickhouse_user> --password <clickhouse_password> '<create_query>'
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<clickhouse_user>
— имя пользователя ClickHouse. -
<clickhouse_password>
— пароль пользователя ClickHouse. -
<create_query>
— запрос на создание таблицы, полученный с шарда, на котором она существует.
-
-
-
-
Получите имя пользователя PostgreSQL, выведя подробную информацию о поде PostgreSQL:
kubectl -n <namespace> describe pod postgresql-0
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.Имя пользователя ClickHouse расположено в разделе
Containers
→postgresql
→Environment
→POSTGRES_USER
.
-
-
Удалите запись о таблице, соответствующей хранилищу событий аудита, из таблицы
event_storage
БДevent_storage
PostgreSQL:kubectl exec -n <namespace> >postgresql-0 -- psql -d event_storage --username=<postgresql_user> -c "DELETE FROM event_storage WHERE table_name = 'EventStorage_<TABLE_ID>'"
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<postgresql_user>
— имя пользователя PostgreSQL.
-
-
Удалите под
audit-manager
:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.siem.audit-manager
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.При пересоздании пода
audit-manager
таблица, соответствующая хранилищу событий аудита, будет создана заново.
-
Поиск: ошибка Address family not supported by protocol (os error 97) при поисковых запросах и построении дашбордов
Версия R-Vision SIEM: 1.0.0 и выше.
Проявление: не работает поиск, не строятся графики на дашбордах.
При выполнении поискового запроса в консоли браузера возникает ошибка вида:
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.siem.event-storage-manager
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.Пример вывода имени пода
event-storage-manager
NAME READY STATUS RESTARTS AGE evo.siem.event-storage-manager-7db4bc4c99-wlqlk 1/1 Running 0 21m
bashВ примере выше полное имя пода
event-storage-manager
—evo.siem.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.siem.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
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
-
Если ключ
clickHouseConnectionInfo → port
отсутствует или номера портов в конфигурации ClickHouse и логах совпадают, удалите поды сервисовsearch
иbff
:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.siem.search kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.core.bff
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.Удаленные поды будут автоматически пересозданы в течение нескольких минут. Когда поды будут иметь статус
Running
, можно будет повторить поиск или построение графика.Если после пересоздания подов поиск и графики на дашбордах не работают, обратитесь в службу поддержки.
-
-
WebSocket: ошибки запросов
Версия R-Vision SIEM: 1.0.0 и выше.
Проявление: не работают функции, использующие протокол WebSocket: например, поиск, импорт элементов экспертизы или скачивание отчетов. В консоли браузера запросы по протоколу WebSocket завершаются с ошибками.
Причина: для сервиса API evo.siem.bff
не включены подписки WebSocket, или есть проблема с соединениями WebSocket на уровне инфраструктуры.
Решение:
-
Если версия R-Vision SIEM — 1.10.2 и выше:
-
Откройте карту конфигурации
evo.siem-bff-env
, выполнив следующую команду:kubectl -n <namespace> edit configmap evo.siem-bff-env
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
Если переменная
SIEM_BFF_GRAPHQL_ENABLE_PLAYGROUND
имеет значение"false"
, включите подписки WebSocket:-
Установите для переменной
SIEM_BFF_GRAPHQL_SUBSCRIPTION_TRANSPORT_WS_ENABLED
значение"true"
. -
Закройте карту конфигурации.
-
Удалите под сервиса
evo.siem.bff
, выполнив следующую команду:kubectl -n <namespace> delete pods -l app.kubernetes.io/name=evo.siem.bff
bashПод будет пересоздан со включенными подписками WebSocket.
-
-
-
Если версия R-Vision SIEM ниже 1.10.2, или способ выше не решил проблему, или переменная
SIEM_BFF_GRAPHQL_ENABLE_PLAYGROUND
уже имеет значение"true"
, выполните запрос с помощью любой утилиты wss, например, wscat, к следующему URL:wss://<system_url>/api/graphql
Здесь:
-
<system_url>
— URL, по которому осуществляется доступ к системе.Если попытка установить WSS-соединение завершается с ошибкой, то вероятная причина проблемы — нарушения в инфраструктуре, в которой установлена система: например, сбой сети, некорректные настройки прокси или ограничение файрвола.
-
Коллекторы: не отображаются метрики коллекторов, конвейеров и элементов конвейеров
Версия R-Vision SIEM: 1.0.0 и выше.
Проявление: в карточках коллекторов и конвейеров, а также на элементах конвейеров в режиме активной версии не отображаются метрики.
Причина: поду сервиса сбора метрик Prometheus не хватает размера тома (Persistent Volume Claim) для хранения данных.
Решение: нужно увеличить PVC для Prometheus. Для этого:
-
Получите имя PVC Prometheus, выполнив следующую команду:
kubectl -n kube-prometheus-stack describe pod prometheus-kube-prometheus-stack-prometheus-0
bashИмя 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 # ...
yamlВ этом случае имя 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>
bashЗдесь:
-
<prometheus_pvc_name>
— имя PVC Prometheus, полученное на предыдущем шаге.
-
-
Увеличьте размер PVC, отредактировав значение ключа
spec → resources → requests → storage
. Формат и единицы измерения размеров PVC приведены в документации Kubernetes.# ... spec: accessModes: - ReadWriteOnce resources: requests: # Отредактируйте значение этого ключа. storage: 15Gi # ...
yaml -
Закройте файл. Kubernetes перераспределит дисковое пространство в соответствии с обновленным PVC, и размер тома изменится через некоторое время.
Базы данных событий: не удается зарегистрировать новую базу данных
Версия R-Vision SIEM: 1.0.0 и выше. 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.conf.
-
Добавьте в файл следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
bash -
Сохраните файл.
-
Примените изменения с помощью следующей команды:
sysctl -p
bash -
Перезагрузите службу ClickHouse:
sudo service clickhouse-server restart
bash
ClickHouse: ошибка аутентификации при выполнении запросов
Версия R-Vision SIEM: 1.0.0 и выше.
Проявление: запросы к БД ClickHouse завершаются с ошибкой Authentication failed: password is incorrect, or there is no user with such name
. Это может происходить в любом разделе, где осуществляется работа с событиями, например, в разделе Поиск.
Причина: не совпадают пароли пользователей owner
, reader
или writer
в объектном хранилище Consul и в конфигурации ClickHouse.
Решение: установите единые пароли в Consul и в конфигурации ClickHouse. Для этого:
-
Получите пароли пользователей из Consul:
-
Осуществите проброс портов Consul, выполнив на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl -n <namespace> port-forward service/consul-ui <local_port>:80
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<local_port>
— порт на хосте, по которому будет осуществляться доступ к Consul.
-
-
В браузере откройте URL
localhost:<local_port>
, где<local_port>
— порт с предыдущего шага. Отобразится панель управления Consul. -
Перейдите в раздел Key/Value → siem → siem/clickhouse1 → users.
-
Откройте ключи owner, reader и writer. Их значения — пароли соответствующих пользователей.
-
-
Определите, пароль какого пользователя в конфигурации ClickHouse не совпадает с паролем в хранилище. Для этого:
-
Осуществите проброс портов ClickHouse, выполнив на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl port-forward -n <namespace> service/clickhouse <local_click_port>:8123
bashЗдесь:
-
<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
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
Получите с любого шарда имя и пароль пользователя ClickHouse, чтобы впоследствии выполнить запросы к базе данных через консольный клиент:
-
Чтобы получить имя пользователя ClickHouse, выведите подробную информацию о поде шарда:
kubectl -n <namespace> describe pod <shard_pod>
bashЗдесь:
-
<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
bashЗдесь:
-
<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>'"
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<shard_pod>
— имя пода, на котором расположен шард ClickHouse. -
<clickhouse_user>
— имя пользователя ClickHouse, полученное на шаге 4. -
<clickhouse_password>
— пароль пользователя ClickHouse, полученный на шаге 4. -
<user_to_edit>
— пользователь, пароль которого нужно изменить:owner
,reader
илиwriter
. -
<password_from_storage>
— пароль пользователя из объектного хранилища, полученный на шаге 1.
-
-
Для пользователя
writer
также следует обновить пароль в карте конфигурацииclickhouse
. Чтобы открыть ее, выполните следующую команду:kubectl -n <namespace> edit configmap clickhouse
bashУкажите пароль пользователя
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
bashЗдесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-