Сайт впав о 3 годині ночі, а ви дізналися про це тільки вранці від розгніваного клієнта. Ми стикалися з цим десятки разів, тому налаштування uptime monitoring — перше, що робимо для будь-якого проєкту. Без базового HTTP-check вся інша інфраструктура моніторингу марна: ви можете не знати про збій до першого дзвінка. Нещодавно до нас звернувся клієнт: сайт інтернет-магазину падав щоночі через збій кешування, але моніторинг був відсутній. Ми розгорнули Uptime Kuma з перевіркою health endpoint і за день виявили першопричину. Завдання тут — покрити не тільки головну сторінку, але й критичні точки: API, admin-панель, health endpoint, CDN. Наша команда має 10+ років досвіду у веб-розробці та обслуговуванні високонавантажених проєктів, тому ми знаємо, як налаштувати моніторинг надійно і без зайвих витрат.
Покрокова інструкція: як розгорнути Uptime Kuma за 5 хвилин
- Переконайтеся, що на сервері встановлені Docker і Docker Compose.
- Створіть файл
docker-compose.ymlз конфігурацією з прикладу нижче. - Запустіть
docker-compose up -d. - Відкрийте браузер за адресою
http://ваш-сервер:3001і створіть обліковий запис адміністратора. - В інтерфейсі додайте перший монітор: вкажіть тип
HTTP, введіть URL головної сторінки, інтервал перевірки 60 секунд. - Налаштуйте сповіщення: перейдіть в Settings → Notification, виберіть Telegram або інший канал, введіть токен.
Як налаштувати моніторинг з Uptime Kuma?
Uptime Kuma — безкоштовний self-hosted інструмент з простим UI та підтримкою багатьох типів перевірок. Розгортається за хвилину через Docker:
# docker-compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- uptime-kuma:/app/data
ports:
- "3001:3001"
restart: unless-stopped
volumes:
uptime-kuma:
Підтримувані типи моніторів: HTTP(S), TCP port, Ping, DNS, SSL certificate, Keyword (перевірка наявності тексту), JSON Query, Push (heartbeat), Steam Game Server, Docker Container. Для кожного можна задати інтервал, кількість повторів та інтеграції з нотифікаціями.
Налаштування через UI або через REST API:
# Створити монітор через API (Bearer token в Settings → API Keys)
curl -X POST http://localhost:3001/api/monitor \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Main Site",
"type": "http",
"url": "https://your-site.com",
"interval": 60,
"retryInterval": 30,
"maxretries": 2,
"keyword": "Ласкаво просимо",
"httpBodyEncoding": "json"
}'
Нотифікації: Telegram, Slack, Email, PagerDuty, Webhook і ще ~90 провайдерів.
Які URL моніторити в production?
| URL | Тип | Інтервал | Алерт при |
|---|---|---|---|
| Головна сторінка | HTTP + keyword | 60s | downtime > 1 хв |
https://ваш-сайт/health |
HTTP + JSON | 60s | status != 200 |
https://api.example.com/ping |
HTTP | 30s | downtime > 30s |
| SSL сертифікат | Certificate | 1d | expires < 14d |
https://ваш-сайт |
DNS | 5m | resolve fails |
Примітка: у таблиці наведено приклади; замініть https://ваш-сайт на реальний домен.
Що таке health endpoint і як його реалізувати?
Health endpoint — це URL, який повертає об'єктивний статус системи. Ми реалізуємо його на Laravel так:
// routes/web.php
Route::get('/health', function () {
$checks = [
'database' => fn() => DB::connection()->getPdo() !== null,
'cache' => fn() => Cache::store('redis')->ping(),
'queue' => fn() => \Illuminate\Support\Facades\Queue::size() < 10000,
];
$results = [];
$healthy = true;
foreach ($checks as $name => $check) {
try {
$results[$name] = $check() ? 'ok' : 'fail';
} catch (\Throwable $e) {
$results[$name] = 'error: ' . $e->getMessage();
$healthy = false;
}
}
return response()->json([
'status' => $healthy ? 'ok' : 'degraded',
'checks' => $results,
'timestamp' => now()->toISOString(),
], $healthy ? 200 : 503);
})->middleware('throttle:60,1');
Цей ендпоінт перевіряє базу даних, кеш Redis і розмір черги. При відхиленнях повертає HTTP 503 — Uptime Kuma зафіксує збій.
Порівняння self-hosted та SaaS
| Критерій | Self-hosted (Uptime Kuma) | SaaS (Better Uptime / UptimeRobot) |
|---|---|---|
| Ціна | Безкоштовно (тільки ресурси сервера) | Безкоштовний план (50 моніторів, 5 хв) |
| Інтервал перевірок | Від 1 секунди | Мінімум 5 хвилин |
| Контроль даних | Повний | Дані на стороні провайдера |
| Географія перевірок | Одна точка (можна кілька серверів) | 10+ глобальних локацій |
Uptime Kuma кращий для частих перевірок і повного контролю, але UptimeRobot зручніший для швидкого старту. Ми рекомендуємо комбінувати: Uptime Kuma для критичних перевірок щохвилини та UptimeRobot як зовнішній спостерігач.
Чому SSL моніторинг критичний?
Закінчення SSL-сертифіката — тиха катастрофа: браузери не попереджають, сайт стає недоступним. Uptime Kuma має вбудований монітор SSL Certificate з алертом за 14 днів до закінчення. Альтернативно — cron-скрипт:
#!/bin/bash
DOMAIN=$1
DAYS_THRESHOLD=14
EXPIRY=$(echo | openssl s_client -connect ${DOMAIN}:443 -servername ${DOMAIN} 2>/dev/null \
| openssl x509 -noout -enddate 2>/dev/null \
| cut -d= -f2)
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
if [ "$DAYS_LEFT" -lt "$DAYS_THRESHOLD" ]; then
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=SSL cert for $DOMAIN expires in $DAYS_LEFT days!"
fi
Налаштуйте алерти за 14 днів — цього достатньо для продовження через Let's Encrypt або купівлі нового.
Як організувати статус-сторінку?
Публічна статус-сторінка позбавляє хвилі запитань «сайт не працює?». Uptime Kuma генерує її з коробки — розмістіть на окремому домені status.example.com. Можна кастомізувати логотип і кольори.
Що входить в роботу
- Розгортання Uptime Kuma (або SaaS-аналога) з урахуванням вашої інфраструктури
- Налаштування базових моніторів (головна, API, health, DNS, SSL)
- Підключення каналів сповіщень (Telegram, Email, Slack)
- Документація щодо інцидентів та процедури реагування
- Одне навчання для команди
Терміни та вартість
Розгортання базового моніторингу займає від 2 до 4 годин залежно від складності. Повний комплект з інтеграціями та статус-сторінкою — 1-2 дні. Вартість розраховується індивідуально після аналізу проєкту.
Наша команда з 10+ річним досвідом і понад 40 успішних впроваджень гарантує надійну систему моніторингу. Ми не використовуємо шаблонні рішення — кожен проєкт отримує індивідуальну конфігурацію. Зв'яжіться з нами для консультації. Замовте налаштування моніторингу і спіть спокійно.
Джерела: Uptime Kuma, Wikipedia — Uptime







