Горячее и холодное хранилище ClickHouse
В данном разделе описана процедура создания горячего и холодного хранилища событий ClickHouse для KOMRAD Enterprise SIEM. Такая конфигурация позволяет разделить хранение данных на быстрый (SSD) и объёмный (HDD) уровни, оптимизируя производительность и стоимость хранения.
Создание RAID-массива
Для организации многоуровневого хранилища рекомендуется следующая схема дисковой подсистемы:
| Уровень | Тип RAID | Назначение |
|---|---|---|
| Горячий | RAID 1 | 2 x SSD |
| Холодный | RAID 10 | 4 x HDD (2 x RAID 1 + RAID 0) |
Для создания RAID-массивов перейдите в настройки контроллера сервера:
Settings -> RAID Management -> Logical Device Information -> Create Virtual Device
Объедините диски в соответствии с выбранной схемой.
Установка ClickHouse и PostgreSQL на отдельный диск
- Данный шаг необходимо выполнять до установки KOMRAD Enterprise SIEM.
- Стандартная утилита
fdiskне поддерживает разметку дисков объёмом более 2 ТБ. Для работы с такими дисками используйте утилитуparted.
Создание разделов на диске
Запустите утилиту parted для разметки диска:
parted /dev/sdb
Создайте таблицу разделов GPT:
mklabel gpt
Установите единицы измерения:
unit TB
Создайте первый раздел (например, 7 ТБ для ClickHouse):
mkpart primary 0 7
Создайте второй раздел (например, 7 ТБ для PostgreSQL):
mkpart primary 7 14
Просмотрите созданные разделы:
print all
Сохраните изменения и выйдите:
quit
Отформатируйте разделы в файловую систему ext4:
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
Монтирование разделов для ClickHouse и PostgreSQL
Создайте директории для баз данных:
sudo mkdir /var/lib/clickhouse
sudo mkdir /var/lib/postgresql
Смонтируйте разделы:
sudo mount /dev/sdb1 /var/lib/clickhouse
sudo mount /dev/sdb2 /var/lib/postgresql
Добавьте записи в файл /etc/fstab для автоматического монтирования при загрузке:
sudo nano /etc/fstab
Добавьте в конец файла:
/dev/sdb1 /var/lib/clickhouse ext4 defaults 1 2
/dev/sdb2 /var/lib/postgresql ext4 defaults 1 2
Перезагрузите систему:
reboot
После перезагрузки проверьте, что разделы смонтированы корректно:
mount
В выводе команды должны присутствовать строки с путями /var/lib/clickhouse и /var/lib/postgresql.
Установка KOMRAD с поддержкой горячего и холодного хранилища
Выполните установку KOMRAD Enterprise SIEM в ручном режиме. На этапе настройки ClickHouse выберите следующие параметры:
- Указать TTL для таблицы событий? [Y/n]:
Y - Создать хранилище событий 'hot/cold'? [Y/n]:
Y
Настройка политики TTL
После установки подключитесь к ClickHouse:
clickhouse-client --user=komrad --password=<пароль>
Перемещение событий из горячего в холодное хранилище через 1 день, хранение 100 дней
ALTER TABLE komrad_events.events MODIFY TTL
fromUnixTimestamp(key_time) TO VOLUME 'hot_volume',
fromUnixTimestamp(key_time) + toIntervalDay(1) TO VOLUME 'cold_volume',
fromUnixTimestamp(key_time) + toIntervalDay(100)
Перемещение событий из горячего в холодное хранилище через 10 минут, хранение 10 дней
ALTER TABLE komrad_events.events MODIFY TTL
FROM_UNIXTIME(key_time) TO VOLUME 'hot_volume',
FROM_UNIXTIME(key_time) + INTERVAL 10 minute TO VOLUME 'cold_volume',
FROM_UNIXTIME(key_time) + INTERVAL 10 day
Настройте значения интервалов TTL в соответствии с требованиями вашей организации по хранению событий.
Проверка работы хранилищ
Подключитесь к ClickHouse:
clickhouse-client --user=komrad --password=<пароль>
Проверка распределения данных по дискам
SELECT
disk_name,
count() AS part_count,
formatReadableSize(sum(bytes_on_disk)) AS total_size,
sum(rows) AS total_rows
FROM
system.parts
WHERE
table = 'events'
AND active = 1
GROUP BY
disk_name;
Холодное хранилище (cold_disk) не отображается в результатах запроса, если оно пустое. Данные появятся после того, как события будут перемещены из горячего хранилища в соответствии с настроенной политикой TTL.
Проверка настроек TTL таблицы
SHOW CREATE TABLE komrad_events.events
В результате выполнения команды найдите строку, начинающуюся с TTL. Она должна содержать настроенные вами интервалы перемещения данных между хранилищами.