Дашборды
Дашбооды - элементы пользовательского интерфейсы Памир. Дашборды позволяют создавать представления дежурного оператора, давая ему доступ к необходимым показателя здоровья инфрастуктуры и ее топологии. Дашборды строятся из виджетов:
- графики
- таблицы
- индикаторы здоровья
- карты
- и др.
Дашборды открываются автоматически, когда запускается клиент.
Область видимости дашборда
Дашборд может отображать данные только тех конфигурационных единиц (КЕ), которые попадают в его область видимости. Это означает, что не все данные из системы будут доступны на дашборде — только те, которые соответствуют заданным критериям.
Как дашборд получает список конфигурационных единиц?
Перед отображением данных дашборд должен определить, с какими именно конфигурационными единицами (КЕ) он будет работать. Для этого:
- Дашборд выполняет TQL-запрос (Topology Query Language — язык запросов для работы с топологией данных в CMDB).
- Этот запрос отправляется в CMDB (Configuration Management Database — базу данных управления конфигурациями).
- В результате запроса возвращается список конфигурационных единиц, удовлетворяющих заданным условиям.
Дашборд не может использовать произвольные или разовые TQL-запросы. Для работы с ним необходимо:
- Заранее создать и сохранить TQL-запрос в системе.
- Привязать этот сохраненный запрос к дашборду.
- Это обеспечивает контроль над данными и предотвращает использование некорректных или неоптимизированных запросов.
Использование списка КЕ виджетами дашборда
После получения списка конфигурационных единиц:
- Виджеты (графики, таблицы, индикаторы) на дашборде используют этот список для запроса конкретных данных по каждой КЕ.
- Например, если конфигурационная единица — это "сервер" или "сетевое устройство", то виджеты могут отображать его состояние, загрузку, доступность и другие метрики.
Область видимости дашборда определяется заранее сохраненным TQL-запросом (Topology Query Language), который фильтрует конфигурационные единицы (КЕ) в CMDB. Без этого запроса дашборд не сможет получить данные для отображения в виджетах. Такой подход обеспечивает структурированный, безопасный и управляемый доступ к информации в системе.
Создание дашборда
Создание дашборда выполняется со страницы Главная / Дашборды
.
В модальном окне создания дашборда нужно заполнить поля:
- Название
- TQL запрос, который оделяет область видимости дашборда
Параметризация TQL дашборда
Для уточнения выборки КЕ для дашборда можно использовать параметризацию TQL запроса. Для этого в меню дашборда предусмотрен фильтр, который отвечает за параметризиацию.
Фильтр позволяет параметризовать TQL запрос с помощью ТКЕ и конкретных КЕ.
Диапазон времени дашборда
Абсолютный диапазон
Позволяет задать точный период:
- Начальная дата и время – с какого момента отображать данные.
- Конечная дата и время – до какого момента (если не указано, используется текущее время).
- Можно задать время с точностью до минуты.
Пример использования:
"Абсолютный диапазон с 09.06.2025 00:00 до 16.06.2025 00:00"
Относительный диапазон
Позволяет выбрать период относительно текущего времени:
- Введите число и выберите единицу измерения: минуты, часы, дни, недели, месяцы.
- Таблица покажет данные за указанный промежуток времени до текущего момента.
Примеры:
- "1 день" – данные за последние 24 часа.
- "2 недели" – данные за последние 14 дней.
Общие настройки виджетов
Заголовок виджета
Заголовок виджета позволяет написать название виджета и включить/выключить его отображение.
Название виджета это литеральная строка в верхней части виджета.
Название отображается если:
- Заполнено соответствующее поле
- Выключен параметр Скрыть заголовок
Фильтрация КЕ
Виджет работает в рамках области области видимости дашборда.
Принцип фильтрации: Фильтр позволяет ограничить перечень КЕ, доступных для отображения в виджете.
Правила фильтрации:
- Фильтр не применён (пустой)
- Виджет отображает все КЕ из области видимости дашборда
- Фильтр применён (заполнен хотя бы одно поле)
- Виджет показывает только КЕ, соответствующие условиям фильтра
- Остальные КЕ исключаются из отображения
Частные случаи:
- Заполнено только поле "Узел TQL" → Виджет включает все КЕ выбранного узла TQL
- Заполнены оба поля ("Узел TQL" и "КЕ") → Виджет отображает только указанные КЕ из выбранного узла
Важно: Если условия фильтрации не соответствуют ни одной КЕ в CMDB, виджет может отображаться пустым. Такая ситуация может случиться в следствии изменения CMDB, после сохранения значений фильтра. Рекомендуется проверять корректность заданных фильтров.
Настройка источника данных
Источниками данных для виджетов являются:
- Статические данные
- Метрики
- Атрибуты
- Индикаторы здоровья
Метрики
Для получения метрик используется PromQL запрос. PromQL запрос бывает нескольких типов:
- query
- query_range
Отличие между query
(instant) и query_range
(range) в PromQL
Характеристика | query (instant) | query_range (range) |
---|---|---|
Тип запроса | Мгновенный запрос (одна точка во времени) | Запрос за диапазон времени (интервал) |
Возвращаемые данные | Последнее значение метрики | Массив значений за указанный период |
Формат ответа | "resultType": "vector" | "resultType": "matrix" |
Структура ответа | "value": [timestamp, "value"] | "values": [[ts1, "v1"], [ts2, "v2"], ...] |
Использование | Текущее состояние (например, CPU сейчас) | Графики, тренды (например, CPU за час) |
Пример PromQL | up{job="node"} | up{job="node"}[5m] |
Instant Query
Возвращает одно актуальное значение метрики на момент выполнения запроса. Используется для отображения текущего состояния (например, статус сервиса, текущая загрузка CPU).
Пример запроса:
http_requests_total{handler="/api"}
Пример ответа:
[
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {},
"value": [1743080341, "1"]
}
]
}
},
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {},
"value": [1743080341, "2"]
}
]
}
}
]
Range Query
Возвращает массив значений за указанный временной диапазон (например, последние 5 минут). Используется для построения графиков или анализа трендов.
Пример запроса:
http_requests_total{handler="/api"}[5m]
Пример ответа:
[
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {},
"values": [
[1743079579, "1"],
[1743079580, "1"]
]
}
]
}
},
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {},
"values": [
[1743079579, "2"],
[1743079580, "2"]
]
}
]
}
}
]
Ключевые различия
Тип данных:
query
→vector
(одно значение + метки).query_range
→matrix
(набор значений с метками).
Применение:
query
→ Дашборды с текущими показателями (например, "Сейчас онлайн: 42").query_range
→ Графики изменения метрик (например, "Запросы за последний час").
Синтаксис PromQL:
- Для
query_range
обязательно указывать диапазон в квадратных скобках (например,[5m]
).
Для query_range
должна существовать опция "Использовать последнее значение", которая берет крайнюю правую точку из matrix
(аналог query
).
Редактор метрик
Редактор метрик используется для написания PromQL запросов к Prometheus.
Меню редактора метрик:
-
Переименование метрик. Используется для переименования лейблов метрик и настройки легенды.
Для составления шаблона используется расширенный синтаксис Handlebars. Добавлены функции привязки и подмены отображаемых значений
enumMap
,kvMap
иkvRegexMap
.enumMap
позволяет привязать значения к лейблам метрик,kvMap
позволяет составить словарь значений для подстановки в шаблон, аkvRegexMap
работает аналогичноkvMap
, но с применением регулярных выражений. -
Шаблоны. Используется для подстановки параметризированных шаблонных частей PromQL запроса
-
Копировать
-
Вставить
-
Открыть редактор в модальном окне
Шаблон легенды
Название метрики может использоваться во многих виджетах:
- название измеряемой величины в виджете Одно значение
- легенды в графиках
Название метрики формироваться на основе шаблона. В шаблоне должна быть возможность использования лейблов из метаданных метирки. Шаблон должен разрешаться в строку. Если указанный в шаблоне лейбл отсутствует в метрике, то вместо него подставляется пустая строка "".
Группировка КЕ
Группировка - опциональный параметр. Группировка нужна для применения виджета к различным КЕ, с сохранением их связанности.
Типы группировки:
- Вся область видимости TQL
- Узлы TQL
- КЕ
Вся область видимости TQL - вариант формирования источника данных, при котором все КЕ, находящиеся в области видимости дашборда не зависят друг от друга. При таком варианте группировки, КЕ дифференцируются только по узлу TQL, связи между КЕ разных типов не учитываются.
Пример:
КЕ - вариант формирования источника данных, при котором все КЕ, находящиеся в области видимости дашборда группируются по принадлежности к узлу TQL.
В результате группировки в карточке виджета будут созданы вкладки по каждому КЕ.
Группировка по КЕ требует заполнения источника данных для виджета в привязке к каждому ТКЕ. При этом запрос не ограничивается перечнем КЕ выбранного типа. В запросе могут быть использованы ссылки на связанные КЕ других типов. При этом Памир по CMDB самостоятельно определит наличие/отсутствие связей. В случае их наличия - подставит в запрос.
Структура CMDB
Запрос источника данных для узла TQL Parent
Узел TQL Parent "[[ tql_parent_1.attribute.name ]]" связан с узлами TQL Child "[[ tql_child_2.attribute.name ]]"
Разрешение запроса
Для каждого КЕ, принадлежащему узлу Parent будет создана вкладка. На вкладках запросы разрешаться в:
- Parent A -
Узлел TQL Parent "Parent A" связан с узлами TQL Child "Child A1|Child A2"
- Parent B -
Узлел TQL Parent "Parent B" связан с узлами TQL Child "Child B"
- Parent C -
Узлел TQL Parent "Parent C" связан с узлами TQL Child ""
Пример:
Узлы TQL - вариант формирования источника данных, при котором все КЕ, находящиеся в области видимости дашборда группируются по принадлежности к узлу TQL.
Данный тип группировки предполагает заполнения источника данных для виджета в привязке к каждому узлу TQL. Памир разрешает ссылки на связанные КЕ других типов аналогично группировке КЕ. Отличие заключается в том, что запрос должен разрешиться относительно каждого КЕ, входящего в узел TQL. Запросы будут объединены через PromQL оператор OR.
Структура CMDB
Запрос источника данных для узла TQL Parent
metric_name{label1=[[ tql_parent_1.attribute.name ]], label2=[[ tql_child_2.attribute.name ]]}
Разрешение запроса
metric_name{label1="Parent A", label2="Child A1|Child A2"} OR
metric_name{label1="Parent B", label2="Child B"} OR
metric_name{label1="Parent C", label2=""} OR
Привязка значений
В Памир привязка значений позволяет преобразовывать исходные данные в более удобный для визуализации формат. Это особенно полезно для замены числовых кодов на понятные текстовые метки, цветовое выделение статусов или изменение отображения метрик.
Как настроить привязку значений
- В панели Dashboard откройте настройки виджета.
- В виджете перейти в раздел
Настройки
. - Нажмите кнопку
Добавить
. - Введите конкретные значения и их текстовые аналоги.
- Сохраните изменения и проверьте отображение на дашборде.
Пример использования
Допустим, у вас есть метрика status
с значениями:
0
– система offline1
– система online2
– система в режиме ожидания
Вы можете настроить маппинг:
0 → "Offline"
1 → "Online"
2 → "Standby"
Теперь вместо чисел на графике будут отображаться понятные статусы с цветовой индикацией.
Настройка единиц измерения
Памир предоставляет гибкие возможности настройки единиц измерения для метрик, что особенно важно для корректного отображения данных мониторинга.
Принцип работы
Когда вы выбираете единицы измерения в Памир, система автоматически:
- Масштабирует значения (например, преобразует байты в мегабайты)
- Добавляет соответствующий суффикс (%, °C, MB/s и т.д.)
- Форматирует отображение чисел
Доступ к настройкам находится в:
- Разделе "Настройки" → "Единицы измерения"
Примеры преобразований
Исходное значение | Выбранная единица | Отображение |
---|---|---|
1024 | bytes | 1024 B |
1024 | kilobytes | 1 KB |
0.85 | percent | 85% |
1000000 | short | 1M |
0.333333 | seconds | 333ms |
Особенности работы:
-
Автоматическое масштабирование
- Для единиц данных: B → KB → MB → GB
- Для времени: ns → μs → ms → s → m → h
-
Влияние на инструменты
- Единицы учитываются при:
- Отображении на графиках
- Форматировании таблиц
- Показе значений в тултипах
- Единицы учитываются при:
-
Важные нюансы
- Не влияют на исходные данные
- Работают согласовано с осями графиков
Настройка пороговых значений
Функционал пороговых значений позволяет настраивать визуальное отображение данных на виджетах в зависимости от заданных критериев. Пороги применяются к данным, полученным из источника (метрики или атрибуты).
Базовые параметры
- Базовое значение: Определяет порог по умолчанию, который применяется независимо от других настроенных порогов
- Тип данных: Необходимо указать тип обрабатываемых данных (числовой или строковый) для корректной работы порогов
Работа с разными типами данных
Для строковых значений:
- Система последовательно проверяет соответствие полученного значения заданным порогам
- Требуется точное совпадение строк
- Применяется первый подходящий порог из списка
Для числовых значений:
- Дополнительные пороги: Пользователь может задать несколько числовых значений, разделяющих диапазоны
- Автоматическая сортировка: Перед сравнением система сортирует пороги по возрастанию
- Механизм сравнения:
- Полученное значение последовательно проверяется относительно каждого порога
- При достижении или превышении порога активируется соответствующий уровень
Пример настройки
Рассмотрим пример с четырьмя уровнями:
- Норма (зелёный): значения <50
- Предупреждение (жёлтый): \≥50
- Предкритический (оранжевый): \≥80
- Критический (красный): \≥100
В этом случае:
- Значение 45 отобразится зелёным
- Значение 60 - жёлтым
- Значение 90 - оранжевым
- Значение 100 и выше - красным
Примечание: Для корректной работы убедитесь, что тип порогов соответствует типу поступающих данных.