KUMA позволяет вам фильтровать данные на виджетах типа События, выбирая параметры фильтрации в панели мониторинга.
Для фильтрации данных на одном виджете вам нужно прописать одну или несколько локальных переменных в SQL-запросе в свойствах виджета. Переменные позволяют вам изменять этот SQL-запрос, подставляя в него данные, которые представлены на виджете в панели мониторинга. Виджет отфильтрует данные с учетом новых значений переменных и перестроит график. При этом вам не нужно вручную изменять SQL-запрос в свойствах виджета.
Не рекомендуется задавать более пяти переменных в рамках одной панели мониторинга. Это может привести к нестабильной работе панели мониторинга.
Настройка фильтрации данных на одном виджете
Чтобы настроить локальные переменные для фильтрации данных в рамках одного виджета:
В разделе Панели мониторинга выберите панель мониторинга и затем нажмите на кнопку Изменить, чтобы перейти в режим редактирования панели мониторинга.
Выберите существующий виджет События или нажмите на кнопку Добавить виджет и затем выберите тип виджета События.
В окне свойств виджета перейдите на вкладку Общие.
В блоке параметров Доступные переменные нажмите на кнопку Добавить.
Введите произвольное имя переменной, затем укажите значение переменной. Имена локальных и глобальных переменных должны быть уникальными в рамках панели мониторинга.
В качестве значения переменной укажите "value" или "category", то есть псевдонимы полей, используемые в запросе. Если хотите при фильтрации данных в виджете вводить значение этой переменной вручную, оставьте поле пустым.
Для графиков типа таблица в качестве значения переменной вы можете указать название поля события. Тогда вы сможете фильтровать данные в таблице по выбранному значению этого поля. Название поля события будет отображаться в заголовке столбца таблицы.
В поле SQL-запрос в оператор WHERE добавьте функцию для работы с переменными.
Синтаксис для переменных с конкретным значением:
filter(<название_поля_события> = $имя_переменной)
Синтаксис для переменных с произвольным значением, которое задается вводом вручную:
filter(<название_поля_события> like $имя_переменной)
В этом случае при вводе вручную вы можете использовать метасимвол % для поиска частичных текстовых совпадений. Подробную информацию смотрите в документации ClickHouse.
Вы не можете использовать конструктор SQL для добавления переменных в SQL-запрос.
Пример SQL-запроса с использованием локальной переменной:
SELECT count(ID) AS 'metric', Name AS 'value', TenantID AS 'category' FROM 'events' WHERE filter(Name = $Name) GROUP BY Name, TenantID ORDER BY metric DESC LIMIT 250
В этом запросе использована локальная переменная $Name. В эту переменную будет подставляться значение из поля события Name. Вы сможете применить переменную, нажав на значок воронки () на виджете. В открывшемся окне вы сможете выбрать значение для переменной. Виджет отфильтрует выборку по выбранному значению поля Name.
Обратите внимание, если в SQL-запросе вы прописываете переменную для поля, которое принимает числовое значение, такое значение надо преобразовать в строку. Для этого используйте функцию toString. В противном случае SQL-запрос вернет ошибку. Пример:
SELECT count(ID) AS `metric`, SourcePort AS `value` FROM `events` WHERE (filter(toString(SourcePort) like $SourcePort)) GROUP BY SourcePort ORDER BY value ASC LIMIT 250
Чтобы применить локальную переменную для фильтрации данных в рамках одного виджета:
В разделе Панели мониторинга выберите панель мониторинга, на которой расположен требуемый виджет. В свойствах этого виджета должна быть задана хотя бы одна локальная переменная.
На виджете нажмите на значок воронки ().
В открывшемся окне выберите, какие локальные переменные вы хотите применить.
Сохраните изменения.
Виджет перестроит график с учетом нового значения переменной.