MAATRIX / Блог / VPS для бота-уведомителя: мониторинг и алерты 24/7

VPS для бота-уведомителя: мониторинг и алерты 24/7

VPS для бота-уведомителя: мониторинг и алерты в Telegram
Блог MAATRIX · 2026-07-07

Бот-уведомитель следит за сайтами, серверами и метриками и шлёт алерт в Telegram, когда что-то ломается. Такому боту нужен независимый сервер: если он стоит на той же машине, что и объект мониторинга, он умрёт вместе с ней.

Зачем уведомителю отдельный VPS

Главный принцип мониторинга: наблюдатель должен быть независим от объекта. Если бот, следящий за вашим сайтом, живёт на том же сервере, то при падении сервера вы не получите алерт — упадёт и наблюдатель.

Поэтому уведомителя выносят на отдельный дешёвый VPS, желательно в другой локации. Оттуда он пингует ваши сервисы снаружи — ровно так, как их видят пользователи.

  • Внешняя точка обзора — видите то же, что и клиенты.
  • Независимость — падение объекта не выключает мониторинг.
  • Дёшево — уведомителю хватает младшего тарифа.

Какой VPS купить для Telegram-бота

Для одного простого Telegram-бота без локальной нейросети начните с Lite: 1 vCPU, 2 ГБ памяти и 40 ГБ NVMe. Если у бота есть база данных, обработка файлов или несколько сервисов рядом, выберите Старт: 2 vCPU и 4 ГБ памяти.

Один небольшой бот

Lite · 1 vCPU · 2 ГБ RAM
40 ГБ NVMe
Запуск бота постоянно, независимо от вашего компьютера.

Заказать Lite

Бот с базой данных

Старт · 2 vCPU · 4 ГБ RAM
80 ГБ NVMe
Начальная конфигурация для бота и сопутствующих сервисов.

Заказать Старт

После аренды VPS установите зависимости и настройте запуск бота по инструкции ниже. Размер файлов и число одновременных задач влияют на дальнейший выбор ресурсов.

В кнопках заказа выбрана локация в Великобритании. Другую страну можно выбрать при оформлении.

Оплата VPS картой РФ или по СБП доступна в личном кабинете. Для безналичной оплаты от юридического лица или ИП запросите счёт у support@maatrix.io, указав тариф и реквизиты.

Отправка алерта в Telegram через curl

Отправить сообщение боту можно одним запросом к Bot API — никакой библиотеки не нужно. Создайте бота у @BotFather, узнайте свой chat_id и проверьте отправку:

BOT_TOKEN='123456:AA...'
CHAT_ID='100500'
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
  --data-urlencode "chat_id=${CHAT_ID}" \
  --data-urlencode "text=Тест: уведомитель на связи"

Этого достаточно, чтобы встроить алерты в любой bash-скрипт мониторинга.

Скрипт мониторинга сайтов

Простой health-check: проверяем HTTP-код и шлём алерт только при проблеме. Флаг-файл не даёт спамить одинаковыми сообщениями каждую минуту.

#!/usr/bin/env bash
set -euo pipefail
source /opt/notifier/.env   # BOT_TOKEN, CHAT_ID
URL='https://example.com/health'
FLAG='/tmp/notifier_down'

notify() {
  curl -s "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
    --data-urlencode "chat_id=${CHAT_ID}" \
    --data-urlencode "text=

Отправка алерта в Telegram через curl

Отправить сообщение боту можно одним запросом к Bot API — никакой библиотеки не нужно. Создайте бота у @BotFather, узнайте свой chat_id и проверьте отправку:

BOT_TOKEN='123456:AA...'
CHAT_ID='100500'
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
  --data-urlencode "chat_id=${CHAT_ID}" \
  --data-urlencode "text=Тест: уведомитель на связи"

Этого достаточно, чтобы встроить алерты в любой bash-скрипт мониторинга.

Скрипт мониторинга сайтов

Простой health-check: проверяем HTTP-код и шлём алерт только при проблеме. Флаг-файл не даёт спамить одинаковыми сообщениями каждую минуту.

#!/usr/bin/env bash
set -euo pipefail
source /opt/notifier/.env   # BOT_TOKEN, CHAT_ID
URL='https://example.com/health'
FLAG='/tmp/notifier_down'

notify() {
  curl -s "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
    --data-urlencode "chat_id=${CHAT_ID}" \
    --data-urlencode "text=$1" >/dev/null
}

code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 10 "$URL" || echo 000)
if [ "$code" != "200" ]; then
  [ -f "$FLAG" ] || notify "🔴 $URL недоступен (код $code)"
  touch "$FLAG"
else
  if [ -f "$FLAG" ]; then notify "🟢 $URL снова работает"; rm -f "$FLAG"; fi
fi
sudo mkdir -p /opt/notifier
sudo mv check.sh /opt/notifier/ && sudo chmod +x /opt/notifier/check.sh

Таймер systemd вместо cron

