Перейти к основному содержимому
Версия: 2.0 (WIP)

Шаблоны мониторинга

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

Шаблон мониторинга является центральной сущностью системы мониторинга, объединяющей в себе все остальные компоненты: агенты сбора метрик, задания, агенты обработки правил и индикаторы здоровья. Именно поэтому экспорт шаблона мониторинга — это единственный способ перенести полную, самодостаточную конфигурацию мониторинга между стендами в рамках одной операции.

Основные компоненты шаблона мониторинга

  • Область видимости КЕ — определяет, какие конфигурационные единицы (КЕ) попадают в область действия шаблона. Задаётся с помощью TQL-запроса, который описывает иерархию узлов и условия фильтрации.
  • Метрики — определяет, какие данные собирать (например, использование CPU, памяти, количество запросов к веб-серверу). Каждая метрика привязана к узлу TQL, заданию (Job) и агенту сбора метрик, а также содержит шаблон формирования таргетов.
  • Индикаторы здоровья — предопределённые правила для создания алертов о проблемах (например, если использование CPU превышает 90%). Индикатор может быть связан с агентом обработки правил.

Конфигурация шаблона мониторинга

Конфигурирование шаблона выполняется на странице Главная/Настройки/Мониторинг/Шаблоны мониторинга.

  • Отображение — имя шаблона для отображения в интерфейсе
  • Системное имя — уникальное название шаблона (только латиница)
  • Описание — текстовое описание назначения шаблона
  • Область видимости КЕ (TQL-запрос) — визуальный редактор TQL-запроса, определяющий, к каким КЕ из CMDB применяется шаблон. Запрос описывает граф узлов (типов КЕ) и рёбер (связей между ними), а также условия фильтрации для каждого узла.
  • Метрики — список метрик, привязанных к узлам TQL. Для каждой метрики указываются задание (Job), агент сбора метрик и шаблон таргетов (Jinja2).
  • Индикаторы здоровья — список индикаторов, определяющих правила алертинга. Каждый индикатор привязан к узлу TQL, типу индикатора здоровья и агенту обработки правил.

Импорт и Экспорт шаблонов мониторинга

Система позволяет выгружать полные конфигурации шаблонов мониторинга в виде JSON-файла для резервного копирования или переноса на другие стенды, а также загружать их из ранее выгруженного файла. Управление осуществляется через выпадающее меню рядом с кнопкой «Добавить» в левой панели списка шаблонов.

Шаблон мониторинга — единый пакет для переноса

В отличие от отдельного экспорта агентов сбора метрик (которые выгружают только имена связанных заданий, но не их конфигурации) и отдельного экспорта заданий (которые выгружают только имена связанных агентов), при экспорте шаблона мониторинга выгружается вся связанная конфигурация целиком:

  • TQL-запрос (область видимости КЕ) — полный граф узлов и рёбер с условиями фильтрации
  • Метрики — включая шаблоны формирования таргетов (Jinja2)
  • Задания (Jobs) — полные YAML-конфигурации заданий, привязанных к метрикам шаблона, с указанием имён связанных агентов
  • Агенты сбора метрик — полные конфигурации (YAML) агентов, используемых в метриках шаблона, включая списки всех привязанных к ним заданий
  • Индикаторы здоровья — правила алертинга, включая выражения (expr), пороги срабатывания, severity, аннотации и зависимости между индикаторами
  • Типы индикаторов здоровья — конфигурации типов индикаторов, используемых в шаблоне
  • Агенты обработки правил — полные конфигурации (YAML) агентов, выполняющих проверку правил алертинга

Это делает экспорт шаблона мониторинга самодостаточным: для разворачивания мониторинга на новом стенде достаточно импортировать один файл.

⚠️ Важные замечания при импорте

  • Типы КЕ и атрибуты в CMDB должны существовать на целевом стенде. Шаблон ссылается на типы КЕ (например, pamir_microservice, patgresql_pamir) и их атрибуты — если их нет в CMDB целевого стенда, область видимости TQL не вернёт результатов, и таргеты не будут сгенерированы.
  • Экспортёры (blackbox-exporter, postgres-exporter и т.д.) должны быть развёрнуты и доступны по сети на целевом стенде.
  • При импорте система проверяет конфликты имён для всех вложенных сущностей: шаблонов, заданий, агентов сбора метрик и агентов обработки правил. Для каждого конфликта необходимо выбрать действие.

Экспорт шаблонов

  1. Откройте выпадающее меню рядом с кнопкой «Добавить» и активируйте переключатель «Выбор».
  2. В списке слева отметьте галочками шаблоны, которые необходимо выгрузить.
  3. Снова откройте меню и нажмите «Экспорт». Будет скачан единый JSON-файл.

Импорт шаблонов

  1. В выпадающем меню выберите «Импорт».
  2. В открывшемся окне прикрепите ранее выгруженный JSON-файл и нажмите «Анализировать».
  3. Система проверит файл на наличие конфликтов с существующими сущностями (шаблоны, задания, агенты сбора метрик, агенты обработки правил). При обнаружении конфликта (статус ⚠️ Конфликт) для каждой сущности потребуется выбрать действие:
    • Пропустить действие — оставить существующую сущность без изменений
    • Заменить существующий — перезаписать настройки из файла
    • Переименовать — загрузить сущность из файла под новым уникальным именем
  4. После разрешения всех конфликтов нажмите «Импорт» для завершения загрузки.

