Перейти к основному содержимому

Дашборды

Дашбооды - элементы пользовательского интерфейсы Памир. Дашборды позволяют создавать представления дежурного оператора, давая ему доступ к необходимым показателя здоровья инфрастуктуры и ее топологии. Дашборды строятся из виджетов:

  • графики
  • таблицы
  • индикаторы здоровья
  • карты
  • и др.

Дашборды открываются автоматически, когда запускается клиент.

Область видимости дашборда

Дашборд может отображать данные только тех конфигурационных единиц (КЕ), которые попадают в его область видимости. Это означает, что не все данные из системы будут доступны на дашборде — только те, которые соответствуют заданным критериям.

Как дашборд получает список конфигурационных единиц?

Перед отображением данных дашборд должен определить, с какими именно конфигурационными единицами (КЕ) он будет работать. Для этого:

  • Дашборд выполняет TQL-запрос (Topology Query Language — язык запросов для работы с топологией данных в CMDB).
  • Этот запрос отправляется в CMDB (Configuration Management Database — базу данных управления конфигурациями).
  • В результате запроса возвращается список конфигурационных единиц, удовлетворяющих заданным условиям.

Дашборд не может использовать произвольные или разовые TQL-запросы. Для работы с ним необходимо:

  • Заранее создать и сохранить TQL-запрос в системе.
  • Привязать этот сохраненный запрос к дашборду.
  • Это обеспечивает контроль над данными и предотвращает использование некорректных или неоптимизированных запросов.

Использование списка КЕ виджетами дашборда

После получения списка конфигурационных единиц:

  • Виджеты (графики, таблицы, индикаторы) на дашборде используют этот список для запроса конкретных данных по каждой КЕ.
  • Например, если конфигурационная единица — это "сервер" или "сетевое устройство", то виджеты могут отображать его состояние, загрузку, доступность и другие метрики.

Область видимости дашборда определяется заранее сохраненным TQL-запросом (Topology Query Language), который фильтрует конфигурационные единицы (КЕ) в CMDB. Без этого запроса дашборд не сможет получить данные для отображения в виджетах. Такой подход обеспечивает структурированный, безопасный и управляемый доступ к информации в системе.

Создание дашборда

Создание дашборда выполняется со страницы Главная / Дашборды.

img.png

В модальном окне создания дашборда нужно заполнить поля:

Параметризация TQL дашборда

Для уточнения выборки КЕ для дашборда можно использовать параметризацию TQL запроса. Для этого в меню дашборда предусмотрен фильтр, который отвечает за параметризиацию. "Фильтр"

Фильтр позволяет параметризовать TQL запрос с помощью ТКЕ и конкретных КЕ.

"Фильтр"

Диапазон времени дашборда

Абсолютный диапазон

Позволяет задать точный период:

  • Начальная дата и время – с какого момента отображать данные.
  • Конечная дата и время – до какого момента (если не указано, используется текущее время).
  • Можно задать время с точностью до минуты.

Пример использования:

"Абсолютный диапазон с 09.06.2025 00:00 до 16.06.2025 00:00"

Относительный диапазон

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

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

Примеры:

  • "1 день" – данные за последние 24 часа.
  • "2 недели" – данные за последние 14 дней.

Общие настройки виджетов

Заголовок виджета

Заголовок виджета позволяет написать название виджета и включить/выключить его отображение.

"Заголовок"

Название виджета это литеральная строка в верхней части виджета.

Название отображается если:

  • Заполнено соответствующее поле
  • Выключен параметр Скрыть заголовок

Фильтрация КЕ

Виджет работает в рамках области области видимости дашборда.

"Фильтрация КЕ"

Принцип фильтрации: Фильтр позволяет ограничить перечень КЕ, доступных для отображения в виджете.

Правила фильтрации:

  1. Фильтр не применён (пустой)
  • Виджет отображает все КЕ из области видимости дашборда
  1. Фильтр применён (заполнен хотя бы одно поле)
  • Виджет показывает только КЕ, соответствующие условиям фильтра
  • Остальные КЕ исключаются из отображения

Частные случаи:

  • Заполнено только поле "Узел 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 за час)
Пример PromQLup{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"]
]
}
]
}
}
]

Ключевые различия

Тип данных:

  • queryvector (одно значение + метки).
  • query_rangematrix (набор значений с метками).

Применение:

  • query → Дашборды с текущими показателями (например, "Сейчас онлайн: 42").
  • query_range → Графики изменения метрик (например, "Запросы за последний час").

Синтаксис PromQL:

  • Для query_range обязательно указывать диапазон в квадратных скобках (например, [5m]).
подсказка

Для query_range должна существовать опция "Использовать последнее значение", которая берет крайнюю правую точку из matrix (аналог query).

Редактор метрик

Редактор метрик используется для написания PromQL запросов к Prometheus.

