Перейти к содержанию

Уведомления proxmox в telegram бота и почту за 10 минут


Deniom

Рекомендуемые сообщения

  • Эксперты

Это небольшая заметка о том как буквально за 10 минут организовать пересылку уведомлений из системы Proxmox VE  в телеграмм.

Небольшое вступление

В один не очень приятный момент я столкнулся с тем что резервное копирование proxmox из за ошибки не выполнялось несколько дней, а так как эксперименты над виртуалками с моей стороны очень частые для меня это очень плохой звоночек. В один не очень хороший момент я мог просто не найти бэкап на который рассчитывал. Для предотвращения подобной ситуации в будущем решил настроить уведомления в proxmox.

Сама система proxmox поддерживает три типа уведомлений: smtp, gotify и встроенную отправку почты linux. По умолчанию настроен вариант отправки почты linux, но из коробки это решение работать не будет и все уведомления оседают где то в логах системы.

Рассмотрим два других варианта более подробно:

  • Gotify - интересная легкая система которая может удобно собирать по http все уведомления в одном месте. И... на этом все... как по мне в ней не хватает как минимум адекватной возможности пересылки в другие системы.
  • Smtp - это классическая почта, фактически вы даете данные авторизации для отправки почты от вашего имени (или от имени специального почтового ящика).

Вариант использовать почту был уже более приемлемый но хотелось все таки получать уведомления в телеграмм (у меня уже были ранее настроены уведомления для watchtower, sonar, radar и т.д.).

На просторах интернета есть несколько ботов которые подключаются к proxmox api Для управления системой, но по большей степени это именно управление и уведомления они не получают, ну и для задачи это было избыточно.

В сухом остатке имеем два пути решения задачи Gotify или Smtp, причем приложение Gotify работает по принципу что именно приложение идет за сообщением а не сервер отправляет на телефон, это серьезное ограничение которое требует внешний доступ к серверу Gotify.

Простое и элегантное решение

На просторах интернета и обсуждений проблемы в telegram каналах было найдено простое и элегантное решение, smtp_to_telegram. Это небольшое приложение поднимает smtp сервер для приема писем без авторизации и пересылает их в telegram бот. Данный метод можно использовать не только для proxmox но и для любого сервиса поддерживающего smtp отправку уведомлений.

Подробнее о самом решении можете посмотреть на странице GitHub: https://github.com/KostyaEsmukov/smtp_to_telegram

Фактически нам необходимо создать телеграмм бота (или использовать уже имеющийся) который будет только отправлять сообщения, но не будет читать. Это позволяет без проблем использовать одного бота для нескольких уведомлений как например для watchtower (автоматического обновления докер образов).

На просторах интернета множество инструкций по созданию телеграмм ботов подробно расписывать не буду. Коротко идем к служебному боту https://t.me/BotFather и создаем нового бота через меню, нам надо от него токен API. Не забываем написать нашему боту что нибудь для запуска. Так же с помощью https://t.me/myidbot необходимо узнать наш id для отправки сообщений, все опять таки крайне просто пишем боту /getid и получаем циферки которые нам нужны.

Само решение будем запускать как я люблю в докере, так как это банально проще и легко воспроизводится:

version: '3'
services:
 readeck:
    container_name: SmtpToTelegram
    image: kostyaesmukov/smtp_to_telegram:latest
    restart: unless-stopped
    volumes:
      - /DATA/AppData/readeck:/readeck
    environment:
      - ST_TELEGRAM_CHAT_IDS=779979797
      - ST_TELEGRAM_BOT_TOKEN=7127345363:AAEarsdfsdtnYsZZasdasdx0OfFcDc1NLU
      - ST_TELEGRAM_MESSAGE_TEMPLATE={subject}\n\n{body}\n\n{attachments_details}
    ports:
      - 2525:2525

Сам автор проекта не очень коммуникабельный и не собирает дорабатывать как либо решение, или банально делать образ докера под arm64 но есть альтернативный вариант под эту архитектуру.

Для arm64 используйте образ image: cobra1978/smtp_to_telegram

После запуска докер контейнера на нашем сервере на порту 2525 поднимется smtp сервер пересылки без авторизации.

Переходим в настройку proxmox, нас интересует раздел notification у центра обработки данных.

image.png.3bf178612b732d7b99a669f116d9b2d4.png

Создадим новую цель уведомлений smtp с данными для нашего сервиса пересылки (сервер это ip нашего сервера на котором запущен докер контейнер пересылки):

 image.thumb.png.6940bb0928f5261bf4ecbd4bc0e80274.png

Фактически отправитель и получатель могут быть вообще любыми адресами у сервиса нет контроля релевантности адресов кроме общего шаблона <name>@domein

Фактически все у нас есть возможность отправлять уведомления proxmox в телеграмм, нажимаем test и видимо сообщение от бота.

Если не сработало проверьте что у пользователя заполнен почтовый адрес

image.png.8c267402e8cb2b1eababe019196ed1fd.png

Настройка уведомлений на почту

Кроме бота можно настроить еще и дополнительно уведомления на почту, я для таких целей использую свой же почтовый ящик gmail. Но необходимо выполнить несколько предварительных настроек.

