Худший способ узнать, что сайт лежит, — прочитать об этом в сообщении от клиента. Второй по неприятности — заметить самому через сутки.
Мониторинг решает это за пятнадцать минут настройки: сервис раз в минуту дёргает ваш сайт и, если тот не ответил, присылает уведомление в Telegram. Разберём на Uptime Kuma — это бесплатная программа, которая ставится на ваш же сервер и выглядит как платные сервисы за десятки долларов в месяц.
Что она умеет
- проверять сайты и API по HTTP
- пинговать серверы
- следить за конкретными портами (игровой сервер, база данных)
- предупреждать за N дней до истечения SSL-сертификата
- присылать уведомления в Telegram, на почту, в Discord и ещё в полсотни мест
- показывать красивую статистику доступности и публичную страницу статуса
Ставьте на отдельный сервер
Мониторинг, который живёт на том же сервере, что и сайт, бесполезен: упадёт сервер — замолчит и он. Идеально поставить Kuma на самый дешёвый VPS у другого провайдера. Тариф за 250 ₽ подойдёт полностью.
Шаг 1. Ставим Docker
Uptime Kuma удобнее всего запускать в контейнере — не придётся возиться с Node.js и зависимостями.
root@vps:~#apt update && apt install -y ca-certificates curlroot@vps:~#install -m 0755 -d /etc/apt/keyringsroot@vps:~#curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascroot@vps:~#chmod a+r /etc/apt/keyrings/docker.ascroot@vps:~#echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.listroot@vps:~#apt updateroot@vps:~#apt install -y docker-ce docker-ce-cli containerd.io docker-compose-pluginПроверьте:
root@vps:~#docker --versionПодробнее про контейнеры — в гайде про деплой через Docker Compose.
Шаг 2. Запускаем Uptime Kuma
Создайте папку и файл описания:
root@vps:~#mkdir -p /opt/kuma && cd /opt/kuma && nano docker-compose.ymlservices:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
Обратите внимание на 127.0.0.1 перед портом — панель будет доступна только с самого сервера, а не всему интернету. Это важно: открытая наружу панель мониторинга — подарок для сканеров.
Запускаем:
root@vps:~#docker compose up -droot@vps:~#docker compose psШаг 3. Открываем панель
Так как порт закрыт снаружи, зайдём через SSH-туннель. На своём компьютере выполните:
user@local:~#ssh -L 3001:127.0.0.1:3001 root@ВАШ_IPНе закрывая это окно, откройте в браузере http://localhost:3001. Увидите экран создания администратора — придумайте логин и пароль.
Хотите постоянный адрес
Можно поставить перед Kuma nginx с доменом и сертификатом — как в гайде про nginx и HTTPS. Тогда панель будет доступна по адресу вроде status.мойсайт.ру. Только обязательно оставьте вход по паролю.
Шаг 4. Первая проверка
Нажмите Add New Monitor и заполните:
- Monitor Type — HTTP(s)
- Friendly Name — понятное имя, например «Основной сайт»
- URL — адрес вашего сайта
- Heartbeat Interval — 60 секунд, этого достаточно
- Retries — 2, чтобы не дёргать вас из-за одной случайной ошибки сети
Сохраните. Через минуту появится первая зелёная точка.
Retries — важная настройка. Без неё вы будете получать уведомления при каждом моргании сети. Значение 2 означает: сообщить, только если сайт не ответил дважды подряд.
Шаг 5. Уведомления в Telegram
Сначала заведите бота: напишите @BotFather, команда /newbot, придумайте имя. Он выдаст токен.
Затем узнайте свой ID: напишите боту @userinfobot, он ответит числом.
В Uptime Kuma откройте Settings → Notifications → Setup Notification:
- Notification Type — Telegram
- Bot Token — токен от BotFather
- Chat ID — ваш номер
- поставьте галочку Default enabled, чтобы уведомления шли по всем проверкам
Нажмите Test — в Telegram должно прийти сообщение. Если пришло, всё готово.
Бот молчит
Telegram не даёт боту писать первым. Откройте чат с вашим ботом и отправьте ему любое сообщение — после этого уведомления начнут приходить.
Что ещё стоит поставить на контроль
Срок сертификата. В настройках проверки включите Certificate Expiry Notification и укажите 14 дней. Узнать об истёкшем сертификате от посетителей — обидно, тем более что продление автоматическое и ломается редко, но метко.
Игровой сервер. Тип проверки TCP Port, адрес сервера и порт — 25565 для Minecraft или 27015 для CS2.
Телеграм-бот. Если бот работает на сервере, добавьте в него простую страницу-заглушку и следите за ней. Так вы поймаете ситуацию, когда служба вроде запущена, а бот на самом деле завис.
Сам сервер. Тип Ping по IP — покажет, жива ли машина вообще.
Публичная страница статуса
Приятный бонус: в разделе Status Pages можно собрать публичную страницу, где видно состояние ваших сервисов. Удобно, если сайтом пользуются другие люди — вместо ответов на вопросы «у вас лежит?» даёте ссылку.
Сколько стоит
Сама программа бесплатна. Отдельный дешёвый сервер под мониторинг — 250–350 ₽ в месяц. Платные сервисы с тем же набором просят от 10 долларов.
Взять сервер под мониторингХватит самого начального тарифа. Главное — чтобы провайдер был не тот же, у которого стоит основной сайт.
Смотреть тарифыЧто дальше
Мониторинг предупредит о беде, но восстанавливаться придётся из копий — если вы их делаете. Загляните в гайд про бэкапы, это следующий по важности шаг.