Установка простого мониторинга доступности (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-сертификатов).
Помните:
"Если вы не мониторите — вы не управляете. Вы просто надеетесь на лучшее." (Анонимный системный администратор)
Вопросы? Пишите в комментариях — разберём любые сложности! Готовы к практике? Приступайте к упражнениям и делитесь результатами. 🚀
Генератор паролей с длинной 64 символа
Женская одежда с бахромой
Кадастровые работы в Бийске
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать планировку сайта для блогов на DreamHost
Как выбрать Vdsina вечный хостинг для своего проекта
Казань окна VEKA - профессионализм и опыт
Курьерская вода
Новостройки Оренбурга: недвижимость с отличной ценой
Онлайн чат-партнерство
Пиломатериалы для возведения бани
Почему VDSina — лучший выбор хостинга
Секреты Вконтакте: тонкости и хитрости
Скидки до 50% на тур в Коста-Рике
Видеочат рулетка бесплатно