Работа с хранилищами событий

Данный раздел описывает процесс работы с хранилищами событий в системе. Работа осуществляется в разделе Ресурсы → Хранилища событий веб-интерфейса системы.

Раздел доступен администраторам, пользователям, которые имеют соответствующее разрешение в составе своих ролей, а также учетным записям со статусом Суперадминистратор.

О хранилищах событий

Хранилище событий используется для хранения событий, поступивших в систему и обработанных коллектором. Оно представляет собой таблицу в БД событий. Формат хранилища определяется его моделью данных.

В системе доступны хранилища событий следующих типов:

  • Системные хранилища событий — создаются системой автоматически. В них нельзя изменять название и описание, а также их нельзя удалять.

    Системные хранилища не могут быть использованы в качестве хранилищ событий для конечных точек и сервиса оповещений.
  • Пользовательские хранилища событий — создаются вручную.

Существует системное хранилище событий аудита, предназначенное для хранения событий сервиса аудита. Это хранилище построено на системной БД событий аудита.

Репликация данных в хранилищах событий

Для хранилищ событий в системе используются реплицируемые таблицы. Это означает, что для данных в хранилищах автоматически создаются копии (реплики) на узлах кластера ClickHouse. Такой механизм обеспечивает отказоустойчивость работы хранилищ и повышает надежность хранения данных.

Первичный и сортировочный ключи в хранилищах событий

Для обеспечения высокой скорости чтения и эффективного сжатия данных в хранилище используются первичный и сортировочный ключи.

Сортировочный ключ (ORDER BY) определяет физический порядок хранения в частях данных (партициях) на диске. Например, если сортировочный ключ задан как sourceIp, id, то все данные физически сортируются сначала по sourceIp, а затем — по id. Это позволяет оптимизировать использование ресурсов при обработке запросов по указанным полям, считывая только необходимые диапазоны.

Первичный ключ (PRIMARY KEY) задает разреженный индекс, указывающий на первую строку каждой гранулы — блока записей, как правило, по 8192 строки. Например, если первичный ключ задан как sourceIp, id, то индекс сохраняет соответствующие пары значений для каждой гранулы. Это позволяет отбрасывать целые блоки данных при обработке запросов, не читая их с диска.

На основе сортировочного и первичного ключа определяется порядок полей в итоговой сортировке: сначала идут поля первичного ключа, затем — поля сортировочного ключа.

Например, если первичный ключ определен как timestamp, а сортировочный — как sourceIp, id, то итоговая сортировка осуществляется в следующем порядке:

  1. timestamp;

  2. sourceIp;

  3. id.

Настройка первичного и сортировочного ключей осуществляется при создании хранилища событий.

Движки таблиц в хранилищах событий

Логика хранения и обработки данных в хранилищах определяется используемыми движками таблиц ClickHouse. Хранилища событий поддерживают следующие движки:

  • MergeTree — базовый движок семейства MergeTree. Он обеспечивает быструю запись и эффективное хранение данных, физически упорядочивая их согласно сортировочному и первичному ключам.

    Данный движок не выполняет дополнительную обработку строк. Если в таблицу поступают дублирующиеся данные, то они не удаляются и сохраняются как отдельные записи.

    Более подробную информацию о MergeTree можно найти в официальной документации ClickHouse.
  • ReplacingMergeTree — движок семейства MergeTree, позволяющий автоматически очищать таблицу от дублирующихся записей данных. Для сравнения записей используется сортировочный ключ. Если у записей совпадает сортировочный ключ, они считаются дубликатами. В процессе слияния (merge) движок оставляет только последнюю по времени или по версии из таких записей и удаляет остальные.

    Удаление дубликатов происходит асинхронно, поэтому до операции слияния движок не гарантирует отсутствие дубликатов в таблице. Операция слияния в системе выполняется автоматически при выполнении поисковых запросов в разделе Поиск или в виджетах событий.

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

    Более подробную информацию о ReplacingMergeTree можно найти в официальной документации ClickHouse.

Выбор и настройка движка таблиц осуществляется при создании хранилища событий.

Интерфейс раздела

Панель инструментов раздела включает в себя следующие компоненты:

  • Кнопка Создать (plus) позволяет создать новое хранилище событий.

  • Поле Поиск предназначено для быстрого поиска хранилищ событий в отображаемом списке по названию.

В рабочей области раздела отображается таблица имеющихся хранилищ событий. Таблица содержит следующие столбцы:

  • Название — название хранилища событий, используемое для его идентификации в системе.

  • Описание — описание хранилища событий.

  • База данных событий — БД событий, в которой содержится хранилище.

  • Модель события — модель события, используемая хранилищем.

  • Событий в хранилище — количество событий в хранилище.

  • Дата создания — дата и время создания хранилища событий.

  • Дата изменения — дата и время последнего изменения хранилища событий.

