Қызмет көрсету терезелері: жоспарлы ТҚ кезінде алерттерді тыныштандыру

4 мин чтения
Обновлено 12 мая 2026

Қызмет көрсету терезесі (maintenance window) — жоспарланған уақыт аралығы, оның ішінде Tracker.ru URL-ды тексеруді жалғастырады, бірақ құлау туралы хабарламаларды жібермейді. Терезеге түскен тексерулер үшін down-статус туралы алерттер басылады; терезе ішіндегі downtime жоспарланбаған тоқтап тұру ретінде есептелмейді.

Бұл жоспарлы жұмыстар — деплой, ДҚ көшіруі, инфрақұрылымды жаңарту, TLS-сертификаттарды ротациялау, түнгі рестарттар — Telegram-ға жалған алерттер шквалына айналмауы және uptime статистикасын бұзбауы үшін қажет. Сіз алдын ала «осы сағатта сайт қолжетімсіз болуы мүмкін» деп жариялайсыз және мониторинг оны құрметтейді.

4 терезе түрі

type өрісі төрт мәннің бірін қабылдайды (миграцияда enum: 2026_02_13_204016_create_maintenance_windows_table.php). Түр қандай қосымша өрістер міндетті екенін анықтайды:

Түр Қашан қайталанады Міндетті өрістер Мысал
once Бір рет scheduled_date, start_time, duration_minutes 12 мамырда 03:00, 90 минут ДҚ көшіруі
daily Күн сайын start_time, duration_minutes 02:00-де 30 минуттық түнгі бэкап
weekly Көрсетілген күнде апта сайын day_of_week (0–6, 0=жексенбі), start_time, duration_minutes Жексенбіде 04:00-те 60 минут
monthly Көрсетілген күнде ай сайын day_of_month (1–31), start_time, duration_minutes 1-күнінде 03:00-те 120 минут

start_time өрісі TIME (HH:MM:SS) ретінде, duration_minutesunsignedSmallInteger ретінде (65535 минутқа дейін, іс жүзінде сирек тәуліктен ұзын) сақталады. Әдепкі бойынша active = true — терезені жоюсыз active = false етіп уақытша өшіруге болады (жоспарлы ТҚ кідіртілгенде пайдалы).

Ағымдағы айдағы күндер санынан көп day_of_month көрсетілсе (ақпанда 31), терезе сол айда жай ғана белсенділенбейді — қателіксіз.

Қалай баптау керек

Жеке кабинеттегі URL бетінде «Қызмет көрсету терезелері» блогын табыңыз. «Терезе қосу» басып, формада:

  1. Түрді таңдаңыз (once, daily, weekly, monthly).
  2. Осы түр үшін міндетті өрістерді толтырыңыз (жоғарыдағы кестені қараңыз).
  3. Бастау уақытын және ұзақтығын минутта көрсетіңіз.
  4. «Сақтау» басыңыз.

Терезе бірден белсенді болады. URL-дың терезе тізімі түрі мен кестесін көрсете отырып шығады; белсенді емес терезелер сұр түспен көрсетілген.

API

Қызмет көрсету терезелерін REST API арқылы басқаруға болады. Эндпоинт түрді, уақытты және ұзақтықты қабылдайды; өрістер UI-мен бір контракт бойынша валидацияланады.

# Апталық терезе: әр жексенбі 04:00-те 60 минутқа
curl -X POST https://tracker.ru/api/v1/urls/123/maintenance-windows \
  -H "Authorization: Bearer <api_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "weekly",
    "day_of_week": 0,
    "start_time": "04:00:00",
    "duration_minutes": 60,
    "active": true
  }'
# Бір реттік терезе: 12 мамырда 03:00-те 90 минутқа көшіру
curl -X POST https://tracker.ru/api/v1/urls/123/maintenance-windows \
  -H "Authorization: Bearer <api_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "once",
    "scheduled_date": "2026-05-12",
    "start_time": "03:00:00",
    "duration_minutes": 90
  }'

API has_api қосылған тарифтерде (Pro) қолжетімді. UI арқылы басқару үшін API қажет емес.

Уақыт белдеуі

Барлық start_time мәндері сіздің профиліңіздің уақыт белдеуінде (User.tz, әдепкі — Europe/Moscow) интерпретацияланады. Бұл UI-ға да (форма жергілікті уақытты көрсетеді), Go-чекерлерге де (IsURLInMaintenance(urlID, userTz) функциясы пайдаланушының TZ-ын қабылдап, оны терезе кестесіне қолданады) қатысты.

Практикалық салдары:

  • Бір пайдаланушы — бір TZ. Командаңыздың уақыт белдеулері әртүрлі болса, терезе URL иесінің TZ-ы бойынша жұмыс істейді.
  • Жазғы уақытқа көшу. Ресей жазғы уақытты қолданбайды, мәселе тек Еуропа елдерінің TZ-ы бар пайдаланушылар үшін туындайды. Тілдерді ауыстыру сәттерінде терезелер жергілікті уақытпен бірге ығысады.
  • Түн ортасынан өтетін терезе. start_time = 23:30, duration_minutes = 60 болса — терезе келесі тәуліктің 00:30-да жабылады. Әрекет дұрыс.

Профильдің уақыт белдеуі /my/profile-да өзгертіледі және келесі тексеру раундынан бастап жаңа тексерулерге қолданылады.

Алерттер әрекеті

Терезе ішінде не болады:

  • Тексерулер әдеттегідей жүреді. TCP/HTTP-чекерлер тоқтамайды — біз check_log-та тарихты жинауды, статистиканы есептеуді жалғастырамыз.
  • down хабарламалары жіберілмейді. URL терезе ішінде құласа, Telegram/MAX/Email/Webhook-қа алерт кетпейді. IsURLInMaintenance функциясы әр notification-воркерде (telegram, email, webhook) жіберер алдында шақырылады.
  • Recovery-хабарламалары да жіберілмейді, егер қалпына келгеннен кейінгі бірінші сәтті чек терезеге түссе. Бұл деплой ортасында «сәтті қалпына келді» деп есеп бермеу үшін қажет — нақты күй әлі расталмаған.

Терезе аяқталғанда:

  • Егер URL осы уақытқа қарай қалпына келген болса — әрекет терезеге дейін down-алерт жіберілген-жіберілмегеніне байланысты. Құлау терезе ішінде болып, терезе ішінде аяқталса — пайдаланушы алертті де, recovery-ді де алмайды (біз нақ осыны қалаймыз).
  • Құлау терезеден өтіп жалғасса — терезе аяқталғаннан кейінгі келесі тексеру қайтадан стандартты пайплайннан өтеді және down-алерт кетеді.

Тариф лимиттері

Бір пайдаланушыға арналған қызмет көрсету терезелері саны тарифпен шектелген (PlanSeeder-дегі max_maintenance_windows өрісі):

Тариф Максимум терезе
Free 0
Basic 3
Pro 10

Терезе жасалғанда лимит PlanLimitService::canAddMaintenanceWindow арқылы тексеріледі. Free-тарифте функция толығымен өшірулі — тұрақты қолдану үшін Basic не Pro керек. Basic-те үш терезе типтік «күн сайынғы бэкап + апталық ротация + бір реттік көшіру» сценарийі үшін жеткілікті; Pro-да он терезе күрделірек кестелерді жабады.

Лимит пайдаланушының барлық URL-дары бойынша жалпы есептеледі: бір нүктеде бірнеше терезе болуы мүмкін, бірақ жалпы саны тариф лимитінен аспауы тиіс.

Байланысты мақалалар