Product SiteDocumentation Site

Глава 38. Уведомления

38.1. Цели уведомлений (Notification Targets)
38.1.1. Sendmail
38.1.2. SMTP
38.1.3. Webhook
38.2. Триггеры уведомлений (Notification Matchers)
38.2.1. Правила сопоставления по календарю (match-calendar)
38.2.2. Правила сопоставления полей (match-field)
38.2.3. Правила сопоставления по уровню серьёзности (match-severity)
38.2.4. События уведомлений
38.2.5. Создание триггера уведомлений
38.3. Пересылка системной почты
38.4. Разрешения
38.5. Режим уведомления
Система уведомлений (нотификаций) в 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)

38.1.1. Sendmail

Цель уведомлений Sendmail использует команду sendmail для отправки электронных писем указанным получателям. Если в качестве получателя указан пользователь PVE, используется адрес электронной почты из его профиля (адрес электронной почты пользователя можно настроить в разделе Центр обработки данныхРазрешенияПользователи). Если у пользователя не указан адрес электронной почты, письмо не будет отправлено.

Примечание

Команда sendmail предоставляется почтовым агентом (например, Postfix). Для корректной доставки может потребоваться настройка Postfix (например, указание внешнего ретранслятора). В случае ошибок необходимо проверить системные журналы на наличие сообщений, зарегистрированных демоном Postfix (journalctl -u postfix).

Примечание

Для возможности отправки уведомлений Sendmail должен быть запущен postfix:
# systemctl enable --now postfix
Для настройки цели Sendmail необходимо выполнить следующие шаги:
  1. Перейти в раздел Центр обработки данныхУведомленияПолучатели уведомлений.
  2. Нажать кнопку ДобавитьSendmail:
    Создать цель уведомлений Sendmail
  3. В открывшемся окне указать (в скобках приведены параметры файла notifications.cfg):
    • Имя конечной точки — идентификатор цели;
    • Включить (disable) — статус (включено/отключено);
    • Получатель (получатели) (mailto-user) — пользователи PVE, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg;
    • Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты (email-адреса);
    • Комментарий (comment) — комментарий для этой цели;
    • Автор (author) — имя отправителя (по умолчанию: Proxmox VE);
    • Адрес отправителя (from-address) — адрес отправителя, который будет использоваться в уведомлениях. Если параметр не задан, используется настройка Центр обработки данныхПараметрыАдрес для отправки сообщений (email_from из файла datacenter.cfg), а при его отсутствии — значение по умолчанию root@$hostname, где $hostname — имя узла.
    Настройка цели уведомлений Sendmail
Пример конфигурации (/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

38.1.2. SMTP

Цель уведомлений SMTP отправляет письма напрямую через SMTP-сервер, не используя системный MTA.

Примечание

В отличие от Sendmail, SMTP-цель не поддерживает очередь повторных отправок в случае сбоя доставки почты.
Для настройки цели SMTP необходимо выполнить следующие шаги:
  1. Перейти в раздел Центр обработки данныхУведомленияПолучатели уведомлений.
  2. Нажать кнопку ДобавитьSMTP:
    Создать цель уведомлений SMTP
  3. В открывшемся окне указать (в скобках приведены параметры файла 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).
    Настройка цели уведомлений SMTP
Пример конфигурации:
  • файл /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
    

38.1.3. Webhook

Цели уведомлений Webhook выполняют HTTP-запросы к указанному URL. Поддерживается шаблонизация с использованием Handlebars.
Для настройки цели Webhook необходимо:
  1. Перейти в раздел Центр обработки данныхУведомленияПолучатели уведомлений.
  2. Нажать кнопку ДобавитьWebhook:
    Создать цель уведомлений Webhook
  3. В открывшемся окне указать (в скобках приведены параметры файла 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) — комментарий для этой цели;
    Настройка цели уведомлений Webhook (ntfy.sh)
Пример конфигурации:
  • файл /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-прокси из раздела Центр обработки данныхПараметрыПрокси HTTP.