Интеграция Grafana c событиями в KUMA
Интеграция является не официальной (не поддерживается)
Подключение по API KUMA
Для возможности обращения в KUMA предварительно необходимо создать пользователя с необходимыми правами (на этом же этапе задаём необходимую роль\тенанты), переходим в KUMA – Access – Выбираем доменного пользователя, либо создаём локального.
Выбрать пользователя и переходим к Using KUMA via API, нажимаем Generate token и задаём время действия токена (в примере выбираем No expiration date).
Выбрать права для токена, затем нажать Generate:
Система выдаст токен которым мы воспользуемся при создании Data source в Grafana.
Переходим в Grafana. Устанавливаем плагин Infinity:
Переходим в Data sources и создаём новый. Ищем Infinity и создаём в формате как указано на скриншоте. Задаём ключевые параметры – адрес, токен (созданный на этапе 1).
В Network выбираем "Skip TLS Verify":
Нажимаем Save & test, в случае успешного подключения получаем уведомление.
Дашборды и визуализация
Рассмотрим два примера дашбордов. 1-й с задаваемым уникальным запросом, 2-й со статичным запросом для построения дашбордов и вывода статистики.
Создаём дашборд Home – Dashboard – New – New Dashboard. И переходим в Dashboard Settings.
Далее Settings – Variables, мы задаём глобальную переменную на уровне дашборда.
И задаём следующие параметры:
Нажимаем "Apply". Окно для запроса появится в верхнем левом углу с дефолтным значением (его можно не задавать).
Делаем базовый шаблон
Создаём панель и переходим ниже в раздел Query, выбираем Data source – Infinity. далее URL options и задаём Body Type (как на скриншоте):
Берём пример с 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}"
}
Сохраняем – проверяем:
Далее создадим более дашборд с вшитым запросом. Допустим это будет статистика неуспешных авторизаций.
В теле будет:
{
"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"
}
И вывод:
Метод подключения напрямую в ClickHouse
Не проверялось на версиях KUMA 4+
Скачиваем и устанавливаем плагин:
Далее настраиваем в Connections (в старых версиях: Home - Administration - Data sources) по этому плагину:
Предварительно проверьте доступ к порту 8123, если доступа нет, обеспечьте его, например, проборосом портов.
URL: https://10.68.85.126:8123?allowMultiQueries=true (можете также указать хостнейм, в случае иcпользования плагина Altinity)
Копируем содержимое ключевой информации в нужные секции:
для версий 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
Создаем дашборд со своими панелями (виджетами), пример:
Пример запроса:
SELECT count(ID), DestinationUserName FROM kuma.events_local_v2 WHERE $__timeFilter_ms(Timestamp) AND DeviceEventClassID='4624'GROUP BY DestinationUserName
Переменная $__timeFilter_ms(Timestamp) обеспечивает проброс промежутка времени из графаны в запрос:
Чтобы поменять тип отображения можно выбрать другое представление тут:
Сохраняем и применяем панель/представление, далее подобным образом можно создать другие панели.