Сайт упал в 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://your-server: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://uptime-kuma:3001/api/monitor \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Main Site",
"type": "http",
"url": "https://example.com/",
"interval": 60,
"retryInterval": 30,
"maxretries": 2,
"keyword": "Добро пожаловать",
"httpBodyEncoding": "json"
}'
Нотификации: Telegram, Slack, Email, PagerDuty, Webhook и ещё ~90 провайдеров.
Какие URL мониторить в production?
| URL | Тип | Интервал | Алерт при |
|---|---|---|---|
https://example.com/ |
HTTP + keyword | 60s | downtime > 1 мин |
https://example.com/health |
HTTP + JSON | 60s | status != 200 |
https://api.example.com/ping |
HTTP | 30s | downtime > 30s |
| SSL cert | Certificate | 1d | expires < 14d |
https://example.com/ |
DNS | 5m | resolve fails |
Что такое 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+ летним опытом и более 50 успешных внедрений гарантирует надёжную систему мониторинга. Мы не используем шаблонные решения — каждый проект получает индивидуальную конфигурацию. Свяжитесь с нами для консультации. Закажите настройку мониторинга и спите спокойно.
Источники: Uptime Kuma, Wikipedia — Uptime







