Спецификация шаблонов модели здоровья
Эта спецификация описывает правила заполнения файлов шаблонов модели здоровья.
Статусы
Каждая сущность панели может принимать один из четырёх статусов, определяющих также внешний вид соответствующего индикатора или панели:
-
gray— данные не поступают. -
green— данные поступают, но показатели находятся в допустимых значениях. -
yellow— данные поступают, но показатели превышают допустимые значения. -
red— у этого статуса может быть одно из двух значений:-
данные не поступают, и это само по себе является сигналом проблемы;
-
данные поступают, и показатели превышают критичные значения.
-
Типы данных
При описании полей для типов возможных значений используются следующие обозначения:
-
array<T>— массив элементов типа<T>; -
boolean— логическое; -
integer— целое число; -
map<string,T>— словарь, где ключ является строкой, а значение имеет тип<T>; -
string— строка.
Встроенные переменные
Механизм шаблонов позволяет использовать встроенные переменные. Для обращения к переменной используйте следующий синтаксис:
${variable}
Здесь variable — имя переменной.
Доступны следующие переменные:
-
pak_id— идентификатор ПАК. -
entity_id— текущая сущность при расчёте статусов и индикаторов. -
idиmeta.<поле>— поля текущей сущности при рендереtitleиsubtitle.
Элементы типа repeat_for имеют следующие особенности:
-
Переменные
_module_id,_node_idи другие формируются из меток, указанных вrepeat_for.id_field. -
В качестве имён переменных могут быть использованы любые метки, которые возвращает запрос в
repeat_for.list_query. -
Переменная должна существовать в данных, иначе раскрытие панели будет некорректным.
Структура шаблона
Каждый шаблон представляет собой YAML-файл со следующей структурой:
---
uid: mbd_p
title: МПД.П
version: v1.0
schema_version: "1.1"
refresh_interval: 30
panels:
# Панели
relationships:
# Взаимосвязи между панелями
aggregations:
# Правила агрегации
Особенности заполнения шаблона:
-
Комбинация значений полей
uidиversionв каждом шаблоне должна быть уникальной. -
В блоке
panelsдолжна быть хотя бы одна запись.
aggregations
Блок aggregations содержит список правил агрегации.
Каждое правило может содержать следующие поля:
-
conditionТребования к срабатыванию условий.
Тип:
string.Возможные значения:
-
ALL— должны быть выполнены одновременно все условия; -
ANY— должно быть выполнено хотя бы одно условие.
-
-
depends_onСписок идентификаторов зависимых панелей.
Тип:
array<string>.Это поле обязательно для заполнения. -
targetИдентификатор целевой панели
Тип:
string.Это поле обязательно для заполнения. -
typeНазвание типа зависимости.
Тип:
string.Возможное значение:
dependency.
panels
Блок panels содержит список записей, описывающих панели.
Каждая панель может содержать следующие поля:
-
card_templateШаблон карточки панели.
Тип: card_template.
Это поле обязательно для заполнения для панелей с
type=grid. -
countersПсевдоним для
entitiesв шаблонах со схемой версии 1.0.Тип: array<entity_counter>.
-
entitiesВложенные счётчики сущности. Счётчик может содержать ссылки на дочернюю панель через поле
query.Тип: array<entity_counter>.
-
entity_fieldsПоля для совместимости со схемой версии 1.0. В схеме версии 1.1 чаще используется сочетание
idиrepeat_for.id_field.Тип: entity_fields.
-
idИдентификатор панели.
Тип:
string.Значение может содержать ссылки на переменные, например,
module-${_module_id}. Однако, после раскрытияrepeat_forитоговые значенияidдолжны быть уникальными.Это поле обязательно для заполнения. -
indicatorsИндикаторы состояния по числовым рядам.
Тип: array<indicator>.
-
list_queryPromQL- или MetricQL-запрос, возвращающий временные ряды для сущностей панели.
Тип:
string.Как правило, одна сущность соответствует одному ряду после группировки по идентификатору сущности.
Это поле обязательно для заполнения для панелей с
type=list. -
metaСписок меток, которые нужно перенести из временного ряда в поле
metaсущности.Тип: array<meta_item>.
-
panel_typeСемантический тип панели. Значение этого поля влияет на фильтрацию в API и на выбор ID-поля сущности по умолчанию (через внутреннее соответствие
panel_typeполюlabel).Тип:
string.Возможные значения:
-
comm— коммутатор; -
connections— подключения; -
hw_node— аппаратный узел; -
interconnect— сеть интерконнект; -
management— менеджмент-сеть; -
module— модуль ПАК; -
node— узел ПАК; -
pak— ПАК; -
pg_service— сервис PostgreSQL; -
public— сеть внешнего доступа; -
tps— количество транзакций в секунду в кластере PostgreSQL; -
vip— Virtual IP; -
vm— виртуальная машина.
-
-
repeat_forПравило размножения панелей по результату запроса.
Тип: repeat_for.
-
row_templateШаблон строки панели.
Тип: row_template.
Это поле обязательно для заполнения для панелей с
type=list. -
status_queryЗапрос, по которому определяется статус панели. Фактическое поведение зависит от возвращаемых меток.
Тип:
string.Особенности работы поля:
-
Если запрос возвращает метку
severityсо значениемcriticalилиwarning, итоговый статус рассчитывается следующим образом:-
critical—red; -
warning—yellow; -
во всех остальных случаях —
green.
-
-
Если запрос не удаётся выполнить, или не удаётся сопоставить сущности, итоговый статус —
gray. -
Для
ALERTSесть оптимизированный путь обработки. -
Если в результатах запроса есть дублирование оповещений, добавьте в запрос агрегацию, например:
max by (_node_id, alertname, severity, _cids) (ALERTS{_node_id="${entity_id}", ...})
В
max byобязательно сохраняйте значениеlabelсущности панели, иначе движок не сможет привязать алерт кentity, и статус может статьgray.Это поле обязательно для заполнения для панелей, имеющих статус.
-
-
titleЗаголовок панели в веб-интерфейсе.
Тип:
string. -
typeТип панели.
Тип:
string.Возможные значения:
-
grid— набор карточек; -
list— список сущностей; -
stat— единственное значение.
-
card_template
Элементы типа card_template могут содержать следующие поля:
-
detailsДополнительные поля.
Тип:
map<string,string>. -
indicatorИсточник итогового статуса.
Тип:
boolean.Возможные значения:
-
true— источником итогового статуса являетсяindicators. Отсутствие данных считается критической проблемой и поднимает итоговый статус сущности доred. -
false— источником итогового статуса являетсяstatus_query, индикаторы добавляются поверх.
Это поле обязательно для заполнения. -
-
subtitleПодзаголовок карточки в веб-интерфейсе.
Тип:
string. -
titleЗаголовок карточки в веб-интерфейсе.
Тип:
string.Это поле обязательно для заполнения. -
tooltipПодсказка для карточки в веб-интерфейсе.
Тип:
string.
entity_counter
Элементы типа entity_counter могут содержать следующие поля:
-
idИдентификатор счётчика.
Тип:
string. -
queryPromQL-запрос, MetricQL-запрос или ссылка на
idпанели.Тип:
string. -
thresholdsНастройки пороговых значений.
Тип: thresholds.
-
titleЗаголовок элемента в веб-интерфейсе.
Тип:
string.Это поле обязательно для заполнения.
entity_fields
Элементы типа entity_fields могут содержать следующие поля:
-
group_byПравило дополнительной группировки.
Тип:
string. -
idМетка ряда, которая задаёт идентификатор сущности.
Тип:
string.Это поле обязательно для заполнения. -
metaМета-поля сущности.
Тип: array<meta_item>.
indicator
Элементы типа indicator могут содержать следующие поля:
-
idИдентификатор индикатора.
Тип:
string.Это поле обязательно для заполнения. -
queryPromQL- или MetricQL-выражение.
Тип:
string.Это поле обязательно для заполнения. -
thresholdsПравила вычисления пороговых значений.
Тип: thresholds.
-
titleПодпись индикатора в веб-интерфейсе.
Тип:
string.
meta_item
Элементы типа meta_item могут содержать следующие поля:
-
nameКлюч, который попадёт в
entity.meta.Тип:
string.Это поле обязательно для заполнения. -
sourceНазвание метки в ряду
list_queryдля выбора значения.Тип:
string.Это поле обязательно для заполнения.
repeat_for
Элементы типа repeat_for могут содержать следующие поля:
-
id_fieldНазвание метки ряда, значение которой станет идентификатором итерации.
Тип:
string.Это поле обязательно для заполнения. -
list_queryЗапрос, который возвращает набор значений для раскрытия панели.
Тип:
string.Это поле обязательно для заполнения. -
sourcelist_queryилиidуже объявленной панели.Тип:
string.Это поле обязательно для заполнения.
row_template
Элементы типа row_template могут содержать следующие поля:
-
detailsДополнительные поля.
Тип:
map<string,string>. -
indicatorИсточник итогового статуса.
Тип:
boolean.Возможные значения:
-
true— источником итогового статуса являетсяindicators. Отсутствие данных считается критической проблемой и поднимает итоговый статус сущности доred. -
false— источником итогового статуса являетсяstatus_query, индикаторы добавляются поверх.
Это поле обязательно для заполнения. -
-
subtitleПодзаголовок строки.
Тип:
string. -
titleЗаголовок строки.
Тип:
string.Это поле обязательно для заполнения.
thresholds
Элементы типа thresholds могут содержать следующие поля:
-
criticalПравило для порога
critical.Тип:
string. -
warningПравило для порога
warning.Тип:
string.Правило имеет вид строки, состоящий из оператора сравнения и числового значения, например:
# ... thresholds: critical: >= 90 warning: >= 80Возможные операторы сравнения:
-
>=— больше или равно; -
⇐— меньше или равно; -
>— больше; -
<— меньше; -
==— равно; -
!=— не равно.
-
relationships
Блок relationships описывает взаимосвязи между панелями.
Элементы типа relationships могут содержать следующие поля:
-
fromИдентификатор родительской панели.
Тип:
string.Это поле обязательно для заполнения. -
labelПодпись к связи, отображаемая в веб-интерфейсе.
Тип:
string. -
toИдентификатор дочерней панели.
Тип:
string.Это поле обязательно для заполнения.
schema_version
Номер версии схемы, которой соответствует шаблон.
Тип: string.
Значение в этом поле влияет на то, каким образом Геном обрабатывает значения других полей.
Возможные значения:
-
1.0— для старых шаблонов; -
1.1— для новых шаблонов.
uid
Код типа ПАК.
Тип: string.
Возможные значения:
-
base— базовый; -
constructor— конструктор ПАК; -
mbd_g— МБД.Г; -
mbd_ii— МБД.ИИ; -
mbd_kh— МБД.КХ; -
mbd_p— МБД.П; -
mbd_s— МБД.С; -
mbd_t— МБД.Т; -
mbd_h— МБД.Х; -
mbd_y— МБД.Я; -
mv_vk— МВ.ВК; -
mv_vrm— МВ.ВРМ; -
mv_g— МВ.Г; -
mv_di— МВ.ДИ; -
mv_k— МВ.К; -
mv_s— МВ.С; -
mdi_v— МДИ.В; -
ms_bn— МС.БН; -
mhd_b— МХД.Б; -
mhd_du— МХД.ДУ; -
mhd_o— МХД.О; -
mhd_r— МХД.Р.