Система уведомлений (нотификаций) в PVE предназначена для информирования администраторов о ключевых событиях, происходящих в системе, таких как сбой репликации хранилища, ошибка ограждения узлов, успешное и неудачное выполнение задач резервного копирования и других.
При возникновении значимого события PVE генерирует событие уведомления, которое обрабатывается системой уведомлений. Каждое событие содержит метаданные: временную метку, уровень серьёзности, тип и другие атрибуты.
Сопоставители уведомлений направляют события в один или несколько целевых объектов уведомления (каналов доставки). Для выборочной маршрутизации сопоставители могут использовать правила фильтрации, основанные на метаданных события.
Цель уведомления — это конечный пункт назначения, в который направляется событие. PVE поддерживает следующие типы целей:
Sendmail — отправка уведомлений через локальный почтовый сервер;
SMTP — отправка уведомлений через внешний SMTP-сервер;
Gotify — отправка уведомлений в сервис Gotify (легковесный сервер для push-уведомлений);
Webhook — выполнение HTTP-запросов к настраиваемому URL-адресу.
Задания резервного копирования поддерживают настраиваемый режим уведомления, позволяющий выбирать между системой уведомлений PVE и классической отправкой по электронной почте.
Систему уведомлений можно настроить:
Конфигурация системы уведомлений хранится в файлах:
/etc/pve/notifications.cfg — основные настройки;
/etc/pve/priv/notifications.cfg — конфиденциальные параметры (пароли, токены аутентификации). Файл доступен для чтения только пользователю root.
38.1. Цели уведомлений (Notification Targets)
Цель уведомлений Sendmail использует команду sendmail для отправки электронных писем указанным получателям. Если в качестве получателя указан пользователь PVE, используется адрес электронной почты из его профиля (адрес электронной почты пользователя можно настроить в разделе → → ). Если у пользователя не указан адрес электронной почты, письмо не будет отправлено.
Команда sendmail предоставляется почтовым агентом (например, Postfix). Для корректной доставки может потребоваться настройка Postfix (например, указание внешнего ретранслятора). В случае ошибок необходимо проверить системные журналы на наличие сообщений, зарегистрированных демоном Postfix (journalctl -u postfix).
Для возможности отправки уведомлений Sendmail должен быть запущен postfix:
# systemctl enable --now postfix
Для настройки цели Sendmail необходимо выполнить следующие шаги:
Перейти в раздел → → .
Нажать кнопку → :
В открывшемся окне указать (в скобках приведены параметры файла
notifications.cfg):
Имя конечной точки — идентификатор цели;
Включить (disable) — статус (включено/отключено);
Получатель (получатели) (mailto-user) — пользователи PVE, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg;
Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты (email-адреса);
Комментарий (comment) — комментарий для этой цели;
Автор (author) — имя отправителя (по умолчанию: Proxmox VE);
Адрес отправителя (from-address) — адрес отправителя, который будет использоваться в уведомлениях. Если параметр не задан, используется настройка → → (email_from из файла datacenter.cfg), а при его отсутствии — значение по умолчанию root@$hostname, где $hostname — имя узла.
Пример конфигурации (
/etc/pve/notifications.cfg):
sendmail: sendmails-admin
comment Отправка уведомлений администраторам
mailto user@example.test
mailto-user kim@test.alt
mailto-user orlov@test.alt
mailto-user root@pam
Цель уведомлений SMTP отправляет письма напрямую через SMTP-сервер, не используя системный MTA.
В отличие от Sendmail, SMTP-цель не поддерживает очередь повторных отправок в случае сбоя доставки почты.
Для настройки цели SMTP необходимо выполнить следующие шаги:
Перейти в раздел → → .
Нажать кнопку → :
В открывшемся окне указать (в скобках приведены параметры файла
notifications.cfg):
Имя конечной точки — идентификатор цели;
Включить (disable) — статус (включено/отключено);
Сервер (server) — адрес SMTP-сервера;
Шифрование (mode) — метод шифрования: insecure, starttls или tls (по умолчанию tls);
Порт (port) — порт: 465 (TLS), 587 (STARTTLS), 25 (без шифрования);
Выполнять аутентификацию — добавить данные для аутентификации SMTP;
Имя пользователя (username) — имя пользователя для аутентификации SMTP. Если имя пользователя не задано, аутентификация не будет выполнена. Поддерживаются методы аутентификации PLAIN и LOGIN;
Пароль (password) — пароль для аутентификации SMTP;
Адрес отправителя (from-address) — адрес отправителя, который будет использоваться в уведомлениях. Ретрансляторы SMTP могут потребовать, чтобы этот адрес принадлежал пользователю. Поле Отправитель в электронном письме будет установлено на $author <$from-address>;
Получатель (получатели) (mailto-user) — пользователи PVE, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg;
Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты;
Комментарий (comment) — комментарий для этой цели;
Автор (author) — имя отправителя (по умолчанию: Proxmox VE).
Пример конфигурации:
файл
/etc/pve/notifications.cfg:
smtp: smtp
from-address pve-mail@test.alt
mailto-user root@pam
mailto-user orlov@test.alt
mode tls
server mail.test.alt
username pve-mail
файл
/etc/pve/priv/notifications.cfg:
smtp: smtp
password somepassword
Цели уведомлений Webhook выполняют HTTP-запросы к указанному URL. Поддерживается шаблонизация с использованием Handlebars.
Для настройки цели Webhook необходимо:
Перейти в раздел → → .
Нажать кнопку → :
В открывшемся окне указать (в скобках приведены параметры файла
notifications.cfg):
Имя конечной точки — идентификатор цели;
Включить (disable) — статус (включено/отключено);
Метод/URL-адрес (method/url) — HTTP-метод (POST/PUT/GET) и URL-адрес, по которому следует выполнять HTTP-запросы. URL-адрес поддерживает шаблонизацию для внедрения содержимого сообщения, метаданных и секретов;
Заголовки (header) — массив HTTP-заголовков, которые следует задать для запроса (с шаблонизацией);
Тело письма (body) — содержимое запроса (в формате base64, с шаблонами);
Секреты (secret) — массив секретных пар ключ-значение. Они хранятся в защищенном файле конфигурации (/etc/pve/priv/notifications.cfg), доступном для чтения только пользователю root. Для любых конечных точек API, возвращающих конфигурацию конечной точки, будет возвращено только имя секрета, но не значение. Доступ к секретам можно получить в шаблонах body/header/URL через пространство имен secrets.
Комментарий (comment) — комментарий для этой цели;
Пример конфигурации:
файл
/etc/pve/notifications.cfg:
webhook: ntfy
body e3sgbWVzc2FnZSB9fQ== # Закодированный {{ message }}
comment Отправка PUSH уведомлений
method post
url https://ntfy.sh/pve_backup_job_186
файл
/etc/pve/priv/notifications.cfg:
webhook: ntfy
secret name=channel,value=MTIzNDU2NDg3OA==
Значения body и secret.value должны быть закодированы в base64.
Закодировать строку в base64 можно, выполнив команду:
$ echo -n 'pve_backup_job_186' | base64 -w 0
cHZlX2JhY2t1cF9qb2JfMTg2
Доступные переменные в шаблонах:
{{ title }} — заголовок уведомления;
{{ message }} — тело уведомления;
{{ severity }} — уровень серьёзности (info, notice, warning, error, unknown);
{{ timestamp }} — временная метка в виде эпохи UNIX (в секундах);
{{ fields.<name> }} — метаданные (например, fields.type содержит тип уведомления);
{{ secrets.<name> }} — секреты (например, секретный именованный токен доступен через secrets.token).
Для удобства доступны следующие помощники:
{{ url-encode <value/property> }} — URL-кодирование свойства/литерала;
{{ escape <value/property> }} — экранирование управляющих символов, которые не могут быть безопасно представлены как строка JSON;
{{ json <value/property> }} — преобразование в JSON. Может быть полезно для передачи целого подпространства имен (например, полей) как части полезной нагрузки JSON (например, {{ json fields }}).
Цели Webhook учитывают настройки HTTP-прокси из раздела → → .