Слева от записи хранилища в таблице могут отображаться следующие иконки:

  • alert yellow — если в томах хранилища заканчивается свободное место.

  • attention red — если не удается определить, заканчивается ли свободное место в томах хранилища.

При работе с таблицей хранилищ событий доступны следующие операции:

  • Поиск хранилищ по полю Название.

  • Сортировка хранилищ по полям Название, Дата создания и Дата изменения.

  • Настройка отображения таблицы.

При выборе конкретного хранилища в правой части рабочей области отображается его карточка с детальной информацией.

Работа с хранилищем событий

Доступные операции над хранилищами событий:

Создание хранилища событий

Чтобы создать хранилище событий:

  1. Перейдите в раздел Ресурсы → Хранилища событий. Система отобразит сведения об имеющихся хранилищах событий.

  2. Нажмите на кнопку Создать (plus). Отобразится окно создания хранилища событий.

  3. Задайте настройки последовательно на следующих вкладках:

    • Информация;

    • Параметры ключей;

    • Настройки хранения.

    • Информация

    • Параметры ключей

    • Настройки хранения

    Задайте следующие настройки:

    • Название — название хранилища событий. Название должно быть уникальным в рамках системы.

    • Описание (опционально) — описание хранилища событий.

    • База данных событий — БД событий, в которую требуется поместить хранилище.

    • Модель события — модель события, по которой будет определяться набор полей для событий в хранилище.

    • Движок — движок ClickHouse, который определяет логику хранения и обработки данных:

      • MergeTree;

      • ReplacingMergeTree.

      Выбор движка становится доступным после выбора модели события.
    • ver (опционально) — поле модели события, по значению которого будет определяться актуальная версия записи. Неактуальное значение при операции слияния будет удалено.

      На выбор доступны только поля модели события, которые не могут хранить значения типа null и имеют тип данных UInt, DateTime или DateTime64.

      • Если указано поле типа UInt, то актуальной считается та запись, для которой значение данного поля наибольшее.

      • Если указано поле типа DateTime или DateTime64, то актуальной считается та запись, для которой дата в данном поле наиболее поздняя.

      Поле доступно при выборе движка ReplacingMergeTree.

      Если поле оставить незаполненным, то актуальная версия записи среди дубликатов будет определяться внутренними механизмами ClickHouse.

    • is_deleted (опционально) — поле модели события, хранящее метку удаления записи. Работает только при заполнении поля ver.

      На выбор доступны только поля модели события, которые не могут хранить значения типа null и имеют тип данных UInt8. Удаление записи зависит от значения поля:

      • 0 — для записи отсутствует метка удаления и удалять запись не требуется.

      • 1 — запись помечена как удаленная и ее необходимо удалить из хранилища.

      • Значение, отличное от 0 и 1 — при добавлении записи в хранилище произойдет ошибка и запись не будет добавлена.

      Поле доступно при выборе движка ReplacingMergeTree.

    • Параметры ключей — переключение режима настройки первичного и сортировочного ключей:

      • Если переключатель неактивен, то в качестве первичного и сортировочного ключей используется поле timestamp.

      • Если переключатель активен, в окне создания хранилища становится доступной вкладка Настройки хранения для ручной настройки ключей.

    Вкладка становится доступной при активации переключателя Параметры ключей на вкладке Информация.

    Чтобы добавить поле в ключ:

    1. Нажмите на кнопку Добавить в группе настроек соответствующего ключа. Для ключа добавится строка настройки поля.

    2. Выберите из выпадающего списка поле модели события, которое требуется добавить в ключ.

      На выбор доступны поля модели события, которые не могут хранить значения типа null и которые еще не были добавлены в первичный или сортировочный ключ.

      Если добавленное поле уже было выбрано ранее на вкладке Информация в качестве var или is_deleted, то данное поле будет частью ключа и не будет работать как var или is_deleted.

    Чтобы удалить поле из ключа, нажмите на кнопку trash.

    Чтобы задать нужный порядок полей в ключе, перетащите поля, удерживая move.

    Для обеспечения корректной работы поиска данных в хранилище событий на первом месте первичного ключа должно находиться поле timestamp. В противном случае для хранилища может наблюдаться снижение производительности операций поиска.

    В нижней части окна отображается порядок полей в итоговой сортировке. Порядок определяется следующим образом: сначала идут все поля первичного ключа, затем — все поля сортировочного ключа.

    Если для хранилища задан только сортировочный ключ, то он также является первичным ключом.

    Задайте следующие настройки:

    1. Выберите том хранения данных:

      • hot_volume — том для быстрого доступа к часто используемым данным (горячее хранение).

      • cold_volume — том для хранения редко используемых данных (холодное хранение).

    2. Укажите срок хранения данных в днях.

      Если поле для срока хранения данных оставить пустым, то срок хранения данных в этом хранилище будет неограниченным.

      Минимальный суммарный срок хранения данных по всем томам по умолчанию составляет 1 день.

      При необходимости вы можете изменить данный срок. Подробности приведены в разделе Настройка минимального срока хранения событий.

    3. Выберите из выпадающего списка действие над данными в томе по окончании срока хранения:

      • Переместить — данные будут перемещены в другой том. Введите в появившейся строке настройки нового тома, в который требуется переместить данные.

      • Удалить — данные в томе будут удалены.

    При необходимости можно настроить хранение данных на основе настроек по умолчанию в выбранной БД. Для этого нажмите на кнопку Применить настройки хранения по умолчанию БД. Если настройки по умолчанию не заданы, система отобразит соответствующее сообщение.

  4. Нажмите на кнопку Создать. Система создаст хранилище событий и отобразит соответствующее уведомление. Новое хранилище появится в списке раздела Ресурсы → Хранилища событий.

