Виджет «Схема»
Версия
Виджет «Схема» (Diagram) доступен начиная с версии 204.На этой странице:
- Что это
- Как добавить
- Ключ узла
- Привязки
- Подстановки
- Пороги и статус
- Рамки и сводки
- Палитра
- Переходы
- Время и обновление
- Лимиты
- Отчёты и экспорт
- Пример: кредитный конвейер
Что это
Схема — диаграмма, которую автор пишет текстом на языке DOT: узлы, связи между ними, рамки-площадки. Платформа раскладывает её сама и красит узлы по живым данным PromQL: обводка или заливка показывает статус, в подписи стоят текущие значения, клик по узлу ведёт в нужный раздел платформы.
Структуру схемы задаёт только автор. Данные меняют цвета и числа, но не добавляют и не убирают узлов: если сервиса нет на схеме, он на ней и не появится.
Как добавить
- Откройте дашборд в режиме редактирования и добавьте виджет.
- В разделе Выбор визуализации выберите источник PromQL и тип Схема.
- В разделе Стили графика задайте исходник схемы и привязки. Поле запроса PromQL для «Схемы» не используется: запросы живут в привязках.
- Сохраните виджет.
Исходник редактируется в поле с подсветкой синтаксиса; кнопка Развернуть открывает его на весь экран. Предпросмотр обновляется примерно через треть секунды после остановки набора. Под предпросмотром видны счётчики: сколько строк данных не нашли узла, у скольких ключей пришло несколько рядов, сколько узлов осталось без данных.
Права на «Схему» — те же, что на дашборд, в котором она лежит.
Ключ узла
Узел связывается с данными через ключ — штатный атрибут 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 % — аварии; сервис без данных станет серым.