Режим обслуживания
Описание
Режим обслуживания — это механизм временного исключения выбранных измерений глобальных метрик из анализа инцидентов и последующих расчетов состояния сервисов.
Функция используется во время плановых и внеплановых технических работ, например:
- миграции данных
- обновления инфраструктуры
- перезапуска сервисов
- технического обслуживания серверов
- обновления сетевого оборудования
- проведения регламентных работ
Во время таких операций часть метрик может временно переходить в деградированное состояние, хотя это не является
реальной аварией.
Режим обслуживания позволяет избежать ложных срабатываний и не создавать инциденты на основе ожидаемых изменений
состояния.
При этом:
- исходные значения метрик продолжают рассчитываться
- история состояний не изменяется
- совпавшие измерения получают признак
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"
}
Параметры запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
name | string | Да | Название окна обслуживания. Не должно быть пустым |
groups | array | Да | Группы фильтров для определения охвата. Должен быть указан минимум один элемент |
groups[].name | string | Да | Название группы фильтров. Не должно быть пустым |
groups[].elements | array | Да | Условия внутри группы. Должен быть указан минимум один элемент |
groups[].elements[].name | string | Да | Название измерения. Не должно быть пустым |
groups[].elements[].values | array[string] | Да | Значения измерения. Должен быть указан минимум один элемент |
metric_ids | array[string] | Да | Список глобальных метрик. Должна быть выбрана минимум одна метрика |
start_at | datetime | Да | Время начала обслуживания |
end_at | datetime | Да | Время завершения обслуживания. Значение должно быть больше 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"
]
}
Параметры запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
groups | array | Да | Группы фильтров для проверки покрытия. Должен быть указан минимум один элемент |
metric_ids | array[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/