Перейти к основному содержимому
Версия: 6.0

Режим обслуживания

Описание​

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

Функция используется во время плановых и внеплановых технических работ, например:

  • миграции данных
  • обновления инфраструктуры
  • перезапуска сервисов
  • технического обслуживания серверов
  • обновления сетевого оборудования
  • проведения регламентных работ

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

При этом:

  • исходные значения метрик продолжают рассчитываться
  • история состояний не изменяется
  • совпавшие измерения получают признак is_in_maintenance = true
  • такие измерения исключаются из расчета сервисных метрик и состояния сервисов

Статусы окна обслуживания​

Окно обслуживания может находиться в одном из следующих состояний:

СтатусОписание
plannedОкно создано и ожидает наступления времени начала обслуживания (start_at)
activeОбслуживание активно и применяется к совпавшим измерениям
completedОбслуживание завершено автоматически по end_at или вручную пользователем
cancelledОкно обслуживания было отменено до момента начала

CRUD операции​

Создание окна обслуживания​

Создает новое окно обслуживания для одной или нескольких глобальных метрик.

Запрос​

Пример запроса
POST _core/rsm/maintenance
{
"name": "Миграция данных PostgreSQL",
"groups": [
{
"name": "Основной кластер БД",
"elements": [
{
"name": "host_name",
"values": [
"db-node-01",
"db-node-02"
]
}
]
}
],
"metric_ids": [
"CycdCp0BvPpotMR2-UhX"
],
"start_at": "2026-04-16T17:05:00.000Z",
"end_at": "2026-04-16T19:50:00.000Z"
}

Параметры запроса​

ПолеТипОбязательноеОписание
namestringДаНазвание окна обслуживания. Не должно быть пустым
groupsarrayДаГруппы фильтров для определения охвата. Должен быть указан минимум один элемент
groups[].namestringДаНазвание группы фильтров. Не должно быть пустым
groups[].elementsarrayДаУсловия внутри группы. Должен быть указан минимум один элемент
groups[].elements[].namestringДаНазвание измерения. Не должно быть пустым
groups[].elements[].valuesarray[string]ДаЗначения измерения. Должен быть указан минимум один элемент
metric_idsarray[string]ДаСписок глобальных метрик. Должна быть выбрана минимум одна метрика
start_atdatetimeДаВремя начала обслуживания
end_atdatetimeДаВремя завершения обслуживания. Значение должно быть больше start_at
Логика работы фильтров

Инцидент попадает в обслуживание, если полностью соответствует хотя бы одной группе фильтров. Для соответствия группе должны совпасть все условия этой группы одновременно.

Обновление окна обслуживания​

Изменяет существующее окно обслуживания.

Запрос​

Пример запроса на обновление
PUT _core/rsm/maintenance/{id}
{
"name": "Миграция данных PostgreSQL",
"groups": [
{
"name": "Основной кластер БД",
"elements": [
{
"name": "host_name",
"values": [
"db-node-02",
"db-node-03"
]
}
]
}
],
"metric_ids": [
"CycdCp0BvPpotMR2-UhX"
],
"start_at": "2026-04-16T17:05:00.000Z",
"end_at": "2026-04-16T19:50:00.000Z"
}

Параметры запроса​

Используются те же поля, что и при создании окна обслуживания.

Получение списка окон обслуживания​

Возвращает все созданные окна обслуживания.

Запрос​

GET _core/rsm/maintenance/

Получение конкретного окна обслуживания​

Возвращает информацию по конкретному окну обслуживания.

Запрос​

GET _core/rsm/maintenance/{id}

Пример ответа​

Окно обслуживания
{
"_meta": {
"id": "c8Evq50BlXbjsgPFwFTr",
"created": "2026-04-20T13:58:46.774Z",
"updated": "2026-04-20T22:59:00.000Z",
"type": "user",
"tag_ids": [],
"from_system": false
},
"_permissions": {
"read": {
"roles": [],
"users": []
},
"write": {
"roles": [],
"users": []
},
"owner": "admin",
"isWritable": true
},
"name": "Миграция данных PostgreSQL",
"start_at": "2026-04-20T14:00:00.000Z",
"end_at": "2026-04-20T22:59:00.000Z",
"groups": [
{
"name": "Основной кластер БД",
"elements": [
{
"name": "request_origin",
"values": [
"REST"
]
},
{
"name": "host_name",
"values": [
"db-node-03"
]
},
{
"name": "request_type",
"values": [
"SELECT"
]
}
]
},
{
"name": "Резервный кластер БД",
"elements": [
{
"name": "request_origin",
"values": [
"REST"
]
},
{
"name": "host_name",
"values": [
"db-node-04"
]
},
{
"name": "request_type",
"values": [
"SELECT"
]
}
]
}
],
"metric_ids": [
"oeidyJwB_rUm1JmA_Qfz",
"-Ydc9pwBG_16VCpVUhUe"
],
"state": "completed",
"metric_coating_statistic": {
"selected": 2,
"with_coating": 1,
"without_coating": 1
}
}

Основные поля ответа​

ПолеОписание
_meta.idИдентификатор окна обслуживания
_meta.createdДата и время создания
_meta.updatedДата и время последнего изменения
_permissions.ownerВладелец окна обслуживания
_permissions.isWritableДоступность редактирования
nameНазвание окна обслуживания
start_atВремя начала обслуживания
end_atВремя завершения обслуживания
groupsГруппы фильтров охвата
groups[].elementsУсловия внутри группы
metric_idsСписок связанных глобальных метрик
stateТекущий статус окна обслуживания
metric_coating_statistic.selectedКоличество выбранных метрик
metric_coating_statistic.with_coatingКоличество метрик с покрытием
metric_coating_statistic.without_coatingКоличество метрик без покрытия

