Maintenance Mode
Description
Maintenance mode is a mechanism for temporarily excluding selected global metric dimensions from incident analysis and subsequent service state calculations.
This function is used during planned and unplanned technical work, for example:
- data migration
- infrastructure updates
- service restarts
- server maintenance
- network equipment updates
- scheduled maintenance work
During such operations, some metrics may temporarily transition to a degraded state, although this is not a
real incident.
Maintenance mode helps avoid false positives and prevents creating incidents based on expected changes
in state.
At the same time:
- original metric values continue to be calculated
- state history is not changed
- matched dimensions receive the attribute
is_in_maintenance = true - such dimensions are excluded from calculating service metrics and service states
Maintenance Window Statuses
A maintenance window can be in one of the following states:
| Status | Description |
|---|---|
planned | Window created and awaiting the start time of maintenance (start_at) |
active | Maintenance is active and applied to matched dimensions |
completed | Maintenance completed automatically at end_at or manually by user |
cancelled | Maintenance window was canceled before the start time |
CRUD Operations
Creating a Maintenance Window
Creates a new maintenance window for one or more global metrics.
Request
Request example
POST _core/rsm/maintenance
{
"name": "PostgreSQL Data Migration",
"groups": [
{
"name": "Main DB Cluster",
"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"
}
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Maintenance window name. Must not be empty |
groups | array | Yes | Filter groups to define coverage. At least one element must be specified |
groups[].name | string | Yes | Filter group name. Must not be empty |
groups[].elements | array | Yes | Conditions within the group. At least one element must be specified |
groups[].elements[].name | string | Yes | Dimension name. Must not be empty |
groups[].elements[].values | array[string] | Yes | Dimension values. At least one element must be specified |
metric_ids | array[string] | Yes | List of global metrics. At least one metric must be selected |
start_at | datetime | Yes | Maintenance start time |
end_at | datetime | Yes | Maintenance end time. Value must be greater than start_at |
An incident falls into maintenance if it fully matches at least one filter group. To match a group, all conditions of that group must match simultaneously.
Updating a Maintenance Window
Changes an existing maintenance window.
Request
Update request example
PUT _core/rsm/maintenance/{id}
{
"name": "PostgreSQL Data Migration",
"groups": [
{
"name": "Main DB Cluster",
"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"
}
Request Parameters
The same fields as when creating a maintenance window are used.
Getting a List of Maintenance Windows
Returns all created maintenance windows.
Request
GET _core/rsm/maintenance/
Getting a Specific Maintenance Window
Returns information about a specific maintenance window.
Request
GET _core/rsm/maintenance/{id}
Response Example
Maintenance Window
{
"_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 Data Migration",
"start_at": "2026-04-20T14:00:00.000Z",
"end_at": "2026-04-20T22:59:00.000Z",
"groups": [
{
"name": "Main DB Cluster",
"elements": [
{
"name": "request_origin",
"values": [
"REST"
]
},
{
"name": "host_name",
"values": [
"db-node-03"
]
},
{
"name": "request_type",
"values": [
"SELECT"
]
}
]
},
{
"name": "Backup DB Cluster",
"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
}
}
Main Response Fields
| Field | Description |
|---|---|
_meta.id | Maintenance window identifier |
_meta.created | Creation date and time |
_meta.updated | Last modification date and time |
_permissions.owner | Maintenance window owner |
_permissions.isWritable | Edit availability |
name | Maintenance window name |
start_at | Maintenance start time |
end_at | Maintenance end time |
groups | Coverage filter groups |
groups[].elements | Conditions within group |
metric_ids | List of related global metrics |
state | Current maintenance window status |
metric_coating_statistic.selected | Number of selected metrics |
metric_coating_statistic.with_coating | Number of metrics with coverage |
metric_coating_statistic.without_coating | Number of metrics without coverage |
Deleting a Maintenance Window
Deletes a maintenance window.
Request
DELETE _core/rsm/maintenance/{id}
Display and Preview Requests
Checking Metric Coverage
Used for preliminary coverage checking before saving a maintenance window.
Allows:
- determine intersection of dimensions of selected metrics
- get list of matched series
- check for coverage
- show user preliminary result of applying maintenance mode
Coverage Check Request
Request
Request example
POST _core/rsm/maintenance/intersection
{
"groups": [
{
"name": "Database Servers",
"elements": [
{
"name": "host_name",
"values": [
"db-node-03"
]
}
]
}
],
"metric_ids": [
"oeidyJwB_rUm1JmA_Qfz",
"-Ydc9pwBG_16VCpVUhUe"
]
}
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
groups | array | Yes | Filter groups for coverage check. At least one element must be specified |
metric_ids | array[string] | Yes | Selected global metrics. At least one metric must be selected |
Response Example
Intersection Result
{
"fields": [
"host_name"
],
"metric_coating_statistic": {
"selected": 2,
"with_coating": 1,
"without_coating": 1
},
"metric_entities": [
{
"title": "Database Response Time",
"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
}
]
}
]
}
Main Response Fields
| Field | Description |
|---|---|
fields | List of common dimensions (intersection of dimensions of selected metrics) |
metric_coating_statistic.selected | Total number of selected metrics |
metric_coating_statistic.with_coating | Number of metrics with status With coverage |
metric_coating_statistic.without_coating | Number of metrics with status Without coverage |
metric_entities | List of matched series for metrics with coverage |
metric_entities[].title | Global metric name |
metric_entities[].dimensions | Values of dimensions of matched series |
metric_entities[].trend | History of metric value changes |
metric_entities[].trend[].timestamp | Time of value fixation |
metric_entities[].trend[].value | Metric value at specified time |
Getting Available Dimensions for a Specific Metric
Used on the specific metric screen to display:
- current dimensions
- maintenance flag
- related maintenance windows
- list of active maintenance for dimension row
GET _core/rsm/maintenance/metric_dimensions/{metric_id}
Response Example
Example of available dimensions for a specific metric
{
"_meta": {
"id": "-Ydc9pwBG_16VCpVUhUe",
"from_system": false
},
"title": "Database Response Time",
"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": "Main Database Cluster",
"service_name": "Order Management Service",
"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 Data Migration",
"start_at": "2026-04-27T10:42:00.000Z",
"end_at": "2026-04-27T12:59:00.000Z"
}
]
}
]
}
| Field | Description |
|---|---|
_meta.id | Global metric identifier |
title | Global metric name |
info.total | Total number of dimensions |
info.in_maintenance | Number of dimensions in maintenance |
info.active | Number of active dimensions |
metric_dimensions[].dimensions | Set of row dimensions |
metric_dimensions[].calculation | Current state and value |
metric_dimensions[].layer_name | Layer name |
metric_dimensions[].service_name | Service name |
metric_dimensions[].trends | History of value changes |
metric_dimensions[].maintenances | Active maintenance windows |
maintenances[].name | Maintenance name |
maintenances[].start_at | Start time |
maintenances[].end_at | End time |
Getting Available Dimensions for All Metrics
Used for building the maintenance condition selection form.
GET _core/rsm/maintenance/metric_dimensions/