Алерты в Telegram на VPS: установка, настройка и выбор сервера
Сервер упал в три часа ночи, а вы узнали об этом утром от пользователей — знакомая боль. Алерты в Telegram решают её просто: сервер сам напишет вам в мессенджер, как только что-то пойдёт не так — кончится диск, подскочит нагрузка, отвалится сервис. Telegram под это идеально подходит: бесплатно, мгновенно, работает на всех устройствах. Разберём настройку с нуля — от создания бота до готового скрипта оповещений и интеграции с системами мониторинга.
Содержание
Почему именно Telegram для алертов
У алертов есть три требования: дойти мгновенно, дойти на любое устройство и не потеряться в шуме. Telegram закрывает все три. В отличие от email, который может уйти в спам и прийти с задержкой, сообщение бота приходит за секунду с push-уведомлением. В отличие от SMS, это бесплатно и без лимитов. А отдельный чат или канал под алерты держит их отдельно от личной переписки.
Механика простая: вы создаёте бота, получаете его токен (ключ доступа к API), узнаёте chat_id вашего чата с ботом, и после этого любой скрипт на сервере может отправить вам сообщение одним HTTP-запросом. Ни отдельного сервера, ни сложной инфраструктуры — Telegram сам доставляет.
Этот подход универсален: так шлют уведомления и самописные скрипты, и готовые системы вроде Zabbix, Grafana, Netdata, Uptime Kuma. Настроив бота один раз, вы подключаете к нему любой источник алертов. Разберём базу, на которой всё держится.
Какой тариф VPS выбрать для старта
Если нужен личный VPN или один простой бот — начните с Lite. Для небольшого сайта с базой данных или автоматизации n8n через внешние API — со Старт. Для нескольких приложений на одном сервере — со Стандарт. Так можно арендовать виртуальный сервер под понятный стартовый сценарий.
Личный VPN или простой бот
Lite · 1 vCPU · 2 ГБ RAM
40 ГБ NVMe
1 vCPU, 2 ГБ памяти и 40 ГБ NVMe.
Сайт или автоматизация
Старт · 2 vCPU · 4 ГБ RAM
80 ГБ NVMe
2 vCPU, 4 ГБ памяти и 80 ГБ NVMe.
Несколько приложений
Стандарт · 4 vCPU · 8 ГБ RAM
160 ГБ NVMe
4 vCPU, 8 ГБ памяти и 160 ГБ NVMe.
Сравнить цены и другие конфигурации можно в каталоге аренды VPS/VDS. Ресурсы можно наращивать по мере роста проекта.
В кнопках заказа выбрана локация в Великобритании. Другую страну можно выбрать при оформлении.
Оплата VPS картой РФ или по СБП доступна в личном кабинете. Для безналичной оплаты от юридического лица или ИП запросите счёт у support@maatrix.io, указав тариф и реквизиты.
Требования и выбор сервера
Для алертов не нужно мощное железо — уведомления отправляет лёгкий скрипт или ваша система мониторинга. Подойдёт любой VPS, на котором крутятся сервисы, за которыми вы следите. Важнее другое — стабильный исходящий доступ к интернету, чтобы сервер мог достучаться до Telegram API.
Здесь есть тонкость с локацией. В некоторых сетях доступ к Telegram API бывает нестабилен. Зарубежный VPS в США или UK гарантированно достаёт до api.telegram.org без сюрпризов, поэтому для надёжной доставки алертов зарубежная локация — беспроигрышный вариант. MAATRIX даёт VPS в нужной локации с оплатой картами российских банков, СБП, криптовалютой или токеном MAAT — иностранная карта не нужна, а сервер поднимается за пару минут.
Проверьте, что сервер видит Telegram API:
curl -s https://api.telegram.org
Ответ с текстом об ошибке метода — это нормально, значит, API доступен.
Шаг 1: создаём бота и получаем токен
Откройте в Telegram чат с @BotFather — это официальный бот для создания ботов. Отправьте команду /newbot, задайте имя и username (должен заканчиваться на bot). BotFather выдаст токен — строку вида 123456789:AAExxxxxxxxxxxxxxxxxxxxxxxx. Это ключ доступа к вашему боту, храните его как пароль: кто знает токен, тот управляет ботом.
Теперь узнайте chat_id — идентификатор чата, куда бот будет слать сообщения. Сначала напишите своему боту любое сообщение (это важно: бот не может написать первым тому, кто с ним не начал диалог). Затем выполните запрос к API, подставив свой токен:
curl -s "https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates"
В ответе найдите блок "chat":{"id":...} — это число и есть ваш chat_id. Для личных сообщений он положительный, для групп — отрицательный. Запишите токен и chat_id, дальше они используются везде.
Шаг 2: отправляем первое сообщение
Проверим, что связка работает. Отправьте тестовое сообщение одним запросом, подставив токен и chat_id:
curl -s -X POST "https://api.telegram.org/bot<ТОКЕН>/sendMessage" \
-d chat_id=<CHAT_ID> \
-d text="Тест: сервер на связи"
Если сообщение пришло в Telegram — всё настроено верно. Это и есть основа всех алертов: любой скрипт формирует текст и делает такой же POST-запрос. Можно добавить форматирование, передав -d parse_mode=HTML и используя теги <b>жирный</b> для важных частей сообщения.
Шаг 3: скрипт оповещений
Обернём отправку в переиспользуемый скрипт, чтобы вызывать его из любого места. Создайте /usr/local/bin/tg-alert.sh:
#!/bin/bash
TOKEN="ВАШ_ТОКЕН"
CHAT_ID="ВАШ_CHAT_ID"
MESSAGE="
Шаг 1: создаём бота и получаем токен
Откройте в Telegram чат с @BotFather — это официальный бот для создания ботов. Отправьте команду /newbot, задайте имя и username (должен заканчиваться на bot). BotFather выдаст токен — строку вида 123456789:AAExxxxxxxxxxxxxxxxxxxxxxxx. Это ключ доступа к вашему боту, храните его как пароль: кто знает токен, тот управляет ботом.
Теперь узнайте chat_id — идентификатор чата, куда бот будет слать сообщения. Сначала напишите своему боту любое сообщение (это важно: бот не может написать первым тому, кто с ним не начал диалог). Затем выполните запрос к API, подставив свой токен:
curl -s "https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates"
В ответе найдите блок "chat":{"id":...} — это число и есть ваш chat_id. Для личных сообщений он положительный, для групп — отрицательный. Запишите токен и chat_id, дальше они используются везде.
Шаг 2: отправляем первое сообщение
Проверим, что связка работает. Отправьте тестовое сообщение одним запросом, подставив токен и chat_id:
curl -s -X POST "https://api.telegram.org/bot<ТОКЕН>/sendMessage" \
-d chat_id=<CHAT_ID> \
-d text="Тест: сервер на связи"
Если сообщение пришло в Telegram — всё настроено верно. Это и есть основа всех алертов: любой скрипт формирует текст и делает такой же POST-запрос. Можно добавить форматирование, передав -d parse_mode=HTML и используя теги <b>жирный</b> для важных частей сообщения.
Шаг 3: скрипт оповещений
Обернём отправку в переиспользуемый скрипт, чтобы вызывать его из любого места. Создайте /usr/local/bin/tg-alert.sh:
#!/bin/bash
TOKEN="ВАШ_ТОКЕН"
CHAT_ID="ВАШ_CHAT_ID"
MESSAGE="$1"
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d parse_mode=HTML \
-d text="🖥 <b>$(hostname)</b>: ${MESSAGE}" > /dev/null
Сделайте его исполняемым: chmod +x /usr/local/bin/tg-alert.sh. Теперь отправка алерта — одна команда: tg-alert.sh "диск заполнен на 90%". Скрипт сам подставит имя хоста, так что вы сразу видите, с какого сервера пришло сообщение — удобно, когда серверов несколько.
Такой скрипт вызывают откуда угодно: из cron-задачи, из обработчика systemd, из вашего кода. Например, проверку свободного места по расписанию можно повесить в cron и слать алерт, когда диск заполнился выше порога.
Важный принцип — не превращать этот скрипт в источник шума. Одно дело — уведомить о реальной проблеме, другое — слать сообщение при каждой мелочи. Поэтому вокруг вызова tg-alert.sh всегда должно быть условие: не «сообщи загрузку диска», а «сообщи, только если загрузка выше 90%». Логику порога держите в самой проверке, а скрипт оставьте тупым отправителем — так его удобно переиспользовать в десятке разных проверок. Ещё полезно логировать факт отправки в файл: если потом окажется, что алерт не пришёл, вы сразу увидите, пытался ли сервер его вообще отправить, и отделите проблему логики от проблемы доставки.
Шаг 4: интеграция с мониторингом и автоматизация
Готовые системы мониторинга умеют слать в Telegram напрямую, и настроенный бот подключается к ним за минуту:
- Zabbix — в разделе Alerts добавьте медиатип Telegram, укажите токен, в профиле пользователя пропишите chat_id и привяжите к действию.
- Grafana — в Alerting → Contact points выберите Telegram, вставьте токен и chat_id.
- Netdata и Uptime Kuma — в настройках уведомлений впишите те же токен и chat_id.
Для самописной автоматики подключите скрипт к системным событиям. Например, чтобы получать уведомление о каждой перезагрузке сервера, добавьте вызов скрипта в systemd или в /etc/rc.local. А связка с cron и простыми проверками (свободное место, загрузка, доступность сервиса) превращает любой VPS в самонаблюдающий: он сам сообщит о проблеме раньше, чем она станет критичной.
Чтобы алерты доходили без сбоев, нужен VPS со стабильным доступом к Telegram API. У MAATRIX сервер в нужной локации готов за пару минут, с оплатой картой РФ, СБП или криптой — иностранная карта не требуется.
"
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d parse_mode=HTML \
-d text="🖥 <b>$(hostname)</b>: ${MESSAGE}" > /dev/null
Сделайте его исполняемым: chmod +x /usr/local/bin/tg-alert.sh. Теперь отправка алерта — одна команда: tg-alert.sh "диск заполнен на 90%". Скрипт сам подставит имя хоста, так что вы сразу видите, с какого сервера пришло сообщение — удобно, когда серверов несколько.
Такой скрипт вызывают откуда угодно: из cron-задачи, из обработчика systemd, из вашего кода. Например, проверку свободного места по расписанию можно повесить в cron и слать алерт, когда диск заполнился выше порога.
Важный принцип — не превращать этот скрипт в источник шума. Одно дело — уведомить о реальной проблеме, другое — слать сообщение при каждой мелочи. Поэтому вокруг вызова tg-alert.sh всегда должно быть условие: не «сообщи загрузку диска», а «сообщи, только если загрузка выше 90%». Логику порога держите в самой проверке, а скрипт оставьте тупым отправителем — так его удобно переиспользовать в десятке разных проверок. Ещё полезно логировать факт отправки в файл: если потом окажется, что алерт не пришёл, вы сразу увидите, пытался ли сервер его вообще отправить, и отделите проблему логики от проблемы доставки.
Шаг 4: интеграция с мониторингом и автоматизация
Готовые системы мониторинга умеют слать в Telegram напрямую, и настроенный бот подключается к ним за минуту:
- Zabbix — в разделе Alerts добавьте медиатип Telegram, укажите токен, в профиле пользователя пропишите chat_id и привяжите к действию.
- Grafana — в Alerting → Contact points выберите Telegram, вставьте токен и chat_id.
- Netdata и Uptime Kuma — в настройках уведомлений впишите те же токен и chat_id.
Для самописной автоматики подключите скрипт к системным событиям. Например, чтобы получать уведомление о каждой перезагрузке сервера, добавьте вызов скрипта в systemd или в /etc/rc.local. А связка с cron и простыми проверками (свободное место, загрузка, доступность сервиса) превращает любой VPS в самонаблюдающий: он сам сообщит о проблеме раньше, чем она станет критичной.
Чтобы алерты доходили без сбоев, нужен VPS со стабильным доступом к Telegram API. У MAATRIX сервер в нужной локации готов за пару минут, с оплатой картой РФ, СБП или криптой — иностранная карта не требуется.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Как узнать chat_id для алертов?
Напишите боту любое сообщение, затем откройте https://api.telegram.org/bot<ТОКЕН>/getUpdates — в ответе будет блок chat с полем id. Для личного чата число положительное, для группы — отрицательное.
Можно ли слать алерты в группу или канал?
Да. Добавьте бота в группу (или сделайте админом канала), возьмите chat_id группы тем же способом. Так уведомления видит вся команда, а не один человек.
Что делать, если сообщения не доходят?
Проверьте доступность api.telegram.org с сервера, верность токена и chat_id, и что вы написали боту первым. В некоторых сетях помогает зарубежный VPS со стабильным доступом к API.
Как оплатить VPS под мониторинг из России?
Картой РФ, по СБП, криптовалютой или токеном MAAT. Иностранная карта не нужна, сервер поднимается за пару минут.
Готовы перейти к настройке?
Закажите Lite с конфигурацией, предложенной для старта, или сравните все тарифы. Оплата картой РФ и через СБП — в личном кабинете.
Заказать Lite Все тарифы и цены