MAATRIX / Блог / Как установить и настроить алерты в Telegram на VPS

Как установить и настроить алерты в Telegram на VPS

Как установить и настроить алерты в Telegram на VPS

MAATRIX

Сервер упал в три часа ночи, а вы узнали об этом утром от пользователей — знакомая боль. Алерты в Telegram решают её просто: сервер сам напишет вам в мессенджер, как только что-то пойдёт не так — кончится диск, подскочит нагрузка, отвалится сервис. Telegram под это идеально подходит: бесплатно, мгновенно, работает на всех устройствах. Разберём настройку с нуля — от создания бота до готового скрипта оповещений и интеграции с системами мониторинга.

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

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

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

Почему именно Telegram для алертов

У алертов есть три требования: дойти мгновенно, дойти на любое устройство и не потеряться в шуме. Telegram закрывает все три. В отличие от email, который может уйти в спам и прийти с задержкой, сообщение бота приходит за секунду с push-уведомлением. В отличие от SMS, это бесплатно и без лимитов. А отдельный чат или канал под алерты держит их отдельно от личной переписки.

Механика простая: вы создаёте бота, получаете его токен (ключ доступа к API), узнаёте chat_id вашего чата с ботом, и после этого любой скрипт на сервере может отправить вам сообщение одним HTTP-запросом. Ни отдельного сервера, ни сложной инфраструктуры — Telegram сам доставляет.

Этот подход универсален: так шлют уведомления и самописные скрипты, и готовые системы вроде Zabbix, Grafana, Netdata, Uptime Kuma. Настроив бота один раз, вы подключаете к нему любой источник алертов. Разберём базу, на которой всё держится.

Требования и выбор сервера

Для алертов не нужно мощное железо — уведомления отправляет лёгкий скрипт или ваша система мониторинга. Подойдёт любой VPS, на котором крутятся сервисы, за которыми вы следите. Важнее другое — стабильный исходящий доступ к интернету, чтобы сервер мог достучаться до Telegram API.

Здесь есть тонкость с локацией. В некоторых сетях доступ к Telegram API бывает нестабилен. Зарубежный VPS в США или UK гарантированно достаёт до api.telegram.org без сюрпризов, поэтому для надёжной доставки алертов зарубежная локация — беспроигрышный вариант. MAATRIX даёт VPS в нужной локации с оплатой картами российских банков, СБП, криптовалютой или токеном MAAT — иностранная карта не нужна, а сервер поднимается за пару минут.

Проверьте, что сервер видит Telegram API:

curl -s https://api.telegram.org

Ответ с текстом об ошибке метода — это нормально, значит, API доступен.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под мониторинг

Шаг 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="

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под мониторинг

Шаг 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 сервер в нужной локации готов за пару минут, с оплатой картой РФ, СБП или криптой — иностранная карта не требуется.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под мониторинг
" 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 сервер в нужной локации готов за пару минут, с оплатой картой РФ, СБП или криптой — иностранная карта не требуется.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под мониторинг

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

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

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

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

Как узнать chat_id для алертов?

Напишите боту любое сообщение, затем откройте https://api.telegram.org/bot<ТОКЕН>/getUpdates — в ответе будет блок chat с полем id. Для личного чата число положительное, для группы — отрицательное.

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

Да. Добавьте бота в группу (или сделайте админом канала), возьмите chat_id группы тем же способом. Так уведомления видит вся команда, а не один человек.

Что делать, если сообщения не доходят?

Проверьте доступность api.telegram.org с сервера, верность токена и chat_id, и что вы написали боту первым. В некоторых сетях помогает зарубежный VPS со стабильным доступом к API.

Как оплатить VPS под мониторинг из России?

Картой РФ, по СБП, криптовалютой или токеном MAAT. Иностранная карта не нужна, сервер поднимается за пару минут.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.