Установить у пользователя proxmox почту.

Для этого переходим в управление пользователями proxmox, и заполняем для пользователя от имени которого будем отправлять уведомления электронный адрес.

image.thumb.png.06261377a307706bfb847ed076f3071c.png

image.png.2e239bd74c68e60ce0c8094416af85a1.png

Следующий пункт это получение пароля приложения для нашей почты которая будет выполнять отправку. Каждый почтовый сервис имеет свои правила и настройки, но большая часть современных требует создания пароля приложения с ограниченными правами. Для гугл можно посмотреть тут: https://support.google.com/accounts/answer/185833?hl=ru

После получения пароля возвращаемся в раздел уведомлений proxmox и создаем новую цель для рассылки smtp, для своего почтового сервиса ищите настройки в поиске по словам "smtp <название вашего сервиса>"

image.png.d915184843d224a4ec0aa39873d7cd5b.png

Обратите внимание что получатель и отправитель (настраивается в пользователе) почты могут совпадать, это будет письмо самому себе.

Нажимаем тест и проверяем почту.

image.png.9e741b17e694bffa41d137f39c73ee43.png

Отправителя по умолчанию можно выключить, но удалить не получиться.

Уведомления о бэкапах proxmox

В proxmox существует достаточно гибкая система условий для уведомлений, подробно о ней можно почитать тут https://pve.proxmox.com/wiki/Notifications

Я приведу небольшой пример который я использую для получения уведомлений о бэкапах как успешных так и ошибочных.

Переходим в раздел уведомлений proxmox и создаем новый Notification Matchers

image.png.c64f827f8a129048203a33482b8339d4.png

image.png.ae67b0d39c3d3cbbd1749b2d1a71fec2.png

image.png.017c29e65dc7533a343661d1f229a420.png

image.png.908067c4835c93cc7cb9d1eb7b35347b.png

Данные настройки будут отправлять на телеграмм и почту сообщение о событиях бэкапа в любое время. Для дополнительных ограничений по времени или других типов событий рекомендую ознакомится с документацией.

Пример уведомления о бэкапах в телеграмм, к сообщению дополнительно прикладывается лог. Телеграмм бот дополнительно прикладывает его в виде файла так как не всегда удобно читать логи в сообщении телеграмм.

image.png.fd2c9c5e2515d46730eebf5a7c6ef2b0.png

И оно же на почте

image.thumb.png.876d41632338ffa7c0bc8282fbb8f897.png

Спасибо за внимание, удачной настройки и меньше тревожных ведомлений.

Изменено пользователем Deniom
Ссылка на комментарий
Поделиться на другие сайты

  • Админы
3 минуты назад, Deniom сказал:

Это небольшая заметка о том как буквально за 10 минут организовать пересылку уведомлений из системы Proxmox VE  в телеграмм.

Небольшое вступление

В один не очень приятный момент я столкнулся с тем что резервное копирование proxmox из за ошибки не выполнялось несколько дней, а так как эксперименты над виртуалками с моей стороны очень частые для меня это очень плохой звоночек. В один не очень хороший момент я мог просто не найти бэкап на который рассчитывал. Для предотвращения подобной ситуации в будущем решил настроить уведомления в proxmox.

Сама система proxmox поддерживает три типа уведомлений: smtp, gotify и встроенную отправку почты linux. По умолчанию настроен вариант отправки почты linux, но из коробки это решение работать не будет и все уведомления оседают где то в логах системы.

Рассмотрим два других варианта более подробно:

  • Gotify - интересная легкая система которая может удобно собирать по http все уведомления в одном месте. И... на этом все... как по мне в ней не хватает как минимум адекватной возможности пересылки в другие системы.
  • Smtp - это классическая почта, фактически вы даете данные авторизации для отправки почты от вашего имени (или от имени специального почтового ящика).

Вариант использовать почту был уже более приемлемый но хотелось все таки получать уведомления в телеграмм (у меня уже были ранее настроены уведомления для watchtower, sonar, radar и т.д.).

На просторах интернета есть несколько ботов которые подключаются к proxmox api Для управления системой, но по большей степени это именно управление и уведомления они не получают, ну и для задачи это было избыточно.

В сухом остатке имеем два пути решения задачи Gotify или Smtp, причем приложение Gotify работает по принципу что именно приложение идет за сообщением а не сервер отправляет на телефон, это серьезное ограничение которое требует внешний доступ к серверу Gotify.

Простое и элегантное решение

На просторах интернета и обсуждений проблемы в telegram каналах было найдено простое и элегантное решение, smtp_to_telegram. Это небольшое приложение поднимает smtp сервер для приема писем без авторизации и пересылает их в telegram бот.

Подробнее о самом решении можете посмотреть на странице GitHub: https://github.com/KostyaEsmukov/smtp_to_telegram

Фактически нам необходимо создать телеграмм бота (или использовать уже имеющийся) который будет только отправлять сообщения, но не будет читать. Это позволяет без проблем использовать одного бота для нескольких уведомлений как например для watchtower (автоматического обновления докер образов).

