Фоновое изображение с материнской платой

Уведомления Proxmox в Telegram

С недавнего времени в Proxmox появилась такая замечательная функция как webhook. Если вкратце, то это мгновенная передача данных между разными сервисами. Благодаря ему, мы сможем с лёгкостью поменять уведомления в Proxmox с электронной почты на Telegram бота. Это не только модно, стильно, молодёжно, но и крайне оперативно. В настройке есть небольшие подводные камни, но их я обязательно затрону. Поехали!

Создаём нового Telegram бота

Для начала обратись к отцу всея ботов, чтобы создать нового. Но только делай это с уважением, если понимаешь о чём я. Выбери в меню /newbot и придумай боту любое понравившееся тебе имя. После необходимо задать для него имя пользователя, оно обязательно должно заканчиваться на «bot».

Создание Telegram бота

Поздравляю! Твой личный бот создан. Отец предоставит тебе ссылку на него и токен для доступа. Обязательно сохрани токен, он нам ещё понадобится. Но если ты его забудешь или потеряешь, то всегда можешь вновь обратиться к отцу ботов. В меню можно посмотреть список своих ботов, токены для доступа, отредактировать их или удалить.

Теперь переходи по ссылке на бота и нажми кнопку «Старт». В итоге твой бот активирован и готов отправлять тебе сообщения.

Настраиваем уведомления в Proxmox

Настройка уведомлений Telegram в Proxmox достаточно простая. Всё что тебе понадобится — это токен бота и твой ID в Telegram.

Поскольку токен у нас есть, давай теперь узнаем твой Chat_ID. Сделать это можно у очередного бота по имени Get My ID. После нажатия кнопки «Старт» он тебе любезно его сообщит.

Собрав всю необходимую информацию, мы наконец-то готовы настроить Telegram уведомления в Proxmox!

В панели управления Proxmox заходи в «Центр обработки данных», раздел «Notifications». Затем нажми кнопку «Добавить» и выбери «Webhook» из выпадающего списка.

Добавление Webhook уведомления в Proxmox

Итак, нам осталось совсем немного. В открывшемся окне задай «Endpoint name» — это имя нашего хука. Метод отправки оставь POST по умолчанию, и введи URL API Telegram для отправки сообщений.

https://api.telegram.org/bot{{ secrets.token }}/sendMessage

В следующем разделе добавь заголовок с ключом Content-Type и значением application/json.

Затем добавь код тела письма. Текст письма настраивается достаточно гибко. Можем добавить иконки и свой текст. Символами \n отметим, где будет перенос строк. Опцией parse_mode обозначим, что уведомление является HTML, а значит, мы спокойно можно использовать теги для форматирования текста. Переменная title передаст заголовок уведомления, а message — сам текст уведомления. На всякий случай экранируем специальные символы опцией escape, чтобы уведомление выглядело и дошло корректно.

{
  "chat_id": "{{ secrets.chat_id }}",
  "text": "⚙️ Proxmox Notification ⚙️\n\n <b>{{ escape title }}</b>\n {{ escape message }}",
  "parse_mode": "HTML"
}

В разделе «Secrets» останется лишь добавить ключ token со значением токена нашего бота, и ключ chat_id со значением твоего ID, полученного у бота Get My ID.

Советую ещё раз пробежаться по настройкам перед сохранением и всё проверить.

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

После добавления хука можешь нажать кнопку «Проверка», и, если все настроено корректно, тебе придёт долгожданное тестовое сообщение от бота.

Тестовое уведомление Telegram от Proxmox

Но это ещё не вся настройка. Ниже в разделе «Notification Matchers» нажми кнопку «Modify» и выбери свой Telegram webhook в качестве цели для уведомлений по умолчанию.

Выбрать Telegram для уведомлений по умолчанию в Proxmox

На этом настройка Proxmox завершена и теперь уведомления будут моментально прилетать в твой Telegram. Но, к сожалению, не все. О подводных камнях я расскажу далее.

Подводные камни и ошибка 400

В первую очередь мы хотим получать уведомления о резервном копирование наших хостов в гипервизоре Proxmox. Они включают в себя не только результат резервного копирования, но и полные логи данной задачи. А если хостов несколько, то логи в уведомлении занимают неприличное количество места.

В мессенджере Telegram есть ограничение в 4096 символов при отправке сообщений ботом. Поэтому ты наверняка столкнёшься с ошибкой 400 при отправке уведомления о резервном копировании из-за чрезмерных логов.

ERROR: could not notify via target `Telegram`: https://api.telegram.org/bot<masked>/sendMessage: status code 400

Логи мы всегда можем посмотреть в самом интерфейсе Proxmox, поэтому в уведомлении они нам не нужны. Чтобы исправить данную ошибку, давай отредактируем шаблон текстовых уведомлений о резервном копировании.

Подключись к серверу Proxmox по SSH. Для начала сделай резервную копию нашего шаблона. Ведь резервные копии наше всё!

cp /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs.bak

Открой шаблон стандартным текстовым редактором.

nano /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs

Содержимое нашего шаблона имеет следующий вид.

{{error}}
Details
=======
{{table guest-table}}
Total running time: {{duration total-time}}
Total size: {{human-bytes total-size}}

Logs
====
{{logs}}

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

{{error}}
Details
=======
{{table guest-table}}
Total running time: {{duration total-time}}
Total size: {{human-bytes total-size}}

Сохрани результат с чувством выполненного долга сочетанием клавиш Ctrl+O и нажми Enter. Выйди из текстового редактора на Ctrl+X.

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

cp /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs /usr/share/pve-manager/templates/default/vzdump-body.txt.hbs.tg

В итоге все этапы настройки завершены. Запусти резервное копирование своих хостов на Proxmox и ожидай заветного уведомления в Telegram о своём успехе.

А на этом у меня всё на сегодня, и удачи в этом интересном мире технологий!

infirit

infirit

Привет! Я Павел — художник, дизайнер, веб‑разработчик и компьютерный специалист.

Один комментарий

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *