Қызмет көрсету терезесі (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_minutes — unsignedSmallInteger ретінде (65535 минутқа дейін, іс жүзінде сирек тәуліктен ұзын) сақталады. Әдепкі бойынша active = true — терезені жоюсыз active = false етіп уақытша өшіруге болады (жоспарлы ТҚ кідіртілгенде пайдалы).
Ағымдағы айдағы күндер санынан көп day_of_month көрсетілсе (ақпанда 31), терезе сол айда жай ғана белсенділенбейді — қателіксіз.
Қалай баптау керек
Жеке кабинеттегі URL бетінде «Қызмет көрсету терезелері» блогын табыңыз. «Терезе қосу» басып, формада:
- Түрді таңдаңыз (
once,daily,weekly,monthly). - Осы түр үшін міндетті өрістерді толтырыңыз (жоғарыдағы кестені қараңыз).
- Бастау уақытын және ұзақтығын минутта көрсетіңіз.
- «Сақтау» басыңыз.
Терезе бірден белсенді болады. 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-дары бойынша жалпы есептеледі: бір нүктеде бірнеше терезе болуы мүмкін, бірақ жалпы саны тариф лимитінен аспауы тиіс.
Байланысты мақалалар
- /docs/features/tcp-monitoring?lang=kk — мәліметтер базасы мен кезек порттарына TCP-мониторинг.
- /docs/features/keyword-check?lang=kk — HTML-жауапта түйін сөзді тексеру.
- /docs/notifications/telegram?lang=kk — Telegram хабарламаларын баптау.
- /docs/notifications/webhooks?lang=kk — HMAC-SHA256 қолтаңбасымен webhook.