Система уведомлений (нотификаций) в PBS предназначена для информирования администраторов о ключевых событиях, происходящих в системе, таких как успешное или неудачное выполнение задач резервного копирования, проблемы с хранилищем, предупреждения о состоянии системы и другие важные изменения.
PBS отправляет событие уведомления в случае значимых событий в системе. События обрабатываются системой уведомлений. У события уведомления есть метаданные: временная метка, уровень серьезности, тип и т.д.
Сопоставители уведомлений направляют событие уведомления в один или несколько целевых объектов уведомления. У сопоставителя могут быть правила сопоставления для выборочной маршрутизации на основе метаданных события уведомления.
Цель уведомления (канал доставки уведомлений) — это пункт назначения, в который событие уведомления направляется сопоставлением. PBS предлагает несколько типов целей:
Sendmail — уведомления отправляются через локальный почтовый сервер;
SMTP — уведомления отправляются через внешний SMTP-сервер;
Gotify — уведомления отправляются в сервис Gotify (легковесный сервер для push-уведомлений);
Webhook — выполняются HTTP-запросы к настраиваемому URL-адресу.
Хранилища данных и задания резервного копирования на ленту имеют настраиваемый режим уведомления. Он позволяет выбирать между системой уведомлений и режимом для отправки уведомлений по электронной почте.
Систему уведомлений можно настроить в веб-интерфейсе (раздел → ), через конфигурационные файлы или в командной строке.
Конфигурация системы уведомлений хранится в файлах notifications.cfg
и notifications-priv.cfg
. Файл notifications-priv.cfg
содержит конфиденциальные параметры конфигурации (пароли, токены аутентификации) и доступен для чтения только пользователю root.
57.11.1. Цели уведомлений (Notification Targets)
Цель уведомлений Sendmail использует команду sendmail
для отправки электронных писем списку настроенных пользователей или адресов электронной почты. Если в качестве получателя выбран пользователь, будет использоваться адрес электронной почты, указанный в настройках пользователя Адрес электронной почты пользователя можно настроить в разделе → → . Если для пользователя не указан адрес электронной почты, письмо не будет отправлено.
Двоичный файл sendmail
предоставляется Postfix. Может потребоваться настроить Postfix так, чтобы он мог правильно доставлять почту, например, настроив внешний почтовый ретранслятор. В случае сбоя доставки необходимо проверить системные журналы на наличие сообщений, зарегистрированных демоном Postfix.
Для настройки цели Sendmail необходимо выполнить следующие шаги:
В разделе → → нажать кнопку → :
В открывшемся окне указать следующие данные (в скобках приведены параметры файла
notifications.cfg
):
Имя конечной точки — имя цели;
Включить (disable) — состояние цели;
Получатель (получатели) (mailto-user) — пользователи PBS, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg
;
Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты;
Комментарий (comment) — комментарий для этой цели;
Автор (author) — автор электронного письма. По умолчанию: Proxmox Backup Server - $hostname;
Адрес отправителя (from-address) — адрес отправителя, который будет использоваться в уведомлениях. Если параметр не задан, будет использоваться настройка email_from
из node.cfg
. Если она также не задана, будет использоваться значение по умолчанию root@$hostname, где $hostname — имя узла.
Пример создания цели Sendmail в командной строке:
# proxmox-backup-manager notification endpoint sendmail create
\
sendmail-admins --mailto-user kim@test.alt \
--mailto-user orlov@test.alt --mailto-user root@pam \
--mailto user@example.test --comment "Отправка уведомлений администраторам"
Пример конфигурации (
/etc/proxmox-backup/notifications.cfg
):
sendmail: sendmail-admins
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) — пользователи PBS, которым будут отправлены уведомления. Адрес электронной почты пользователя будет найден в users.cfg
;
Дополнительный получатель (получатели) (mailto) — список дополнительных получателей электронной почты;
Комментарий (comment) — комментарий для этой цели;
Автор (author) — автор электронного письма. По умолчанию: Proxmox Backup Server - $hostname.
Пример создания цели SMTP в командной строке:
# proxmox-backup-manager notification endpoint smtp create
\
smtp --from-address pve-mail@test.alt --server mail.test.alt \
--username pve-mail --password "123" --mailto-user root@pam \
--mailto-user orlov@test.alt
Пример конфигурации (
/etc/proxmox-backup/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
Цели уведомлений Webhook выполняют HTTP-запросы на настраиваемый URL.
Для настройки цели Webhook необходимо выполнить следующие шаги:
В разделе → → нажать кнопку → :
В открывшемся окне указать следующие данные (в скобках приведены параметры файла
notifications.cfg
):
Имя конечной точки — имя цели;
Включить (disable) — состояние цели;
Метод/URL-адрес (method/url) — используемый HTTP-метод (POST/PUT/GET) и URL-адрес, по которому следует выполнять HTTP-запросы. URL-адрес поддерживает шаблонизацию для внедрения содержимого сообщения, метаданных и секретов;
Заголовки (header) — массив HTTP-заголовков, которые следует задать для запроса. Поддерживает шаблонизацию для внедрения содержимого сообщения, метаданных и секретов;
Тело письма (body) — HTTP-тело, которое следует отправить. Поддерживает шаблонизацию для внедрения содержимого сообщения, метаданных и секретов;
Секреты (secret) — массив секретных пар ключ-значение. Они будут храниться в защищенном файле конфигурации, доступном для чтения только пользователю root. Для любых конечных точек API, возвращающих конфигурацию конечной точки, будет возвращено только имя секрета, но не значение. Доступ к секретам можно получить в шаблонах body/header/URL через пространство имен secrets.
Комментарий (comment) — комментарий для этой цели;
Пример создания цели Webhook в командной строке:
# proxmox-backup-manager notification endpoint webhook create ntfy
\
--method post \
--url "https://ntfy.sh/pbs_sync_job_144" \
--body e3sgbWVzc2FnZSB9fQo= \ # Закодированный {{ message }}
--secret name=channel,value=cGJzX3N5bmNfam9iXzE0NA== \ # pbs_sync_job_144
--comment "Отправка PUSH уведомлений"
Содержимое опции body должно быть в base64. Содержимое свойства value опции secret должно быть в base64.
Закодировать строку в base64 можно, выполнив команду:
$ echo -n ' pbs_sync_job_144' | base64 -w 0
cGJzX3N5bmNfam9iXzE0NA==
Пример конфигурации (
/etc/proxmox-backup/notifications.cfg
):
webhook: ntfy
body e3sgbWVzc2FnZSB9fQ==
comment Отправка PUSH уведомлений
method post
url https://ntfy.sh/pbs_sync_job_144
Для параметров конфигурации, которые поддерживают шаблонизацию, синтаксис Handlebars может использоваться для доступа к следующим свойствам:
{{ title }}
— заголовок отображаемого уведомления;
{{ message }}
— тело отображаемого уведомления;
{{ difficulty }}
— серьезность уведомления;
{{ 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-прокси из → → .