Таймеры systemd надёжнее cron: у них есть логи, зависимости и защита от наложений запусков. Создаём service и timer:

sudo tee /etc/systemd/system/notifier.service >/dev/null <<'EOF'
[Unit]
Description=Site health check

[Service]
Type=oneshot
ExecStart=/opt/notifier/check.sh
EOF
sudo tee /etc/systemd/system/notifier.timer >/dev/null <<'EOF'
[Unit]
Description=Run health check every minute

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min

[Install]
WantedBy=timers.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now notifier.timer
systemctl list-timers notifier.timer

Что ещё стоит мониторить

Тот же подход расширяется на любые метрики самого сервера — место на диске, память, нагрузку. Пример проверки диска:

use=$(df / | awk 'END{gsub("%","",$5); print $5}')
[ "$use" -gt 90 ] && notify "⚠️ Диск заполнен на ${use}%"
  • Аптайм сайтов и API — HTTP-код и время ответа.
  • Ресурсы сервера — диск, RAM, load average.
  • Сертификаты TLS — алерт за 14 дней до истечения.
  • SSH-входы — уведомление о новом логине.

Где брать сервер и частые ошибки

Уведомителю нужен минимум ресурсов — младшего тарифа хватает с запасом. На MAATRIX это AMD EPYC + NVMe от $8/мес с ежедневными бэкапами, а три локации (UK, США и РФ) позволяют держать мониторинг в другой стране относительно ваших основных серверов — так вы поймаете и региональные сетевые сбои. Оплата картой РФ, СБП, криптой или токеном MAAT.

  • Уведомитель на том же сервере — не сообщит о его падении.
  • Нет защиты от повторов — бот засыпет вас алертами каждую минуту.
  • Малый --max-time или его отсутствие — ложные срабатывания на медленном ответе.
  • cron без логов — молчаливые сбои проверки; берите systemd-таймер.
" >/dev/null } code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 10 "$URL" || echo 000) if [ "$code" != "200" ]; then [ -f "$FLAG" ] || notify "🔴 $URL недоступен (код $code)" touch "$FLAG" else if [ -f "$FLAG" ]; then notify "🟢 $URL снова работает"; rm -f "$FLAG"; fi fi
sudo mkdir -p /opt/notifier
sudo mv check.sh /opt/notifier/ && sudo chmod +x /opt/notifier/check.sh

Таймер systemd вместо cron

Таймеры systemd надёжнее cron: у них есть логи, зависимости и защита от наложений запусков. Создаём service и timer:

sudo tee /etc/systemd/system/notifier.service >/dev/null <<'EOF'
[Unit]
Description=Site health check

[Service]
Type=oneshot
ExecStart=/opt/notifier/check.sh
EOF
sudo tee /etc/systemd/system/notifier.timer >/dev/null <<'EOF'
[Unit]
Description=Run health check every minute

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min

[Install]
WantedBy=timers.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now notifier.timer
systemctl list-timers notifier.timer

Что ещё стоит мониторить

Тот же подход расширяется на любые метрики самого сервера — место на диске, память, нагрузку. Пример проверки диска:

use=$(df / | awk 'END{gsub("%","",$5); print $5}')
[ "$use" -gt 90 ] && notify "⚠️ Диск заполнен на ${use}%"
  • Аптайм сайтов и API — HTTP-код и время ответа.
  • Ресурсы сервера — диск, RAM, load average.
  • Сертификаты TLS — алерт за 14 дней до истечения.
  • SSH-входы — уведомление о новом логине.

Где брать сервер и частые ошибки

Уведомителю нужен минимум ресурсов — младшего тарифа хватает с запасом. На MAATRIX это AMD EPYC + NVMe от $8/мес с ежедневными бэкапами, а три локации (UK, США и РФ) позволяют держать мониторинг в другой стране относительно ваших основных серверов — так вы поймаете и региональные сетевые сбои. Оплата картой РФ, СБП, криптой или токеном MAAT.

  • Уведомитель на том же сервере — не сообщит о его падении.
  • Нет защиты от повторов — бот засыпет вас алертами каждую минуту.
  • Малый --max-time или его отсутствие — ложные срабатывания на медленном ответе.
  • cron без логов — молчаливые сбои проверки; берите systemd-таймер.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Как узнать свой chat_id?

Напишите боту любое сообщение и откройте https://api.telegram.org/bot<ТОКЕН>/getUpdates — в ответе будет поле chat.id.

Таймер systemd или cron?

Таймер systemd предпочтительнее: есть журнал в journalctl, защита от параллельных запусков и привязка к состоянию системы.

Можно ли слать алерты в группу?

Да, добавьте бота в группу и используйте её chat_id (он отрицательный). Для тем супергрупп добавьте параметр message_thread_id.

Готовы перейти к настройке?

Закажите Lite с конфигурацией, предложенной для старта, или сравните все тарифы. Оплата картой РФ и через СБП — в личном кабинете.

Заказать Lite Все тарифы и цены