Product SiteDocumentation Site

57.11. Уведомления

Система уведомлений (нотификаций) в 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)

57.11.1.1. Sendmail

Цель уведомлений Sendmail использует команду sendmail для отправки электронных писем списку настроенных пользователей или адресов электронной почты. Если в качестве получателя выбран пользователь, будет использоваться адрес электронной почты, указанный в настройках пользователя Адрес электронной почты пользователя можно настроить в разделе КонфигурацияУправление доступомУправление пользователями. Если для пользователя не указан адрес электронной почты, письмо не будет отправлено.

Примечание

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

57.11.1.2. SMTP

Цель уведомлений SMTP позволяет отправлять электронные письма напрямую на почтовый ретранслятор SMTP. Эта цель не использует MTA системы для доставки электронных писем.

Примечание

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

57.11.1.3. Webhook

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