Просмотр хранилища событий

Чтобы просмотреть хранилище событий:

  1. Перейдите в раздел Ресурсы → Хранилища событий. Система отобразит сведения об имеющихся хранилищах событий.

  2. Нажмите на строку хранилища событий в списке. Система отобразит в правой части экрана карточку этого хранилища с подробной информацией о нем.

В верхней части карточки отображается название хранилища событий. Справа от названия расположена кнопка more vertical, при нажатии на которую открывается выпадающее меню с действиями, доступными для выбранного хранилища.

Чтобы изменить ширину карточки, наведите курсор на ее левую границу. Курсор примет вид двунаправленной стрелки. Перетащите левую границу карточки в нужном направлении.

Карточка хранилища событий содержит следующие вкладки:

  • Информация — общая информация о хранилище событий.

  • Тома — информация о томах хранения данных в хранилище.

Вкладка Информация

На вкладке Информация отображаются основные сведения о хранилище событий:

  • ID — уникальный идентификационный код хранилища, генерируемый автоматически при его создании.

  • Название — название хранилища, используемое для его идентификации в системе.

  • Описание — описание хранилища событий.

  • ID тенанта — идентификатор тенанта, к которому относится хранилище событий.

  • Тип — тип хранилища событий: системное или пользовательское.

  • База данных событий — БД событий, в которой содержится хранилище.

  • Модель события — модель события, используемая хранилищем.

    Если модель содержит изменения, которые были внесены на уровне СУБД или при обновлении системы, в поле отображается кнопка для ее обновления в хранилище.

  • Движок — движок ClickHouse.

  • Первичный ключ — поля модели события, составляющие первичный ключ.

  • Сортировочный ключ — поля модели события, составляющие сортировочный ключ.

  • Событий в хранилище — количество событий в хранилище.

  • Дата создания — дата и время создания хранилища событий.

  • Создал — пользователь, инициировавший создание хранилища.

  • Дата изменения — дата и время последнего изменения хранилища событий.

  • Изменил — пользователь, выполнивший последнее изменение хранилища.

На вкладке также отображаются показатели сжатия данных, хранящихся в таблице ClickHouse, которая ассоциирована с хранилищем событий:

  • объем занимаемого пространства без сжатия;

  • объем занимаемого пространства со сжатием;

  • коэффициент сжатия, показывающий отношение занимаемого объема без сжатия к занимаемому объему со сжатием.

Для получения более подробной информации о сжатии предназначена кнопка Подробнее.

Если при получении данных о показателях сжатия произошла ошибка, в карточке отобразится соответствующее сообщение с текстом ошибки.

Вкладка Тома

На вкладке Тома отображается информация о томах хранения данных. Тома подгружаются в хранилище событий автоматически из БД событий, в которой содержится хранилище.

Тома хранения данных в хранилище событий бывают следующих типов:

  • hot_volume — предназначен для быстрого доступа к часто используемым данным (горячее хранение).

  • cold_volume — предназначен для хранения редко используемых данных (холодное хранение).

