Создание SQL-запроса вручную

Вы можете вручную использовать строку поиска, чтобы создавать SQL-запросы любой сложности для фильтрации событий.

Чтобы сформировать SQL-запрос вручную:

  1. Перейдите в раздел События веб-интерфейса KUMA.

    Откроется форма с полем ввода.

  2. Введите SQL-запрос в поле ввода. Вам нужно использовать одинарные кавычки в запросах.
  3. Нажмите на кнопку Выполнить запрос.

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

Поддерживаемые функции и операторы

Функция

Описание

SELECT

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

  • Функции агрегации count, avg, max, min и sum.
  • Арифметические операторы +, -, *, /, <, >, =, !=, >= и <=.

Вы можете комбинировать в SQL-запросе функции и операторы. Если вы используете в SQL-запросе функции агрегации, становятся недоступными настройка отображения таблицы событий, сортировка событий по возрастанию и убыванию, а также получение статистики.

FROM

Источник данных.

При создании SQL-запроса в качестве источника данных вам нужно указать значение events.

WHERE

Условия фильтрации событий:

  • AND, OR, NOT, =, !=, >, >=, < и <=.
  • IN.
  • BETWEEN.
  • LIKE.
  • ILIKE.
  • inSubnet.
  • match – в SQL-запросах используется синтаксис регулярных выражений re2. Вам нужно дополнительно экранировать специальные символы с помощью обратной косой черты \.

GROUP BY

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

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

ORDER BY

Столбцы, по которым требуется сортировать возвращаемые данные. Возможные значения:

  • DESC – сортировка по убыванию.
  • ASC – сортировка по возрастанию.

OFFSET

Количество строк, которые требуется пропустить перед отображением результатов SQL-запроса.

LIMIT

Количество отображаемых в таблице строк. Значение по умолчанию: 250.

Если при фильтрации событий по пользовательскому периоду количество строк в результатах поиска превышает указанное значение, вы можете отобразить в таблице дополнительные строки, нажав на кнопку Показать больше. Эта кнопка не отображается при фильтрации событий по стандартному периоду.

Примеры SQL-запросов:

  • SELECT * FROM `events` WHERE Type IN ('Base', 'Audit') ORDER BY Timestamp DESC LIMIT 250

    Все события таблицы events с типом Base и Audit, отсортированные по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

  • SELECT * FROM `events` WHERE BytesIn BETWEEN 1000 AND 2000 ORDER BY Timestamp ASC LIMIT 250

    Все события таблицы events, для которых в поле BytesIn значение полученного трафика находится в диапазоне от 1000 до 2000 байт, отсортированные по столбцу Timestamp в порядке возрастания. Количество отображаемых в таблице строк – 250.

  • SELECT * FROM `events` WHERE Message LIKE '%ssh:%' ORDER BY Timestamp DESC LIMIT 250

    Все события таблицы events, которые в поле Message содержат данные, соответствующие заданному шаблону %ssh:% в нижнем регистре, и отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

  • SELECT * FROM `events` WHERE inSubnet(DeviceAddress, '00.0.0.0/00') ORDER BY Timestamp DESC LIMIT 250

    Все события таблицы events для хостов, которые входят в подсеть 00.0.0.0/00, отсортированные по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

  • SELECT * FROM `events` WHERE match(Message, 'ssh.*') ORDER BY Timestamp DESC LIMIT 250

    Все события таблицы events, которые в поле Message содержат текст, соответствующий шаблону ssh.*, и отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

  • SELECT max(BytesOut) / 1024 FROM `events`

    Максимальный размер исходящего трафика (КБ) за выбранный период времени.

  • SELECT count(ID) AS "Count", SourcePort AS "Port" FROM `events` GROUP BY SourcePort ORDER BY Port ASC LIMIT 250

    Количество событий и номер порта. События сгруппированы по номеру порта и отсортированы по столбцу Port в порядке возрастания. Количество отображаемых в таблице строк – 250.

    Столбцу ID в таблице событий присвоено имя Count, столбцу SourcePort присвоено имя Port.

Если вы хотите указать в запросе специальный символ, вам требуется экранировать его, поместив перед ним обратную косую черту (\).

Пример:

SELECT * FROM `events` WHERE match(Message, 'ssh:\'connection.*') ORDER BY Timestamp DESC LIMIT 250

Все события таблицы events, которые в поле Message содержат текст, соответствующий шаблону ssh: 'connection', и отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

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

Пример:

SELECT * FROM `events` WHERE DeviceAddress = '00.00.00.000' AND Extra LIKE '%"app":"example"%' ORDER BY Timestamp DESC LIMIT 250

Все события таблицы events для хостов с IP-адресом 00.00.00.000, на которых запущен процесс example, отсортированные по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

Если вы создали SQL-запрос вручную в строке поиска и затем переключились на конструктор, параметры SQL-запроса не перенесутся в конструктор. В этом случае вам потребуется создать SQL-запрос в конструкторе заново. SQL-запрос, созданный в конструкторе, не перезаписывает SQL-запрос, введенный в строке поиска, пока вы не нажмете на кнопку Применить запрос в окне конструктора. Если вы создали SQL-запрос в конструкторе и затем переключились на поисковую строку, параметры запроса перенесутся автоматически.

Используемые в поисковых запросах псевдонимы не должны содержать пробелов.

Подробнее об SQL см. в справке ClickHouse. Также см. поддерживаемые функции ClickHouse.

См. также:

Формирование SQL-запроса с помощью конструктора

Ограничение сложности запросов в режиме расследования алерта

О событиях

Хранилище

В начало