ClickHouse (сбор событий аудита БД) Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и  НЕ является официальной рекомендацией вендора. Для настройки базового аудита Clickhouse понадобится: 1. Для логирования обычных запросов (в том числе grant, create, drop) включить логирование в основном файле  (по умолчанию включено): /etc/clickhouse-server/config.xml  в секции logger как минимум необходимо задать формат information ######################################### information ######################################### 2. Для логирования подключений, таких как: Login пользователя Failure logon Logout пользователя потребуется создать отдельный файл  /etc/clickhouse-server/config.d/session_log.xml  с содержимым: system session_log
7500
3. Перезапустить службу командой systemctl restart clickhouse-server В базе system появится новая таблица со следующими колонками: Создаём пользователя для подключения к БД для KUMA и выдаём ему необходимые права следующим командами (с использованием ранее настроенного аудита): ###Шаг 1. Создание пользователя для коллектора KUMA CREATE USER kuma HOST IP '10.10.10.1/32' IDENTIFIED WITH sha256_password BY 'supersecretpassword'; ####Шаг 2. Создание VIEW для вывода нескольких запросов CREATE VIEW combined_logs AS SELECT event_time AS timestamp, query_kind AS deviceAction, user AS userName, toString(initial_address) AS sourceAddress, exception AS msg, query AS requestUrl, query_duration_ms AS dcs1, memory_usage AS dcs2 FROM system.query_log WHERE query_kind IN ('Grant', 'Create', 'Drop') OR query_duration_ms > '600000' OR memory_usage > '1000000000' ORDER BY timestamp DESC UNION ALL SELECT event_time AS timestamp, type AS deviceAction, user AS userName, toString(client_address) AS sourceAddress, failure_reason AS msg, NULL AS request_url, NULL AS dcs1, NULL AS dcs2 FROM system.session_log WHERE type = 'LoginFailure' ####Шаг 3. Назначение прав на VIEW GRANT SELECT ON combined_logs TO kuma Пример как выглядит вывод VIEW: Настройка инстанса завершена, можно приступать к подключению логов в KUMA. Итого данной View мы выводим следующие события: Login пользователя Failure logon Logout пользователя Длительный запрос в базу (более 10 минут, как пример)(условие query_duration_ms > '600000' в запросе ) Большое потребление памяти при запросе (более 1 Гб, как пример)(условие memory_usage > '1000000000') Создание пользователя Назначение прав пользователю Удаление пользователя В KUMA необходимо создать коллектор с транспортом sql (плейсхолдер для Clickhouse - ?) и параметрами как на скриншоте: Выбираем нормализатор Clickhouse ( доступен в Community pack ), добавляем необходимые точки назначения и инсталлируем службу коллектора. Либо, если нам не нужны события входа в БД можем использовать запрос только в таблицу по умолчанию: ###Шаг 1. Создание пользователя для коллектора KUMA CREATE USER kuma HOST IP '10.10.10.1/32' IDENTIFIED WITH sha256_password BY 'supersecretpassword'; ####Шаг 2. Назначение прав на выполнение SELECT к system.query_log GRANT SELECT ON system.query_log TO kuma ####Шаг 3. Используем запрос для KUMA коллектора SELECT event_time AS timestamp, query_kind AS deviceAction, user AS userName, toString(initial_address) AS sourceAddress, exception AS msg, query AS requestUrl, query_duration_ms AS dcs1, memory_usage AS dcs2 FROM system.query_log WHERE query_kind IN ('Grant', 'Create', 'Drop') OR query_duration_ms > '600000' OR memory_usage > '1000000000' AND timestamp > ? ORDER BY timestamp DESC