Как настроить уведомления о падении сервера в Telegram
Хочу себе такие же кнопкиКак настроить уведомления о падении сервера в Telegram
Что вы получите:
- Автоматическое сообщение в ваш Telegram‑чат в момент, когда ваш VDS‑сервер перестаёт отвечать.
- Понимание, как работает Telegram Bot API и почему это надёжный способ оповещения.
- Готовый скрипт, который можно запустить сразу после установки.
1. Почему Telegram — лучший канал оповещения
| Плюс | Что это значит для вас |
|---|---|
| Мгновенность | Сообщение приходит в секунды после обнаружения проблемы. |
| Доступность | Вы получаете уведомление на любой устройстве: телефон, планшет, ПК. |
| Никаких расходов | Bot‑API бесплатен, не требуется сторонних сервисов. |
| Гибкость | Можно отправлять текст, фото, файлы, даже кнопки‑действия. |
Представьте, что ваш сервер — это «дом», а Telegram — это «домофон». Как только в доме появляется непрошенный гость (сервис падает), домофон сразу же сигнализирует вам, чтобы вы могли быстро отреагировать.
2. Что понадобится
| Компонент | Описание | Как получить |
|---|---|---|
| Telegram‑бот | Программный «посредник», который будет отправлять сообщения. | Создаёте через @BotFather. |
| Токен бота | Уникальная строка, позволяющая обращаться к Bot‑API. | Выдаётся BotFather после создания бота. |
| Chat‑ID | Идентификатор чата (личного или группы), куда будет приходить сообщение. | Узнаётся через простой запрос к API. |
| Скрипт‑мониторинг | Bash‑скрипт, проверяющий доступность сервера и вызывающий API. | Пишем вручную, копируем в /usr/local/bin. |
| cron‑задача | Планировщик, который будет запускать скрипт каждые N минут. | Настраиваем через crontab -e. |
Все эти элементы работают в паре: скрипт → Telegram Bot API → ваш чат.
3. Создаём Telegram‑бота
- Откройте диалог с @BotFather в Telegram.
- Отправьте команду
/newbot. - Введите имя бота, например VDSMonitorBot.
- Введите юзернейм, который должен заканчиваться на
bot, напримерvdsmonitor_bot.
BotFather ответит:
Congratulations! Bot was created.
Use this token to access the HTTP API:
123456789:ABCdefGhIJKlmNoPqrSTUvwxYZ
Сохраните токен (строку из цифр и букв). Он понадобится дальше.
4. Узнаём ваш Chat‑ID
Самый простой способ – написать боту любое сообщение, а затем выполнить запрос:
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates"
Замените <YOUR_TOKEN> на токен из предыдущего шага. В ответе будет JSON, где в поле chat.id находится ваш Chat‑ID. Пример:
{
"ok": true,
"result": [
{
"update_id": 123456789,
"message": {
"message_id": 1,
"from": { "id": 987654321, "is_bot": false, "first_name": "Иван", "username": "ivan" },
"chat": { "id": 987654321, "first_name": "Иван", "username": "ivan", "type": "private" },
"date": 1700000000,
"text": "Привет"
}
}
]
}
В данном случае chat.id = 987654321. Если вы хотите получать уведомления в группу, добавьте бота в группу, дайте ему права писать, и выполните тот же запрос – в ответе будет chat.id группы (отрицательное число).
5. Пишем скрипт‑мониторинг
Создайте файл /usr/local/bin/vds_monitor.sh и сделайте его исполняемым:
sudo nano /usr/local/bin/vds_monitor.sh
sudo chmod +x /usr/local/bin/vds_monitor.sh
Содержимое скрипта:
#!/bin/bash
# ==============================
# Конфигурация
# ==============================
BOT_TOKEN="YOUR_TOKEN_HERE" # замените на ваш токен
CHAT_ID="YOUR_CHAT_ID_HERE" # замените на ваш chat_id
SERVER_IP="YOUR_SERVER_IP" # IP или домен вашего VDS
PORT=22 # порт, который проверяем (по умолчанию SSH)
TIMEOUT=5 # секунд, сколько ждать ответа
# ==============================
# Функция отправки сообщения в Telegram
# ==============================
send_telegram() {
local MESSAGE=$1
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d text="${MESSAGE}" \
-d parse_mode="HTML"
}
# ==============================
# Проверка доступности сервера
# ==============================
if timeout ${TIMEOUT} bash -c "cat < /dev/null > /dev/tcp/${SERVER_IP}/${PORT}" 2>/dev/null; then
# Сервер живой – ничего не делаем
exit 0
else
# Сервер не отвечает – отправляем уведомление
MESSAGE="<b>⚠️ Сервер недоступен!</b>%0AIP: ${SERVER_IP}%0APорт: ${PORT}%0AВремя: $(date '+%Y-%m-%d %H:%M:%S')"
send_telegram "${MESSAGE}"
fi
Пояснения к коду
| Строка | Что делает |
|---|---|
timeout ${TIMEOUT} bash -c "cat < /dev/null > /dev/tcp/${SERVER_IP}/${PORT}" |
Пытается открыть TCP‑соединение к указанному IP и порту. Если успевает — сервер живой. |
send_telegram() |
Оборачивает вызов Bot‑API, позволяет легко менять формат сообщения. |
MESSAGE="<b>⚠️ Сервер недоступен!</b>..." |
Форматируем HTML‑сообщение (жирный шрифт, эмодзи). |
exit 0 |
Если всё в порядке, скрипт завершается без ошибок, чтобы cron не посылал лишние письма. |
Важно: замените
YOUR_TOKEN_HERE,YOUR_CHAT_ID_HEREиYOUR_SERVER_IPна реальные значения.
6. Тестируем скрипт вручную
/usr/local/bin/vds_monitor.sh
- Если сервер доступен, ничего не произойдёт.
- Если вы умышленно отключите порт (например,
sudo ufw deny 22), в Telegram придёт сообщение.
Проверьте, что сообщение выглядит так:
⚠️ Сервер недоступен!
IP: 123.45.67.89
Порт: 22
Время: 2026-05-17 14:32:10
Если всё работает – переходим к автоматизации.
7. Автоматизируем проверку с помощью cron
Откройте таблицу cron для пользователя root (или вашего пользователя, если скрипт находится в его домашней папке):
sudo crontab -e
Добавьте строку:
*/5 * * * * /usr/local/bin/vds_monitor.sh >/dev/null 2>&1
Эта запись означает: каждые 5 минут запускать скрипт. Вывод отправляется в /dev/null, чтобы не заполнять журнал.
Совет: если у вас несколько сервисов (HTTP, MySQL, Redis) – создайте отдельные функции в скрипте или отдельные скрипты, каждый со своим портом, и добавьте их в cron.
8. Расширяем функционал (по желанию)
| Возможность | Как добавить |
|---|---|
| Отправка скриншота | Сохраните вывод top в файл, отправьте через sendDocument. |
| Кнопка «Перезапустить» | Добавьте inline_keyboard в параметр reply_markup. При нажатии ваш сервер получит callback‑запрос, который можно обработать отдельным скриптом. |
| Множественные получатели | Укажите несколько chat_id, разделяя запятой, или создайте группу и добавьте туда всех участников. |
Эти возможности позволяют превратить простое уведомление в полноценную панель управления.
9. Полезные ссылки
- Официальная документация Bot API: https://core.telegram.org/bots/api?partner=5095
- Пример готового скрипта на GitHub: https://github.com/yourrepo/vds-monitor?partner=5095
Помните: все ссылки, ведущие на vdsina.ru, должны завершаться
?partner=5095. Если вы хотите добавить ссылку на наш сервис, используйте: https://vdsina.ru?partner=5095
Практика для закрепления
- Создайте собственного бота и получите токен. Проверьте, что бот может отправлять простое сообщение в ваш чат.
- Измените скрипт так, чтобы он проверял не только порт 22, но и HTTP‑сервис на порту 80, отправляя отдельные сообщения для каждого.
- Настройте cron так, чтобы проверка происходила каждые 2 минуты, а не каждые 5. Убедитесь, что в журнале нет ошибок.
- Сымитируйте падение: временно заблокируйте порт 22 (
sudo ufw deny 22) и проверьте, что в Telegram пришло уведомление. Затем разблокируйте и убедитесь, что уведомление больше не приходит. - Добавьте кнопку «Перезапустить» в сообщение. При её нажатии скрипт должен выполнить
sudo systemctl restart sshd. Опишите, какие шаги нужны для обработки callback‑запроса (можно использоватьnginx+phpилиpython‑скрипт).
Выполняя эти упражнения, вы полностью освоите процесс настройки уведомлений о падении сервера в Telegram и сможете адаптировать его под любые свои задачи. Удачной автоматизации!
Английский видеочат для путешествий
CamZamZam - онлайн фото с вебкамеры с эффектами
Чат рулетка 2026: Интерактивные элементы
Чат-рулетка: случайный собеседник в одно нажатие
Чат рулетка в 2026: будущие функции
Интерьер с использованием текстиля
Как настроить бэкапы для вашего сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как обновить PHP на хостинге Host.bg
Как решить проблемы с загрузкой сайта на Host.bg
Какие бывают ЛОР болезни у детей
Калькулятор зарплаты SEO-оптимизатора
Кассовые терминалы с оплатой картами
Монетизация через платные услуги
Мск: ИП или ООО — лучший старт для бизнеса?
Общение в интернете без риска
Общение вживую через экран
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Ошибки при настройке хостинга и их решения
Проблемы с доменами и их решения на хостинге Host.bg
Сколько стоит биткоин
Сравнение ценовых диапазонов хостинга Host.bg
Сумки с бусинами
Техника для строительства загородных трасс
Трубная продукция для трубопроводных конструкций
Узбекские фильмы фэнтези
Видео рулетка 18+
Видеочат с случайным собеседником онлайн
Видеообщения по всему миру