Меню редактора метрик:

  • Переименование метрик. Используется для переименования лейблов метрик и настройки легенды. "Alias" Для составления шаблона используется расширенный синтаксис Handlebars. Добавлены функции привязки и подмены отображаемых значений enumMap, kvMap и kvRegexMap. enumMap позволяет привязать значения к лейблам метрик, kvMap позволяет составить словарь значений для подстановки в шаблон, а kvRegexMap работает аналогично kvMap, но с применением регулярных выражений.

  • Шаблоны. Используется для подстановки параметризированных шаблонных частей PromQL запроса

  • Копировать

  • Вставить

  • Открыть редактор в модальном окне

Шаблон легенды

Название метрики может использоваться во многих виджетах:

  • название измеряемой величины в виджете Одно значение
  • легенды в графиках

Название метрики формироваться на основе шаблона. В шаблоне должна быть возможность использования лейблов из метаданных метирки. Шаблон должен разрешаться в строку. Если указанный в шаблоне лейбл отсутствует в метрике, то вместо него подставляется пустая строка "".

Группировка КЕ

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

img.png

Типы группировки:

  • Вся область видимости TQL
  • Узлы TQL
  • КЕ

Вся область видимости TQL - вариант формирования источника данных, при котором все КЕ, находящиеся в области видимости дашборда не зависят друг от друга. При таком варианте группировки, КЕ дифференцируются только по узлу TQL, связи между КЕ разных типов не учитываются.

Пример: "Fallback"


КЕ - вариант формирования источника данных, при котором все КЕ, находящиеся в области видимости дашборда группируются по принадлежности к узлу 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 ""

Пример: "Group"


Узлы 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

Привязка значений

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

Как настроить привязку значений

  1. В панели Dashboard откройте настройки виджета.
  2. В виджете перейти в раздел Настройки.
  3. Нажмите кнопку Добавить.
  4. Введите конкретные значения и их текстовые аналоги.
  5. Сохраните изменения и проверьте отображение на дашборде.

Пример использования

Допустим, у вас есть метрика status с значениями:

  • 0 – система offline
  • 1 – система online
  • 2 – система в режиме ожидания

Вы можете настроить маппинг:

  • 0 → "Offline"
  • 1 → "Online"
  • 2 → "Standby"

Теперь вместо чисел на графике будут отображаться понятные статусы с цветовой индикацией.

Настройка единиц измерения

Памир предоставляет гибкие возможности настройки единиц измерения для метрик, что особенно важно для корректного отображения данных мониторинга.

Принцип работы

Когда вы выбираете единицы измерения в Памир, система автоматически:

  • Масштабирует значения (например, преобразует байты в мегабайты)
  • Добавляет соответствующий суффикс (%, °C, MB/s и т.д.)
  • Форматирует отображение чисел

Доступ к настройкам находится в:

  • Разделе "Настройки" → "Единицы измерения"

Примеры преобразований

Исходное значениеВыбранная единицаОтображение
1024bytes1024 B
1024kilobytes1 KB
0.85percent85%
1000000short1M
0.333333seconds333ms

Особенности работы:

  • Автоматическое масштабирование

    • Для единиц данных: B → KB → MB → GB
    • Для времени: ns → μs → ms → s → m → h
  • Влияние на инструменты

    • Единицы учитываются при:
      • Отображении на графиках
      • Форматировании таблиц
      • Показе значений в тултипах
  • Важные нюансы

    • Не влияют на исходные данные
    • Работают согласовано с осями графиков

Привязка значения

Настройка пороговых значений

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

Базовые параметры

base.png

  • Базовое значение: Определяет порог по умолчанию, который применяется независимо от других настроенных порогов
  • Тип данных: Необходимо указать тип обрабатываемых данных (числовой или строковый) для корректной работы порогов

Работа с разными типами данных

string.png

Для строковых значений:

  • Система последовательно проверяет соответствие полученного значения заданным порогам
    • Требуется точное совпадение строк
  • Применяется первый подходящий порог из списка

range.png

Для числовых значений:

  1. Дополнительные пороги: Пользователь может задать несколько числовых значений, разделяющих диапазоны
  2. Автоматическая сортировка: Перед сравнением система сортирует пороги по возрастанию
  3. Механизм сравнения:
  • Полученное значение последовательно проверяется относительно каждого порога
  • При достижении или превышении порога активируется соответствующий уровень

Пример настройки

Рассмотрим пример с четырьмя уровнями:

  1. Норма (зелёный): значения <50
  2. Предупреждение (жёлтый): \≥50
  3. Предкритический (оранжевый): \≥80
  4. Критический (красный): \≥100

В этом случае:

  • Значение 45 отобразится зелёным
  • Значение 60 - жёлтым
  • Значение 90 - оранжевым
  • Значение 100 и выше - красным

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