На просторах интернета множество инструкций по созданию телеграмм ботов подробно расписывать не буду. Коротко идем к служебному боту https://t.me/BotFather и создаем нового бота через меню, нам надо от него токен API. Не забываем написать нашему боту что нибудь для запуска. Так же с помощью https://t.me/myidbot необходимо узнать наш id для отправки сообщений, все опять таки крайне просто пишем боту /getid и получаем циферки которые нам нужны.

Само решение будем запускать как я люблю в докере, так как это банально проще и легко воспроизводится:

version: '3'
services:
 readeck:
    container_name: SmtpToTelegram
    image: kostyaesmukov/smtp_to_telegram:latest
    restart: unless-stopped
    volumes:
      - /DATA/AppData/readeck:/readeck
    environment:
      - ST_TELEGRAM_CHAT_IDS=779979797
      - ST_TELEGRAM_BOT_TOKEN=7127345363:AAEarsdfsdtnYsZZasdasdx0OfFcDc1NLU
      - ST_TELEGRAM_MESSAGE_TEMPLATE={subject}\n\n{body}\n\n{attachments_details}
    ports:
      - 2525:2525

Сам автор проекта не очень коммуникабельный и не собирает дорабатывать как либо решение, или банально делать образ докера под arm64 но есть альтернативный вариант под эту архитектуру.

Для arm64 используйте образ image: cobra1978/smtp_to_telegram

После запуска докер контейнера на нашем сервере на порту 2525 поднимется smtp сервер пересылки без авторизации.

Переходим в настройку proxmox, нас интересует раздел notification у центра обработки данных.

image.png.3bf178612b732d7b99a669f116d9b2d4.png

Создадим новую цель уведомлений smtp с данными для нашего сервиса пересылки (сервер это ip нашего сервера на котором запущен докер контейнер пересылки):

 image.thumb.png.6940bb0928f5261bf4ecbd4bc0e80274.png

Фактически отправитель и получатель могут быть вообще любыми адресами у сервиса нет контроля релевантности адресов кроме общего шаблона <name>@domein

Фактически все у нас есть возможность отправлять уведомления proxmox в телеграмм, нажимаем test и видимо сообщение от бота.

Если не сработало проверьте что у пользователя заполнен почтовый адрес

image.png.8c267402e8cb2b1eababe019196ed1fd.png

Настройка уведомлений на почту

Кроме бота можно настроить еще и дополнительно уведомления на почту, я для таких целей использую свой же почтовый ящик gmail. Но необходимо выполнить несколько предварительных настроек.

Установить у пользователя proxmox почту.

Для этого переходим в управление пользователями proxmox, и заполняем для пользователя от имени которого будем отправлять уведомления электронный адрес.

image.thumb.png.06261377a307706bfb847ed076f3071c.png

image.png.2e239bd74c68e60ce0c8094416af85a1.png

Следующий пункт это получение пароля приложения для нашей почты которая будет выполнять отправку. Каждый почтовый сервис имеет свои правила и настройки, но большая часть современных требует создания пароля приложения с ограниченными правами. Для гугл можно посмотреть тут: https://support.google.com/accounts/answer/185833?hl=ru

После получения пароля возвращаемся в раздел уведомлений proxmox и создаем новую цель для рассылки smtp, для своего почтового сервиса ищите настройки в поиске по словам "smtp <название вашего сервиса>"

image.png.d915184843d224a4ec0aa39873d7cd5b.png

Обратите внимание что получатель и отправитель (настраивается в пользователе) почты могут совпадать, это будет письмо самому себе.

Нажимаем тест и проверяем почту.

image.png.9e741b17e694bffa41d137f39c73ee43.png

Отправителя по умолчанию можно выключить, но удалить не получиться.

Уведомления о бэкапах proxmox

В proxmox существует достаточно гибкая система условий для уведомлений, подробно о ней можно почитать тут https://pve.proxmox.com/wiki/Notifications

Я приведу небольшой пример который я использую для получения уведомлений о бэкапах как успешных так и ошибочных.

Переходим в раздел уведомлений proxmox и создаем новый Notification Matchers

image.png.c64f827f8a129048203a33482b8339d4.png

image.png.ae67b0d39c3d3cbbd1749b2d1a71fec2.png

image.png.017c29e65dc7533a343661d1f229a420.png

image.png.908067c4835c93cc7cb9d1eb7b35347b.png

Данные настройки будут отправлять на телеграмм и почту сообщение о событиях бэкапа в любое время. Для дополнительных ограничений по времени или других типов событий рекомендую ознакомится с документацией.

Пример уведомления о бэкапах в телеграмм, к сообщению дополнительно прикладывается лог. Телеграмм бот дополнительно прикладывает его в виде файла так как не всегда удобно читать логи в сообщении телеграмм.

image.png.fd2c9c5e2515d46730eebf5a7c6ef2b0.png

И оно же на почте

image.thumb.png.876d41632338ffa7c0bc8282fbb8f897.png

Спасибо за внимание, удачной настройки и меньше тревожных ведомлений.

Прикольно!
Надо тоже сделать)

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика