Виджет «Схема»

Обновлено 17.10.2026
Виджет дашборда «Схема»: диаграмма на языке DOT, раскрашенная живыми данными, с переходами по клику в разделы платформы.

На этой странице:

Что это

Схема — диаграмма, которую автор пишет текстом на языке DOT: узлы, связи между ними, рамки-площадки. Платформа раскладывает её сама и красит узлы по живым данным PromQL: обводка или заливка показывает статус, в подписи стоят текущие значения, клик по узлу ведёт в нужный раздел платформы.

Структуру схемы задаёт только автор. Данные меняют цвета и числа, но не добавляют и не убирают узлов: если сервиса нет на схеме, он на ней и не появится.

Как добавить

  1. Откройте дашборд в режиме редактирования и добавьте виджет.
  2. В разделе Выбор визуализации выберите источник PromQL и тип Схема.
  3. В разделе Стили графика задайте исходник схемы и привязки. Поле запроса PromQL для «Схемы» не используется: запросы живут в привязках.
  4. Сохраните виджет.

Исходник редактируется в поле с подсветкой синтаксиса; кнопка Развернуть открывает его на весь экран. Предпросмотр обновляется примерно через треть секунды после остановки набора. Под предпросмотром видны счётчики: сколько строк данных не нашли узла, у скольких ключей пришло несколько рядов, сколько узлов осталось без данных.

Права на «Схему» — те же, что на дашборд, в котором она лежит.

Ключ узла

Узел связывается с данными через ключ — штатный атрибут id вида префикс:хвост. Ключ можно дать вершине, рамке и ребру:

digraph example {
  billing [id="svc:billing", label="Расчёты"];
  core    [id="res:network_switch:core-01", label="Коммутатор ядра"];
  subgraph cluster_center { id="site:center"; label="Центр"; core; }
  billing -> core [id="link:billing-core"];
}

Подпись (label) пишется для человека, ключ — для платформы. Переименование подписи данные не ломает.

Привязки

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

ПолеЗначение
Префикс ключаОканчивается двоеточием: svc:, res:network_switch:, site:
Метка ключаМетка ряда PromQL, значение которой совпадает с хвостом ключа, например service
ПоказателиДо пяти: имя (латиница, цифры, подчёркивание, с буквы), запрос PromQL, единица, знаков после запятой, пороги

Правила сопоставления:

  • Для ключа выбирается привязка с самым длинным совпавшим префиксом. res:network_switch: выигрывает у res:.
  • Хвост ключа сравнивается со значением метки ряда точно, с учётом регистра.
  • Если на один ключ пришло несколько рядов, берётся худший статус. Лучше агрегировать в самом запросе: max by (service) (…).
  • Ряд, для которого на схеме нет узла, пропускается.
  • Переменные дашборда подставляются в запросы привязок. В исходник схемы они не подставляются.

Подстановки

В label и tooltip можно вставлять значения:

ПодстановкаЧто подставится
${value}Значение первого показателя привязки
${имя}Значение показателя с этим именем, например ${errors}
${status}Статус узла: «Норма», «Предупреждение», «Авария», «Нет данных»

Раскладка считается один раз на исходник, а числа в подписях меняются на каждом обновлении. Чтобы узел не менял размер и не наезжал на соседей, ширину вершины с числом задавайте явно:

node [shape=box, width=1.8, fixedsize=true];

Пороги и статус

Порог — диапазон «от — до» и статус: норма, предупреждение или авария. «От» входит в диапазон, «до» — нет; пустая граница означает «без ограничения».

  • Правила проверяются по порядку, срабатывает первое совпавшее.
  • Значение не попало ни в одно правило — норма.
  • Ряда нет — нет данных: узел серый и приглушён. Это не ошибка.
  • Показатель без порогов на статус не влияет, его значение только выводится в подпись.
  • Статус узла — худший среди его показателей с порогами. Порядок: авария, предупреждение, нет данных, норма.

Как показывать статус, выбирает переключатель Покраска статуса: Обводка (цветная рамка фигуры и точка-маркер) или Заливка (вся фигура цвета статуса). Статус дублируется текстом в подсказке и в легенде, поэтому читается и без различения цветов.

