Zabbix + P1sms P1SMS

Интеграция Zabbix и P1SMS

Чтобы избежать задержек при отправке однотипных сообщений, перед началом рассылок мы рекомендуем создать шаблон СМС без модерации. После его подтверждения все сообщения, созданные по такому шаблону, отправляются без проверок.
Изучить правила создания шаблонов.

Скрипт отправки SMS через P1SMS

Zabbix позволяет вам создавать собственные способы оповещения, основанные на вызове скриптов. Это описано в документации (на русском языке для версии 6.0).

Для отправки SMS подготовлен скрипт, которой требует небольшого редактирования. Вам потребуется изменить в нем АПИ-ключ и номер телефона, на который будут отправляться сообщения от Zabbix.

Чтобы получить АПИ-ключ, зарегистрируйтесь на сайте P1SMS по адресу https://p1sms.ru/. Ключ можно скопировать на странице https://admin.p1sms.ru/panel/apiinfo.

Далее создайте на сервере Zabbix каталог /usr/lib/zabbix/alertscripts для скриптов добавляемых способов оповещения. Отредактируйте файл /etc/zabbix/zabbix_server.conf, удалив символ комментария со строки:

AlertScriptsPath=/usr/lib/zabbix/alertscripts

Затем сохраните файл конфигурации zabbix_server.conf, перезапустите сервис Zabbix и убедитесь, что он работает:

# systemctl restart zabbix-server
# systemctl status zabbix-server

Скрипт отправки SMS нужно скачать по этому адресу.

Переименуйте его в p1sms.pl и запишите в каталог /usr/lib/zabbix/alertscripts.

Сделайте владельцем скрипта пользователя zabbix и разрешите запуск скрипта:

# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/p1sms.pl
# chmod +x /usr/lib/zabbix/alertscripts/p1sms.pl

Проверьте, что владелец и права установлены правильно:

# ls -lh /usr/lib/zabbix/alertscripts/p1sms.pl
-rwxr-xr-x 1 zabbix zabbix 2.1K Oct 18 13:06 /usr/lib/zabbix/alertscripts/p1sms.pl

Найдите в скрипте p1sms.pl функцию sendp1sms и отредактируйте в ней две строки:

my $api_key = '*************';
my $phone_number = '';

Укажите здесь свой API-ключ сервиса P1SMS и номер мобильного телефона для отправки SMS в формате 7хххххххххх.

Добавление способа оповещения p1sms.ru

Откройте в Web-интерфейсе Zabbix меню Administration, выберите из него строку Media Types, а затем щелкните кнопку Create media type. Появится страница добавления нового способа оповещения, которую вам нужно заполнить, как это показано на рис.1.


В поле Name введите название способа оповещения p1sms.ru, а затем выберите из списка Type строку Script. Укажите имя скрипта p1sms.pl в поле Script name.

Далее добавьте в поле Script parameters три параметра: {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE} (именно в этом порядке). Должно получиться так, как показано на рис. 1. Сохраните изменения.

Добавление шаблона сообщений SMS

Мы будем отправлять SMS при недоступности контролируемых серверов с помощью шаблона ICMP Ping, который есть среди готовых шаблонов Zabbix. Вам нужно добавить этот шаблон ко всем серверам, которые вы собираетесь контролировать. Установите в этом шаблоне для метрики Unavailable by ICMP ping уровень серьезности Disaster.

Для добавления шаблона на сервис P1SMS откройте раздел редактирования шаблонов без модерации. Он доступен в разделе Управление, строка Шаблоны без модерации.

Добавьте здесь такой шаблон с помощью кнопки СОЗДАТЬ ШАБЛОН:

ICMP ping %w Down (0)

Добавленный шаблон показан на рис.2.


Инструкция по составлению шаблонов появится на странице добавления шаблона после того, как вы щелкните кнопку СОЗДАТЬ ШАБЛОН.

Шаблоны без модерации нужны для ускорения отправки SMS через сервис P1SMS. Если таких шаблонов нет, или если отправляемое сообщение не будет соответствовать шаблону, SMS попадет на модерацию и может быть задержано на время до 10 минут. Так как нам нужно узнать о проблеме как можно скорее, придется использовать шаблоны.

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

Далее протестируйте добавленный способ оповещений с помощь кнопки Test в разделе Media Types. Используйте здесь сообщение, подходящее под шаблон, например «ICMP ping (hcp2.user-domain.ru:icmpping): Down (0)» (рис.3).


Состояние отправки SMS вы можете узнать на сайте P1SMS в разделе Отчеты, выбрав из меню строку Отправленные СМС.

Назначение типа оповещения p1sms.ru пользователю

После успешного тестирования назначьте тип оповещения p1sms.ru пользователю Admin, как вы это делали раньше. В нашем случае установлены флажки для отправки SMS при уровне серьезности от высокой (High) до катастрофической (Disaster).

Добавление действия для отправки SMS

Также не забудьте добавить действие для отправки SMS. Для этого в меню Configuration выберите меню Action, и далее строку Trigger Actions.

Щелкните кнопку Create action, а затем добавьте действие SMS Notify, как это показано на рис.4.

Добавьте операцию на вкладке Operations рис.5.

Для того чтобы отправляемое сообщение соответствовало шаблону без модерации, настройте операцию с помощью ссылки Edit.

У сообщения должна быть тема {TRIGGER.NAME}:, а само сообщение должно выглядеть так:

{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

Кроме того, выберите в поле Send to users пользователя Admin.

Настроенная операция показана на рис.6.

Тестирование отправки SMS при недоступности сервера

Для тестирования используйте какой-нибудь некритичный сервер, например, виртуальную машину, которую можно безопасно останавливать и запускать заново. Добавьте ее в узлы на сервере Zabbix и подключите шаблон ICMP Ping. Установите в этом шаблоне для метрики Unavailable by ICMP ping уровень серьезности Disaster.

Теперь, если вы завершите работу этой машины, то получите сообщение SMS рис.7.