Перейти к содержимому

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

Окно обслуживания (maintenance window) — интервал плановых работ, в который Notifly не будит команду: деплой с 02:00 до 04:00, еженедельное обновление БД по вторникам, миграция в выходные.

Раздел Мониторинг → Окна обслуживания (или Cmd/Ctrl+K → «Окна обслуживания»). Каналы и мониторы в активном окне помечаются бейджем «Обслуживание».

  • Каналы — все мониторы и heartbeat-ы этих каналов и все сообщения в них. Флажок «Включая вложенные каналы» распространяет окно на всё поддерево.
  • Отдельные мониторы — конкретные мониторы/heartbeat-ы, даже если их канал в окно не входит.

Покрывать можно только свои каналы и мониторы своих каналов, созданные вами. В одном окне — до 200 каналов и до 200 отдельных мониторов; название — до 100 символов. Выключенное окно (флажок «Окно включено» снят) ни на что не влияет.

ТипПоля
РазовоеstartsAt – endsAt (не длиннее 31 дня)
Еженедельноедни недели (days, ISO: 1 = пн … 7 = вс; по дню начала), start–end в часовом поясе; через полночь можно

Конец окна не включается: окно 02:00–04:00 в 04:00 уже закончилось.

ГдеЭффект
Мониторы и heartbeat-ыПроверки продолжаются и пишутся в историю, но алерт о падении откладывается. Если после окна проблема осталась, первая же проверка отправит алерт
Сообщения каналовНе эскалируются во внешние каналы (email, SMS, звонки, мессенджеры, вебхуки) — ни в окне, ни после него
Push на устройстваПриходят беззвучно: сервер ставит флаг notifly::delivery (см. ниже)
Статус-страницаКомпонент показывает «Плановые работы», общий баннер — «Идут плановые работы»; провалы проверок в окне не портят аптайм 30/90 дней
ИнцидентыАвто-инцидент статус-страницы в окне не открывается; если сервис лежит и после окна — откроется вместе с отложенным алертом

Детали:

  • «Восстановлено» без «Упало» не приходит: если монитор упал и поднялся внутри окна, вы не получите ни одного сообщения.
  • Heartbeat, чей пинг «протух» внутри окна, не переходит в alerting: проверка переносится на конец окна. Пришёл пинг — heartbeat тихо вернётся в ok, не пришёл — после окна уйдёт обычный алерт. В историю такой пропуск пишется один раз на окно и аптайм не портит.
  • Контент-, workflow- и browser-workflow-мониторы в окне не сообщают об изменениях и не переносят «эталон»: после окна значения сравнятся со снимком до работ, временная заглушка «ведутся работы» алерта не даст.
  • В аптайме провал внутри окна исключается и из числителя, и из знаменателя. День, где все провалы пришлись на окно, закрашивается отдельным цветом.

Каждое сообщение, созданное в канале внутри активного окна, получает в extras:

{
"notifly::delivery": {"silent": true, "reason": "maintenance"}
}

Клиенты показывают такое уведомление без звука, вибрации и всплывающего баннера — но показывают (в отличие от служебного флага notifly::silent). Подробнее — в протоколе WebSocket.

Метод и путьОписание
GET /maintenance-windowСписок своих окон (с вычисленными полями)
POST /maintenance-windowСоздать
GET /maintenance-window/{id}Одно окно
PUT /maintenance-window/{id}Заменить поля окна
DELETE /maintenance-window/{id}Удалить (204)
Окно терминала
# Разовое окно на канал и всех его потомков
curl -X POST -H "X-Notifly-Key: $TOKEN" -H "Content-Type: application/json" \
https://host/maintenance-window \
-d '{"name":"Релиз 2.4","channelIds":[12],"includeSubtree":true,"monitors":[],
"schedule":"once","startsAt":"2026-10-02T23:00:00Z","endsAt":"2026-10-03T01:00:00Z",
"enabled":true}'
# Еженедельное окно для одного HTTP-монитора
curl -X POST -H "X-Notifly-Key: $TOKEN" -H "Content-Type: application/json" \
https://host/maintenance-window \
-d '{"name":"Бэкап БД","channelIds":[],"monitors":[{"kind":"http_monitor","id":345}],
"schedule":"weekly","timezone":"Europe/Moscow","days":[2],"start":"02:00","end":"04:00",
"enabled":true}'

Виды мониторов (kind): monitor, http_monitor, content_monitor, port_monitor, workflow_monitor, browser_workflow_monitor, heartbeat.

В ответе к полям окна добавляются вычисленные: active — окно идёт сейчас; nextStart/nextEnd — текущее (если active) или ближайшее окно; coveredChannelIds — каналы охвата с раскрытым поддеревом.

Коды: 400 — ошибка валидации, чужой канал или монитор; 403 — лимит (100 окон), read-only или ограниченный по каналам API-токен; 404 — чужое или несуществующее окно.