Легенда внизу виджета показывает только встречающиеся статусы с числом узлов. В развороте виджета клик по статусу в легенде подсвечивает его узлы и приглушает остальные.

Рамки и сводки

Подграф с именем cluster_… рисуется рамкой — площадка, стойка, кластер. Статус рамки — худший среди всех её узлов на любой глубине вложенности, плюс собственный ключ рамки, если он задан.

Когда схема мелкая и подписи рамок уже не читаются, у внешних рамок появляется сводка: точка худшего статуса и «Проблемных: N» (аварии и предупреждения). Сводки выключаются переключателем Сводки рамок.

Палитра

Нестатусный цвет — например, чтобы отличить площадки фоном — задаётся именем из палитры:

subgraph cluster_br1 { label="Филиал 1"; style=filled; fillcolor="pal:teal"; }

Имена: gray, slate, blue, teal, green, olive, sand, violet. Цвета палитры подстраиваются под светлую и тёмную тему. Цвета, заданные кодом (#ff0000), под тему не подстраиваются — редактор о них предупредит.

Переходы

Атрибут URL делает узел ссылкой. Короткие адреса ведут на страницу объекта по имени:

АдресКуда ведёт
/go/service/имяСервис
/go/service-group/имяГруппа сервисов
/go/host/имяХост
/go/vsphere-cluster/имяКластер виртуализации
/go/vsphere-datacenter/имяДатацентр виртуализации
/go/business-process/имяБизнес-процесс
/go/postgres/имя, /go/mssql/имя, /go/redis/имяЭкземпляр СУБД
/rsm/resources/list?tab=table&search=имяРесурс в ресурсной модели
/rsm/resources/list?tab=table&tags=тегРесурсы площадки по тегу

Внешние адреса (https://…) открываются в новой вкладке. Ctrl-клик или Cmd-клик открывает в новой вкладке и внутренний адрес. Ссылки других видов, например javascript:, ссылками не становятся.

Время и обновление

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

Своей частоты обновления у «Схемы» нет: она обновляется вместе с дашбордом — по кнопке Обновить, по автообновлению и при смене окна или переменных. Раскладка при этом не пересчитывается, меняются только цвета и числа.

Если обновление не удалось, на схеме остаются последние значения, а в заголовке виджета появляется пометка, как у остальных виджетов. Если запросы привязок не выполнились при первой загрузке, вместо схемы показывается ошибка — проверьте запросы в предпросмотре.

Лимиты

  • Исходник — не больше 100 КБ. Больший исходник редактор не сохраняет, а импорт дашборда с ним отклоняется.
  • Построение дольше секунды — предупреждение в редакторе; живой предпросмотр выключается.
  • Раскладки fdp, neato, circo и sfdp на больших схемах в разы медленнее основной.
  • Ошибка в исходнике показывается плашкой с номером строки — в плитке, в редакторе и в отчёте.

Отчёты и экспорт

Схема попадает в PDF-отчёт и письмо, а также в экспорт дашборда в PDF и виджета в PNG.

Большая схема в PDF показывается на уровне обзора: сводки рамок и проблемные узлы различимы, мелкие подписи не гарантируются. Для отчёта лучше держать отдельную схему верхнего уровня.

Пример: кредитный конвейер

Цепочка сервисов кредитного конвейера, подписи показывают долю ошибок:

digraph conveyor {
  rankdir=LR;
  node [shape=box, width=1.8, fixedsize=true];
  gateway  [id="svc:api-gateway", label="Шлюз API\n${value}", URL="/go/service/api-gateway"];
  app      [id="svc:application-service", label="Приём заявки\n${value}"];
  scoring  [id="svc:credit-scoring-service", label="Скоринг\n${value}", tooltip="Скоринг: ${value}, ${status}"];
  decision [id="svc:decision-service", label="Решение\n${value}"];
  gateway -> app -> scoring -> decision;
}

Привязка:

ПолеЗначение
Префикс ключаsvc:
Метка ключаservice
Показательимя errors, запрос services_errorcallsperc, единица %, знаков после запятой 1
Порогиот 1 — предупреждение; от 5 — авария

Узел с долей ошибок от 1 до 5 % получит обводку предупреждения, от 5 % — аварии; сервис без данных станет серым.