Структура файла конфигурации (JSON)

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

{
"templates": [
{
"name": "pamir", // Системное имя шаблона
"label": "ПАМИР", // Имя для отображения в интерфейсе
"description": null, // Описание шаблона
"query": { // TQL-запрос (область видимости КЕ)
"nodes": [...], // Узлы графа (типы КЕ с условиями фильтрации)
"edges": [...], // Рёбра графа (связи между узлами)
"links": false // Флаг учёта связей
},
"tql_metrics": [ // Массив метрик шаблона
{
"name": "pamir_selfmonitoring", // Системное имя метрики
"description": null, // Описание метрики
"monitoring_template_name": "pamir", // Имя родительского шаблона
"node_id": "1", // ID узла TQL, к которому привязана метрика
"template": "- labels:\n ...", // Jinja2-шаблон формирования таргетов
"job": { // Полная конфигурация задания (Job)
"name": "pamir", // Системное имя задания
"label": "Памир", // Отображаемое имя
"tags": ["selfmonitoring"], // Теги задания
"config": "job_name: pamir\n...", // YAML-конфигурация задания
"vmagent_names": ["vmagent", "testik"] // Имена связанных агентов сбора
},
"vmagent_job": { // Связь метрика–агент–задание
"job_name": "pamir",
"vmagent_name": "vmagent"
},
"vmagent": { // Полная конфигурация агента сбора метрик
"name": "vmagent",
"label": "vmagent",
"tags": ["VM-AGENT"],
"config": "global:\n scrape_timeout: 10s\n...", // YAML-конфиг агента
"enabled": true,
"jobs": ["pamir", "node_exporter", "http", ...] // Все задания агента
}
}
],
"tql_hi_links": [ // Массив индикаторов здоровья
{
"id": "96830694-...", // UUID индикатора
"node_id": "1", // ID узла TQL
"hi_type_name": "license_state", // Имя типа индикатора здоровья
"type": "calculate", // Тип индикатора (calculate, metric и др.)
"metric_name": null, // Имя связанной метрики (если тип metric)
"rule": "", // Правило вычисления
"expression": 2, // Выражение/порог
"arguments": {}, // Аргументы правила
"template_name": "pamir", // Имя родительского шаблона
"vmalert_names": ["vmalert"], // Имена агентов обработки правил
"depend_hi_link_ids": [ // Зависимости от других индикаторов
{
"hi_link_id": "b14db5f8-...",
"link_id": "f3e9a888-...",
"src_node_id": "10",
"hi_type_name": "license_state"
}
],
"hi_type": { // Конфигурация типа индикатора здоровья
"name": "license_state",
"label": "Состояние лицензии",
"description": "",
"template": "",
"exporter_name": null,
"tags": [],
"exporter": null
},
"vmalert": { // Полная конфигурация агента обработки правил
"name": "vmalert",
"label": "vmalert",
"tags": ["default"],
"config": "groups:\n- name: pamir\n rules:\n - for: 5m\n...", // YAML с правилами
"managed_by": "SYSTEM",
"deduplication_group_by_labels": [],
"deduplication_ignore_labels": []
}
}
]
}
]
}

Описание ключевых разделов файла

Раздел query — TQL-запрос

Описывает граф области видимости шаблона:

ПолеОписание
nodesМассив узлов графа. Каждый узел описывает тип КЕ (name), условия фильтрации (conditions), псевдоним (alias), отображаемое имя (display_name) и позицию в визуальном редакторе (position).
edgesМассив рёбер графа. Каждое ребро описывает тип связи (name, например association), источник (source) и цель (target) по ID узлов, а также ограничения кардинальности (limitations_source, limitations_target).
linksФлаг учёта косвенных связей между КЕ.

Раздел tql_metrics — Метрики

Каждая метрика содержит:

ПолеОписание
nameСистемное имя метрики (латиница, цифры, _).
node_idИдентификатор узла TQL, к экземплярам которого привязывается метрика.
templateJinja2-шаблон для динамического формирования таргетов на основе КЕ из CMDB.
jobПолная конфигурация задания — включает YAML-код (config), теги, имена связанных агентов (vmagent_names).
vmagent_jobСвязка «задание–агент», определяющая, какой агент использует данное задание для этой метрики.
vmagentПолная конфигурация агента сбора метрик — включает YAML-код (config), статус активности (enabled), список всех привязанных заданий (jobs).

Каждый индикатор содержит:

ПолеОписание
idУникальный UUID индикатора.
node_idИдентификатор узла TQL, к которому привязан индикатор.
hi_type_nameСистемное имя типа индикатора здоровья.
typeТип индикатора (calculate — вычисляемый, metric — на основе метрики и др.).
ruleПравило вычисления состояния индикатора.
expressionВыражение или порог срабатывания.
vmalert_namesМассив имён агентов обработки правил, выполняющих проверку.
depend_hi_link_idsМассив зависимостей от других индикаторов здоровья (для каскадного вычисления состояний).
hi_typeКонфигурация типа индикатора — включает имя, описание, шаблон, связанный экспортёр.
vmalertПолная конфигурация агента обработки правил — включает YAML с группами правил алертинга, тип управления (managed_by), настройки дедупликации.

Связанные разделы