Хранение данных в ClickHouse

SIEM-система - это высоконагруженная система, которая хранит огромные потоки логов. Это, в свою очередь, даёт большую нагрузку на железо, а железо - это деньги компании, поэтому важно уметь работать с базами данных.

Чем так хорош ClickHouse?

ClickHouse идеально подходит для хранения логов, т.к. он хранит данные в колонках и запросы на вытаскивание огромного скоупа данных выполняются за считанные секунды. Такая большая скорость позволяет быстро записать данные и быстро достать их, при этом их изменение и удаление, особенно в больших объемах, будет тяжёлой и долгой задачей для базы.

Как логи попадаю в ClickHouse

Рассмотрим на примере syslog-коллектора.

  1. Вы настроили отправку данных на syslog-коллектор согласно инструкции
  2. События попадают на порт коллектора 49000
  3. Коллектор обрабатывает данные , парсит их, сжимает, обогащает и отправляет на шину данных.
  4. События попадают в канал шины данных, а после записываются, руководит этим процессом `komrad-processor.
  5. Во время записи создаются логи транзакций и происходит сжатие событий.
    Коллектор также передаёт значение хранить ли исходное событие, в больших объемах этот параметр может повлиять на объем хранения данных.

С каким eps справится Clickhouse

ClickHouse справится с любым eps, но важно помнить, что тогда его железо должно быть соответствующим. Есть много параметров влияющих на это:

  • SSD! Для горячего хранения лучше использовать SSD, а после перемещать на холодные HDD. Данная функция реализована в релизе KOMRAD 4.5;
  • Оперативная память важнее, чем процессор;
  • В пакете поставки есть пакеты ClickHouse с поддержкой процессоров BMI и avx512;
  • Важным параметром является накопление данных или батчинг (является настройкой коллектора). При большом EPS размер батча будет играть важную роль, коллектору не надо будет паковать маленькие пачки и отправлять. Стандартный параметр - это 1000 событий в секунду, если у вас большой поток событий, это значение можно увеличить, именно эти пачки будут вставляться в ClickHouse, а из написанного выше мы помним, что ClickHouse любит делать быстро и много;
  • Расположение. Если ClickHouse вынесен отдельно, ему не надо будет бороться за ресурсы с другими сервисами.

Как ClickHouse сжимает данные?

В нашем примере syslog-коллектор, он тоже очень хорошо сжимает, не сильно отнимая CPU, для передачи в процессор, хорошо экономит трафик. Степень сжатия примерно похожая. Сжимает используя эффективную сериализацию и псевдо-колоночные оптимизации (для массива событий в пакете заголовки объявляются лишь раз) и однопоточное потоковое сжатие zstd + использует предобученные словари zstd на массивах примерных событий. На вполне реальных данных мы добивались теоретического максимума сжатия zl4 в 250 раз!

Сжимает в основном алгоритм zstd/lz4 + мы раскладываем данные по колонкам. Колонки, на самом деле, вклад незначительный вносят, т.к. мы обязаны хранить исходный текст события.

Обратите внимание, что для разных источников будет разная степень сжатия событий, например, для Windows она будет очень маленькой, т.к. у событий сложная структура.

Эта статья была полезна для вас?

  • да
  • нет
  • остались вопросы
0 проголосовавших