Интеграция Grafana c событиями в KUMA

Интеграция является не официальной (не поддерживается)

Подключение по API KUMA

Для возможности обращения в KUMA предварительно необходимо создать пользователя с необходимыми правами (на этом же этапе задаём необходимую роль\тенанты), переходим в KUMA – Access – Выбираем доменного пользователя, либо создаём локального.

Выбрать пользователя и переходим к Using KUMA via API, нажимаем Generate token и задаём время действия токена (в примере выбираем No expiration date).

image.png

Выбрать права для токена,  затем нажать Generate:

image.png

Система выдаст токен которым мы воспользуемся при создании Data source в Grafana.

image.png

Переходим в Grafana. Устанавливаем плагин Infinity:

image.png

Переходим в Data sources и создаём новый. Ищем Infinity и создаём в формате как указано на скриншоте. Задаём ключевые параметры – адрес, токен (созданный на этапе 1).

image.png

В Network  выбираем "Skip TLS Verify":

image.png

Нажимаем Save & test, в случае успешного подключения получаем уведомление.

image.png

Дашборды и визуализация

Рассмотрим два примера дашбордов. 1-й с задаваемым уникальным запросом, 2-й со статичным запросом для построения дашбордов и вывода статистики.

Создаём дашборд Home – Dashboard – New – New Dashboard. И переходим в Dashboard Settings.

image.png

Далее Settings – Variables, мы задаём глобальную переменную на уровне дашборда.

image.png

И задаём следующие параметры:

image.png

Нажимаем "Apply". Окно для запроса появится в верхнем левом углу с дефолтным значением (его можно не задавать).

Делаем базовый шаблон

Создаём панель и переходим ниже в раздел Query, выбираем Data source – Infinity. далее URL options и задаём Body Type (как на скриншоте):

image.png

Берём пример с API и модифицируем под нашу задачу:

{
  "period": {
    "from": "2025-09-06T00:00:00Z",
    "to": "2025-09-06T00:10:00Z"
  },
  "emptyFields": true,
  "rawTimestamps": true,
  "sql": "SELECT count(Timestamp) as TotalEvents FROM events LIMIT 1"
}

Нам нужно забирать время с дашборда Grafana и запрос берем также с переменной:

{
  "period": {
    "from": "${__from:date:iso}",
    "to": "${__to:date:iso}"
  },
  "emptyFields": true,
  "rawTimestamps": true,
  "sql": "${sqlQuery:raw}"
}

Сохраняем – проверяем:

image.png

Далее создадим более дашборд с вшитым запросом. Допустим это будет статистика неуспешных авторизаций.

В теле будет:

{
  "period": {
    "from": "${__from:date:iso}",
    "to": "${__to:date:iso}"
  },
  "emptyFields": true,
  "rawTimestamps": true,
  "sql": "SELECT count(ID) AS `Количество обращений`, DestinationAddress, DestinationCountry AS `Страна` FROM `events` WHERE EventOutcome = 'failed' AND DeviceEventClassID = 'USER_AUTH' GROUP BY DestinationAddress, DestinationCountry ORDER BY count(ID) DESC LIMIT 250" 
}

И вывод:

image.png

Метод подключения напрямую в ClickHouse

Не проверялось на версиях KUMA 4+

Скачиваем и устанавливаем плагин:

image.png

Далее настраиваем в Connections (в старых версиях: Home - Administration - Data sources) по этому плагину:

image.png

Предварительно проверьте доступ к порту 8123, если доступа нет, обеспечьте его, например, проборосом портов.

URL: https://10.68.85.126:8123?allowMultiQueries=true    (можете также указать хостнейм, в случае иcпользования плагина Altinity)

Копируем содержимое ключевой информации в нужные секции:

image.png

Они берутся из хранилища по путям:
для версий KUMA до 4
  • /opt/kaspersky/kuma/clickhouse/certificates/cert.pem
  • /opt/kaspersky/kuma/clickhouse/certificates/key.pem
для версий KUMA 4+
  • /opt/kaspersky/kuma/storage/<ID хранилища>/certificates/internal.cert
  • /opt/kaspersky/kuma/storage/<ID хранилища>/certificates/internal.key
Затем внизу нажимаем на кнопку Save & Test.

При корректности настроек и сетевых доступов должны получить следующее:

image.png

Создаем дашборд со своими панелями (виджетами), пример:

image.png

image.png

Пример запроса:

SELECT  count(ID), DestinationUserName FROM kuma.events_local_v2 WHERE $__timeFilter_ms(Timestamp) AND DeviceEventClassID='4624'GROUP BY DestinationUserName

Переменная $__timeFilter_ms(Timestamp) обеспечивает проброс промежутка времени из графаны в запрос:

image.png

Чтобы поменять тип отображения можно выбрать другое представление тут:

image.png

image.png

image.png

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


Revision #8
Created 2023-09-12 10:00:03 UTC by Boris Rzr
Updated 2026-06-18 13:00:59 UTC by Boris Rzr