Для каждого тома отображаются следующие сведения:

  • Свободно/всего — информация о свободном и общем объеме тома.

  • Количество событий в томе — информация о количестве событий, хранящихся в томе.

  • Объем занимаемого места в томе — информация о фактически занимаемом объеме тома.

  • Уведомлять, если свободно менее — порог свободного объема тома, при достижении которого система уведомляет пользователя с помощью предупреждения в карточке хранилища и иконки alert yellow в таблице раздела.

    • Настройка уведомления при достижении порога свободного объема тома выполняется в карточке БД событий, лежащей в основе текущего хранилища.

    • Если данные ClickHouse хранятся в S3-совместимом хранилище, метрики дискового пространства будут отображаться некорректно, поскольку S3-совместимое хранилище не передает информацию о доступных объемах бакетов.

    • Другие особенности логики расчета метрик томов описаны в подразделе Логика расчета метрики HDD раздела документации о БД событий.

    При исчерпании всего свободного объема тома происходит остановка конвейеров, связанных с текущим хранилищем событий.
  • Срок хранения — количество дней, в течение которых события хранятся в томе.

Если при получении данных о томах произошла ошибка, в карточке отобразится соответствующее сообщение с текстом ошибки.

Просмотр показателей сжатия по полям

Основная информация о сжатии данных в хранилище отображается на вкладке Информация в карточке хранилища.

Чтобы получить подробную информацию о показателях сжатия по каждому полю в модели события, лежащей в основе хранилища:

  1. Перейдите в раздел Ресурсы → Хранилища событий. Система отобразит сведения об имеющихся хранилищах событий.

  2. Нажмите на строку хранилища событий в списке. Система отобразит в правой части экрана карточку этого хранилища с подробной информацией о нем.

  3. Убедитесь, что в карточке хранилища открыта вкладка Информация.

  4. Нажмите на кнопку Подробнее справа от заголовка группы Показатели сжатия в карточке. Откроется окно показателей сжатия по полям.

В верхней части окна отображаются основные показатели сжатия данных, которые хранятся в таблице ClickHouse, ассоциированной с хранилищем событий:

  • объем занимаемого пространства без сжатия;

  • объем занимаемого пространства со сжатием;

  • коэффициент сжатия, показывающий отношение занимаемого объема без сжатия к занимаемому объему со сжатием.

Также в окне представлена таблица показателей сжатия по всем полям модели события. Таблица содержит следующие столбцы:

  • Название — название поля в модели события.

  • Объем без сжатия — объем занимаемого полем пространства без сжатия.

  • Объем со сжатием — объем занимаемого полем пространства со сжатием.

  • Коэффициент сжатия — отношение занимаемого полем объема без сжатия к занимаемому объему со сжатием.

  • Показатели сжатия по полям отображаются только после фактического выполнения оптимизации в хранилище и расчета показателей сжатия для каждого столбца.

  • Из-за особенностей оптимизации столбцов в ClickHouse в ряде случаев показатели сжатия по полям могут быть равны 0.

При работе с таблицей доступны следующие операции:

Вы также можете экспортировать таблицу показателей сжатия в файл формата CSV с помощью кнопки export.

Обновление модели хранилища событий

При внесении изменений в модель события через веб-интерфейс системы она автоматически обновляется во всех хранилищах, в которых используется.

Если изменения были внесены в пользовательскую модель на уровне СУБД или в системную модель при обновлении на более новую версию системы, то автоматического обновления модели в хранилищах не происходит. Это позволяет избежать сбоев на конвейерах обработки событий из-за неожиданного изменения моделей. В таком случае, чтобы использовать в хранилище актуальную версию модели события, ее необходимо обновить вручную. Для этого:

  1. Перейдите в раздел Ресурсы → Хранилища событий. Система отобразит сведения об имеющихся хранилищах событий.

  2. Нажмите на строку хранилища событий в списке. Система отобразит в правой части экрана карточку этого хранилища с подробной информацией о нем.

  3. Убедитесь, что в карточке хранилища открыта вкладка Информация.

  4. Нажмите на кнопку Обновить в поле Модель события. Система обновит модель события в хранилище до актуальной версии.

Если новая модель событий несовместима со старой, то при попытке обновления модели в хранилище произойдет ошибка. В таком случае для работы с новой версией модели необходимо пересоздать хранилище.

Изменение хранилища событий

Вы можете изменить хранилище событий следующими способами:

  • Изменение названия и описания доступно только для хранилищ событий с типом Пользовательское.

  • Движок, настройки ReplacingMergeTree и параметры ключей в хранилище событий не могут быть изменены.

  • При изменении хранилища доступен выбор новой модели события. Новую модель можно применить к хранилищу, если в составе ее полей содержатся все поля из старой модели.

    Поля моделей считаются одинаковыми, если у них совпадают параметры Ключ поля, Тип поля и Может быть null.

Удаление хранилища событий

Вы можете удалить хранилище событий через меню действий в его карточке.

Удаление доступно только для хранилищ событий с типом Пользовательское, не используемых в других сущностях системы.

Была ли полезна эта страница?

Обратная связь