Перейти к основному содержимому
Версия: 4.6.X

Горячее и холодное хранилище ClickHouse

В данном разделе описана процедура создания горячего и холодного хранилища событий ClickHouse для KOMRAD Enterprise SIEM. Такая конфигурация позволяет разделить хранение данных на быстрый (SSD) и объёмный (HDD) уровни, оптимизируя производительность и стоимость хранения.

Создание RAID-массива

Для организации многоуровневого хранилища рекомендуется следующая схема дисковой подсистемы:

УровеньТип RAIDНазначение
ГорячийRAID 12 x SSD
ХолодныйRAID 104 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. Она должна содержать настроенные вами интервалы перемещения данных между хранилищами.