# Настройка источника Clickhouse и сбор событий аудита БД
Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и **НЕ** является официальной рекомендацией вендора.
Для настройки базового аудита Clickhouse понадобится:
1\. Для логирования обычных запросов (в том числе grant, create, drop) включить логирование в основном файле (по умолчанию включено):
```bash
/etc/clickhouse-server/config.xml
```
в секции logger как минимум необходимо задать формат information
```xml
#########################################
information
#########################################
```
2\. Для логирования подключений, таких как:
- Login пользователя
- Failure logon
- Logout пользователя
потребуется создать отдельный файл
```bash
/etc/clickhouse-server/config.d/session_log.xml
```
с содержимым:
```xml
system
7500
```
3\. Перезапустить службу командой systemctl restart clickhouse-server
В базе system появится новая таблица со следующими колонками:
[](https://kb.kuma-community.ru/uploads/images/gallery/2025-01/s17image.png)
Создаём пользователя для подключения к БД для KUMA и выдаём ему необходимые права следующим командами (с использованием ранее настроенного аудита):
```sql
###Шаг 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:
[](https://kb.kuma-community.ru/uploads/images/gallery/2025-02/wd5image.png)
Настройка инстанса завершена, можно приступать к подключению логов в KUMA.
Итого данной View мы выводим следующие события:
- Login пользователя
- Failure logon
- Logout пользователя
- Длительный запрос в базу (более 10 минут, как пример)(условие query\_duration\_ms > '600000' в запросе )
- Большое потребление памяти при запросе (более 1 Гб, как пример)(условие memory\_usage > '1000000000')
- Создание пользователя
- Назначение прав пользователю
- Удаление пользователя
В KUMA необходимо создать коллектор с транспортом sql (плейсхолдер для Clickhouse - ?) и параметрами как на скриншоте:
[](https://kb.kuma-community.ru/uploads/images/gallery/2025-02/7Ygimage.png)
Выбираем нормализатор Clickhouse ([доступен в Community pack](https://kas.pr/kuma-ppack)), добавляем необходимые точки назначения и инсталлируем службу коллектора.
Либо, если нам **не нужны события входа в БД** можем использовать запрос только в таблицу по умолчанию:
```sql
###Шаг 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
```