Установка простого мониторинга доступности (Uptime Kuma или скрипт в Telegram)
Хочу себе такие же кнопкиУстановка простого мониторинга доступности: Uptime Kuma или Telegram-бот
Как узнать о падении сайта раньше клиентов и спать спокойно
Представьте ситуацию: Вы запустили рекламную кампанию, трафик идёт, деньги сгорают — а ваш сайт лежит уже час. Или хуже: арбитражный оффер перестал принимать лиды, но вы об этом даже не подозреваете. Потери? Тысячи рублей, репутация, нервы.
Решение: Настроить мониторинг доступности — систему, которая проверяет, работает ли ваш сайт/сервер, и мгновенно оповещает вас, если что-то пошло не так. Сегодня разберём два варианта:
- Uptime Kuma — бесплатный инструмент с веб-интерфейсом (как "панель управления" для мониторинга).
- Скрипт на Bash + Telegram — лёгкое решение для тех, кто любит контролировать всё через консоль.
1. Почему мониторинг — это не роскошь, а необходимость
Прежде чем копаться в настройках, давайте разберёмся, что именно мы мониторим и почему это критично:
| Что ломается | Последствия | Как мониторинг помогает |
|---|---|---|
| Сайт не отвечает | Потеря трафика, деньги на рекламу в трубу | Уведомление за 1-2 минуты после падения |
| База данных зависла | Ошибки при оформлении заказов | Проверка ответа от MySQL/PostgreSQL |
| API партнёра недоступен | Лиды не уходят, деньги не капают | Мониторинг эндпоинтов (например, POST /lead) |
| Сервер перегружен | Медленная загрузка = низкая конверсия | Проверка времени ответа (ping) |
Аналогия: Мониторинг — как сигнализация в машине. Вы же не оставляете авто без охраны на парковке? Так и с сервером: лучше потратить 10 минут на настройку, чем потом тушить пожар.
2. Вариант 1: Uptime Kuma — мониторинг с красивым интерфейсом
Uptime Kuma — это открытый проект (бесплатно, без ограничений), который:
- Проверяет сайты, API, порты, базы данных.
- Отправляет уведомления в Telegram, Discord, Email, Slack.
- Работает на вашем сервере (не зависит от сторонних сервисов).
- Имеет дашборд с графиками и историей падений.
2.1 Установка Uptime Kuma на сервер (Linux)
Требования:
- Сервер с Docker (если нет — установите его).
- 10 минут времени.
Шаги:
-
Скачайте образ Uptime Kuma:
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1-p 3001:3001— порт, по которому будет доступен веб-интерфейс.-v uptime-kuma:/app/data— сохранение данных (чтобы не слетело при перезагрузке).
-
Откройте веб-интерфейс:
- Перейдите в браузере по адресу:
http://[IP_вашего_сервера]:3001 - При первом запуске вас поприветствует мастер настройки.
- Перейдите в браузере по адресу:
-
Добавьте первый монитор:
- Нажмите "Add New Monitor".
- Выберите тип:
- HTTP(s) — для проверки сайтов.
- TCP Port — для проверки открытых портов (например, 22 для SSH).
- MongoDB/MySQL — для баз данных.
- Укажите URL (например,
https://vash-sayt.ru) и интервал проверки (рекомендую1 минута). - Сохраните.
-
Настройте уведомления в Telegram:
- Перейдите в "Settings" → "Notification".
- Выберите "Telegram".
- Создайте бота в Telegram через @BotFather (инструкция ниже).
- Вставьте Token бота и ID вашего чата (как получить — см. раздел 3).
- Сохраните и протестируйте уведомление.
2.2 Пример настройки мониторинга API арбитражного оффера
Допустим, вы сливаете лиды в оффер по API:
POST https://partner-api.com/lead
Headers: { "Authorization": "Bearer YOUR_TOKEN" }
Body: { "name": "Иван", "phone": "+7999..." }
Как настроить проверку в Uptime Kuma:
- Выберите тип монитора: HTTP(s).
- Укажите URL:
https://partner-api.com/lead. - Метод: POST.
- Headers:
Authorization: Bearer YOUR_TOKEN Content-Type: application/json - Body (тестовые данные):
{ "name": "Test", "phone": "+70000000000" } - Ожидаемый ответ: выберите "Response Status" =
200(или другой успешный код).
Если API упадёт или вернёт ошибку — вы получите уведомление.
3. Вариант 2: Мониторинг через Bash-скрипт + Telegram
Если вам не нужен красивый интерфейс, а хочется минималистичное решение, которое работает прямо из консоли — этот способ для вас.
3.1 Создаём Telegram-бота для уведомлений
-
Откройте чат с @BotFather в Telegram.
-
Отправьте команду:
/newbot -
Следуйте инструкциям:
- Придумайте имя бота (например,
MyServerAlertBot). - Придумайте username (должен оканчиваться на
bot, например,MyServerAlertBot_bot).
- Придумайте имя бота (например,
-
Сохраните токен бота (пример:
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ). -
Получите ID вашего чата:
- Отправьте боту любое сообщение (например,
/start). - Перейдите по ссылке:
https://api.telegram.org/bot[ВАШ_ТОКЕН]/getUpdates - Найдите в ответе поле
"chat":{"id":-123456789}. Это и есть ваш chat_id.
- Отправьте боту любое сообщение (например,
3.2 Пишем скрипт для проверки сайта
Создадим скрипт, который:
- Проверяет, доступен ли сайт.
- Если нет — отправляет сообщение в Telegram.
Шаг 1. Создайте файл monitor.sh:
nano /root/monitor.sh
Шаг 2. Вставьте код (замените переменные):
#!/bin/bash
# Настройки
URL="https://vash-sayt.ru" # Адрес для проверки
BOT_TOKEN="123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ" # Токен бота
CHAT_ID="-123456789" # ID чата
TIMEOUT=10 # Таймаут проверки (секунды)
# Проверяем доступность сайта
if ! curl -s --max-time $TIMEOUT -I "$URL" | grep -q "HTTP/2 200"; then
# Если сайт недоступен — отправляем уведомление
MESSAGE="⚠️ Сайт $URL НЕДОСТУПЕН! $(date)"
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$MESSAGE"
fi
Шаг 3. Сделайте скрипт исполняемым:
chmod +x /root/monitor.sh
Шаг 4. Запустите тест:
/root/monitor.sh
Если сайт доступен — ничего не произойдёт. Если нет — вам придёт сообщение в Telegram.
3.3 Настраиваем автоматический запуск (cron)
Чтобы скрипт работал каждую минуту, добавьте его в cron:
-
Откройте редактор cron:
crontab -e -
Добавьте строку:
* * * * * /root/monitor.sh- Это означает: "Запускать каждую минуту".
-
Сохраните и выйдите (
Ctrl + X, затемY).
4. Продвинутые фишки (для опытных)
4.1 Мониторинг времени ответа сервера
Если сайт отвечает слишком медленно, это тоже проблема. Добавим проверку времени ответа в скрипт:
#!/bin/bash
URL="https://vash-sayt.ru"
BOT_TOKEN="..."
CHAT_ID="..."
MAX_TIME=2 # Максимальное время ответа (секунды)
RESPONSE_TIME=$(curl -o /dev/null -s -w '%{time_total}' "$URL")
if (( $(echo "$RESPONSE_TIME > $MAX_TIME" | bc -l) )); then
MESSAGE="⚠️ Сайт $URL тормозит! Время ответа: $RESPONSE_TIME с"
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$MESSAGE"
fi
4.2 Мониторинг нескольких сайтов
Создайте массив URL и проверяйте их в цикле:
URLS=(
"https://vash-sayt.ru"
"https://api.partner.com/lead"
"https://admin-panel.example.com"
)
for URL in "${URLS[@]}"; do
if ! curl -s --max-time 10 -I "$URL" | grep -q "HTTP/2 200"; then
MESSAGE="⚠️ Сайт $URL НЕДОСТУПЕН! $(date)"
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$MESSAGE"
fi
done
5. Типичные ошибки и как их избежать
| Проблема | Причина | Решение |
|---|---|---|
| Uptime Kuma не запускается | Порт 3001 занят или Docker не установлен | Проверьте docker ps и netstat -tulnp |
| Telegram-бот не отправляет сообщения | Неправильный chat_id или токен |
Перепроверьте через getUpdates |
| Скрипт не работает в cron | Не указан полный путь к curl |
Замените curl на /usr/bin/curl |
| Ложные срабатывания | Сайт временно тормозит (например, из-за DDoS) | Увеличьте TIMEOUT или добавьте повторные проверки |
6. Практика для закрепления
Упражнение 1. Установка Uptime Kuma
- Установите Uptime Kuma на свой сервер (или локальную машину с Docker).
- Добавьте мониторинг для:
- Вашего основного сайта.
- Порта 22 (SSH).
- Настройте уведомления в Telegram.
- Вопрос: Какой интервал проверки вы выбрали и почему?
Упражнение 2. Скрипт для мониторинга API
- Напишите скрипт, который проверяет доступность API (например,
GET https://httpbin.org/get). - Если API возвращает ошибку (не 200 OK), отправьте уведомление с кодом ошибки.
- Подсказка: Используйте
curl -Iиgrep "HTTP".
Упражнение 3. Мониторинг времени ответа
- Модифицируйте скрипт из раздела 4.1, чтобы он отправлял уведомление, если время ответа превышает 3 секунды.
- Протестируйте, искусственно замедлив сайт (например, через
tcв Linux).
Упражнение 4. Настройка cron
- Запустите свой скрипт каждые 2 минуты (вместо 1).
- Вопрос: Какой командой проверить, что задача добавлена в cron?
Упражнение 5. Диагностика проблем
- Представьте, что Uptime Kuma показывает "Site is down", но сайт открывается в браузере.
- Вопросы:
- Какие возможные причины?
- Как проверить, что проблема не на стороне мониторинга?
7. Итоги и дальнейшие шаги
Теперь у вас есть два рабочих инструмента, чтобы никогда не пропустить падение сайта или API:
- Uptime Kuma — для тех, кто любит графики и удобный интерфейс.
- Bash-скрипт + Telegram — для минималистов и любителей автоматизации.
Что делать дальше?
- Настройте мониторинг всех критичных сервисов (сайт, база данных, API партнёров).
- Добавьте повторные проверки, чтобы избежать ложных срабатываний.
- Изучите продвинутые фичи Uptime Kuma (например, мониторинг SSL-сертификатов).
Помните:
"Если вы не мониторите — вы не управляете. Вы просто надеетесь на лучшее." (Анонимный системный администратор)
Вопросы? Пишите в комментариях — разберём любые сложности! Готовы к практике? Приступайте к упражнениям и делитесь результатами. 🚀
Введение: чем VDS отличается от шаред-хостинга и зачем это веб-мастеру
Как правильно выбрать тариф: CPU, RAM, NVMe или SSD, канал
Выбор операционной системы: почему Ubuntu 22.04/24.04 — стандарт индустрии
Регистрация домена и первичная настройка DNS-записей (A, AAAA, CNAME)
Генерация SSH-ключей на локальном компьютере (Windows/Mac/Linux)
Добавление публичного ключа на сервер и первый вход по SSH
Отключение входа по паролю и запрет авторизации для root
Смена стандартного порта SSH для снижения шума в логах
Создание основного рабочего пользователя с правами sudo
Базовое обновление системы и установка необходимых утилит (curl, wget, git, htop)
Настройка часового пояса и синхронизация времени (NTP)
Установка и базовая настройка фаервола UFW
Разрешение только необходимых портов (SSH, HTTP, HTTPS)
Установка Fail2Ban для защиты от перебора паролей
Настройка правил Fail2Ban для SSH и веб-сервера
Знакомство с Docker: установка движка и CLI
Установка Docker Compose для управления мульти-контейнерными приложениями
Основы изоляции: почему каждый проект должен быть в своем контейнере
Подготовка файловой структуры сервера для удобного хранения проектов
Развертывание Nginx как обратного прокси-сервера через Docker
Настройка конфигурации Nginx для статических сайтов
Установка PHP-FPM в отдельном контейнере
Связка Nginx и PHP-FPM через внутреннюю Docker-сеть
Оптимизация настроек PHP-FPM (pm.max_children, memory_limit) под нагрузку
Установка MariaDB/MySQL в изолированном контейнере
Безопасное хранение паролей от БД через переменные окружения (.env)
Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель
Установка Redis для кэширования запросов и сессий
Интеграция Redis с PHP-приложением для ускорения работы
Автоматическая выдача SSL-сертификатов через Certbot (Let's Encrypt)
Настройка автопродления SSL-сертификатов по крону
Принудительный редирект с HTTP на HTTPS в Nginx
Включение gzip и brotli сжатия для ускорения загрузки страниц
Настройка кэширования статики (browser caching) в заголовках Nginx
Защита от простых DDoS и ботов: модуль limit_req в Nginx
Настройка резервного копирования баз данных (mysqldump) по расписанию
Настройка резервного копирования файлов проектов (tar)
Отправка бэкапов на удаленное хранилище (S3-compatible storage или другой сервер)
Ротация и очистка старых логов, чтобы не забить диск
Мониторинг нагрузки: установка и настройка htop и iotop
Просмотр логов в реальном времени: tail, grep и journalctl
Установка простого мониторинга доступности (Uptime Kuma или скрипт в Telegram)
Изоляция арбитражных инструментов: запуск ботов в отдельных контейнерах
Установка SOCKS5/HTTP прокси (3proxy) внутри Docker для мультиаккаунтинга
Настройка аутентификации и ограничения доступа к прокси по IP
Проверка анонимности и работы прокси-сервера
Оптимизация ядра Linux (sysctl.conf) для высоких нагрузок и сетевых соединений
Настройка swap-файла: когда он нужен, а когда вредит
Чек-лист финальной проверки безопасности перед запуском проекта
План действий при взломе или падении сервера: восстановление из бэкапа
АПТЕЧКА ДЛЯ ЖИВОТНЫХ
Автомобили Германии — FORD, MERSEDES, VW, IVECO
Чат рулетка 2026: чаты, где каждый момент — шанс
Чат рулетка онлайн
Чат с Аней: психологический разговор
Чатрулетка: новый способ общения
Чай и кофе: сила вкуса
Детские игрушки из безопасных материалов
Эксплуатация шин: Рекомендации по использованию
Фототехника для пейзажей
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать Vdsina вечный хостинг для своего проекта
Компоненты безопасности IP
Конкуренция на российском автомобильном рынке
Онлайн генератор паролей для Windows
Оптимизация обработки форм GEO проекта
Сервер для социальных сетей: Безопасность, Скорость, Изоляция
Смешные моменты
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
Весь экран под циферблат