Удаление окна обслуживания​

Удаляет окно обслуживания.

Запрос​

DELETE _core/rsm/maintenance/{id}

Запросы для отображения и предпросмотра​

Проверка покрытия метрик​

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

Позволяет:

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

Запрос на проверку покрытия​

Запрос​

Пример запроса
POST _core/rsm/maintenance/intersection
{
"groups": [
{
"name": "Серверы базы данных",
"elements": [
{
"name": "host_name",
"values": [
"db-node-03"
]
}
]
}
],
"metric_ids": [
"oeidyJwB_rUm1JmA_Qfz",
"-Ydc9pwBG_16VCpVUhUe"
]
}

Параметры запроса​

ПолеТипОбязательноеОписание
groupsarrayДаГруппы фильтров для проверки покрытия. Должен быть указан минимум один элемент
metric_idsarray[string]ДаВыбранные глобальные метрики. Должна быть выбрана минимум одна метрика

Пример ответа​

Результат пересечения
{
"fields": [
"host_name"
],
"metric_coating_statistic": {
"selected": 2,
"with_coating": 1,
"without_coating": 1
},
"metric_entities": [
{
"title": "Время отклика базы данных",
"dimensions": {
"host_name": "db-node-03",
"request_origin": "REST"
},
"trend": [
{
"timestamp": "2026-04-27T09:00:00.000Z",
"value": 200
},
{
"timestamp": "2026-04-27T09:04:00.000Z",
"value": 204
}
]
}
]
}

Основные поля ответа​

ПолеОписание
fieldsСписок общих измерений (пересечение измерений выбранных глобальных метрик)
metric_coating_statistic.selectedОбщее количество выбранных метрик
metric_coating_statistic.with_coatingКоличество метрик со статусом С покрытием
metric_coating_statistic.without_coatingКоличество метрик со статусом Без покрытия
metric_entitiesСписок совпавших рядов для метрик с покрытием
metric_entities[].titleНазвание глобальной метрики
metric_entities[].dimensionsЗначения измерений совпавшего ряда
metric_entities[].trendИстория изменения значения метрики
metric_entities[].trend[].timestampВремя фиксации значения
metric_entities[].trend[].valueЗначение метрики в указанный момент

Получение доступных измерений для конкретной метрики​

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

  • текущих измерений
  • признака обслуживания
  • связанных окон обслуживания
  • списка активных maintenance для строки измерения
GET _core/rsm/maintenance/metric_dimensions/{metric_id}

Пример ответа​

Пример доступных измерений конкретной метрики
{
"_meta": {
"id": "-Ydc9pwBG_16VCpVUhUe",
"from_system": false
},
"title": "Время отклика базы данных",
"info": {
"total": 6,
"in_maintenance": 1,
"active": 5
},
"metric_dimensions": [
{
"_meta": {
"metricId": "y8Epq50BlXbjsgPFzE1J",
"dimensionsSearchable": [
"request_type:SELECT",
"host_name:db-node-03",
"request_origin:REST"
],
"entityId": "c9adc9a911dd83cb1cd5489161af123300b87de843796314b6f8a4b384aa1b64",
"entityTitle": "request_type: SELECT; host_name: db-node-03; request_origin: REST",
"dimensions": {
"request_type": "SELECT",
"host_name": "db-node-03",
"request_origin": "REST"
},
"isInMaintenance": true,
"layerId": "7ScdCp0BvPpotMR2-UdW",
"serviceId": "-icdCp0BvPpotMR2-UdX",
"parentMetricId": "-Ydc9pwBG_16VCpVUhUe",
},
"calculation": {
"value": 50,
"severity": "MEDIUM",
"timestamp": "2026-04-27T10:44:00.001Z"
},
"layer_id": "7ScdCp0BvPpotMR2-UdW",
"service_id": "-icdCp0BvPpotMR2-UdX",
"layer_name": "Основной кластер баз данных",
"service_name": "Сервис управления заказами",
"trends": [
{
"timestamp": "2026-04-27T09:44:00.000Z",
"value": 597
},
{
"timestamp": "2026-04-27T09:48:00.000Z",
"value": 588
},
{
"timestamp": "2026-04-27T09:52:00.000Z",
"value": 588
},
{
"timestamp": "2026-04-27T09:56:00.000Z",
"value": 582
},
{
"timestamp": "2026-04-27T10:00:00.000Z",
"value": 579
}
],
"maintenances": [
{
"_meta": {
"id": "F4eHzp0Ba9-VhzmokbfC",
"created": "2026-04-27T10:41:24.432Z",
"updated": "2026-04-27T10:42:00.000Z",
"type": "user",
"tag_ids": [],
"from_system": false
},
"name": "Миграция данных PostgreSQL",
"start_at": "2026-04-27T10:42:00.000Z",
"end_at": "2026-04-27T12:59:00.000Z"
}
]
}
]
}
ПолеОписание
_meta.idИдентификатор глобальной метрики
titleНазвание глобальной метрики
info.totalОбщее количество измерений
info.in_maintenanceКоличество измерений в обслуживании
info.activeКоличество активных измерений
metric_dimensions[].dimensionsНабор измерений строки
metric_dimensions[].calculationТекущее состояние и значение
metric_dimensions[].layer_nameНазвание слоя
metric_dimensions[].service_nameНазвание сервиса
metric_dimensions[].trendsИстория изменения значений
metric_dimensions[].maintenancesАктивные окна обслуживания
maintenances[].nameНазвание maintenance
maintenances[].start_atВремя начала
maintenances[].end_atВремя завершения

Получение доступных измерений для всех метрик​

Используется для построения формы выбора условий обслуживания.

GET _core/rsm/maintenance/metric_dimensions/