Zabbix графики в телеграмм

Zabbix графики в телеграмм Хостинг

Zabbix графики в телеграмм

В предыдущих статьях серии про Zabbix мы рассказывали о том, как контролировать различное оборудование и сервисы. Однако не менее важно настроить оповещения о событиях, требующих реакции со стороны системного администратора.

В этой статье мы расскажем о том, как настроить отправку сообщений о срабатывании триггеров Zabbix по электронной почте, через SMS и Телеграм. Вы также научите свой Zabbix звонить администратору по телефону и сообщать о критических событиях синтезированным голосом с помощью сервиса голосовых рассылок Звонобот.

Содержание
  1. Отправка сообщений по электронной почте
  2. Настройка способов оповещений Media Types
  3. Назначение Media с типом Email пользователю Zabbix
  4. Добавление действий при срабатывании триггера Trigger Actions
  5. Отправка сообщений в Telegram
  6. Создание бота
  7. Получение идентификатора пользователя Telegram
  8. Запуск бота
  9. Добавление способа оповещений Telegram
  10. Назначение типа оповещения Telegram пользователю
  11. Добавление оповещения в Telegram для действия при срабатывании триггера
  12. Красивые сообщения в Telegram с использованием Emoji
  13. Отправка SMS из Zabbix
  14. Выбор сервиса для отправки SMS
  15. Скрипт отправки SMS через P1SMS
  16. Добавление способа оповещения p1sms.ru
  17. Добавление шаблона сообщений SMS
  18. Назначение типа оповещения p1sms.ru пользователю
  19. Добавление действия для отправки SMS
  20. Тестирование отправки SMS при недоступности сервера
  21. Оповещение от Zabbix по телефону
  22. Добавление способа оповещения Zvonobot
  23. Назначение способа оповещения Zvonobot пользователю Zabbix
  24. Добавление типа оповещения в действия
  25. Исключение повторных звонков
  26. Создание бота в Telegram
  27. Отправка уведомления в Telegram пользователю
  28. Отправка уведомления в Telegram группе
  29. Slack
  30. Telegram
  31. WhatsApp
  32. ВКонтакте
  33. Jabber
  34. Push
  35. SMS
  36. Голос
  37. И не забываем охранять охранников
  38. Минуточку внимания
  39. Требуемое оборудование и подготовка к разработке решения
  40. Настройка Zabbix на отправку уведомлений в «Telegram»

Отправка сообщений по электронной почте

Для того чтобы Zabbix мог отправлять сообщения по электронной почте, необходимо сделать следующее:

  • настроить способы оповещений Media Types;

  • назначить Media с типом Email пользователю Zabbix;

  • добавить действие при срабатывании триггера Trigger Action

Расскажем об этом подробнее.

Настройка способов оповещений Media Types

Рис. 1. Способы оповещений в Zabbix
Рис. 1. Способы оповещений в Zabbix

Мы будем использовать готовые способы оповещений Email
и Telegram
, а также создадим собственные — p1sms.ru

(для отправки SMS) и Zvonobot
(для голосовых сообщений по телефону).

Если вы находитесь там, где есть интернет, то сможете получать сообщения через Email и Telegram. Но бывает и так, что доступны только SMS и голосовые звонки. Чтобы не пропустить важные сообщения от Zabbix, пригодятся все эти способы.

Чтобы настроить отправку электронной почты, щелкните на странице Media Types
строку Email
. Далее вам нужно будет заполнить форму, указав в ней параметры исходящего почтового сервера (рис. 2).

Рис. 2. Настройка способа оповещения Email (домен указан только для примера)
Рис. 2. Настройка способа оповещения Email (домен указан только для примера)

В ответственных случаях безопаснее использовать собственный почтовый сервер, который находится под вашим контролем. При необходимости можно настроить отправку почты и через публичные почтовые сервисы, такие как Google Mail или Яндекс Почту. Помимо официальной документации в интернете есть инструкции по настройке, например, здесь
.

Настроив способ оповещения  Email, выполните проверку с помощью ссылки Test
, расположенной справа напротив Email в списке способов оповещений, показанном на рис. 1.

Щелкните эту ссылку и заполните форму, указав в ней адрес получателя Send to
, тему сообщения Subject
и текст сообщения Message
. Затем щелкните кнопку Test
(рис. 3).

Рис. 3. Отправка тестового сообщения через способ оповещения Email
Рис. 3. Отправка тестового сообщения через способ оповещения Email

Если настройки почтового сервера указаны правильно, вы получите сообщение на указанный адрес электронной почты.

На вкладке Message Templates
можно изменить стандартные шаблоны сообщений, отправляемых по электронной почте. 

Назначение Media с типом Email пользователю Zabbix

Рис. 4. Способы оповещения для пользователя Admin
Рис. 4. Способы оповещения для пользователя Admin

Для добавления способа оповещения Email щелкните ссылку Add
. В списке Type
выберите строку Email
.

В поле Send to
укажите адрес электронной почты, по которому должно отправляться оповещение. С помощью поля When active
можно ограничить дни и часы отправки сообщений.

Набор флажков Use if severity
позволяет задать уровни серьезности триггеров, при срабатывании которых необходимо отправить сообщение по указанному адресу (рис. 5).

Рис. 5. Добавление способа оповещения
Рис. 5. Добавление способа оповещения

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

Если нужно отредактировать или удалить способ оповещения, воспользуйтесь ссылкой Edit
или Remove
, соответственно (рис. 4). 

Добавление действий при срабатывании триггера Trigger Actions

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

На рис. 6 показан уже сформированный список действий для различных способов оповещений.

Рис. 6. Список действий для различных способов оповещений
Рис. 6. Список действий для различных способов оповещений

Здесь действие zabbix03 action
, заключающееся в отправке сообщения по электронной почте, выполняется для всех уровней серьезности, кроме Disaster. Действие SMS Notify
выполняется при срабатывании триггеров с уровнем серьезности High и Disaster. И, наконец, действие DISASTER_ALERT_Phone_CALL
определено для звонков по телефону при срабатывании триггеров уровня Disaster.

Чтобы создать новое действие, воспользуйтесь кнопкой Create action
на странице Trigger Actions
. Вам будет предложено добавить действие на вкладке Action
(рис. 7). 

Рис. 7. Редактирование добавленного действия
Рис. 7. Редактирование добавленного действия

Задайте имя действия, а затем щелкните ссылку Add
, чтобы добавить операцию. При добавлении выберите в списке Type
уровень серьезности триггера Trigger severity
. Чтобы сообщение электронной почты отправлялось для любого уровня серьезности, кроме Disaster, выберите значения полей Operator
и Severity
, как это показано на рис. 8.

Рис. 8. Добавление нового условия выполнения действия
Рис. 8. Добавление нового условия выполнения действия

Далее для добавленного действия на вкладке Operations
необходимо добавить операции. На рис. 9 три операции уже добавлены.

Рис. 9. Добавление операций
Рис. 9. Добавление операций

Для добавления операции воспользуйтесь ссылкой Add
. Здесь можно добавить операции, которые будут выполнены при срабатывании триггера, при восстановлении его состояния (поле Recovery operations
), а также при обновлении состояния (поле Update operations
).

На рис. 10 мы показали форму редактирования уже добавленной операции.

Рис. 10. Редактирование операции
Рис. 10. Редактирование операции

Вы также можете отредактировать шаблон темы сообщения Subject
и шаблон сообщения Message
, отметив флажок Custom message
. Если этого не сделать, будут использованы шаблоны сообщения по умолчанию, определенные в способе оповещения Email. 

Официальная документация, имеющая отношение к настройке отправки сообщений по электронной почте, находится здесь:

Отправка сообщений в Telegram

Мы расскажем о том, как настроить отправку персональных сообщений. Если нужно отправлять сообщения в группу Telegram, то соответствующий способ настройки описан в официальной документации Telegram webhook
, а также в статье
.

Создание бота

Результат показан на рис. 11 (имена и токен приведены только для примера).

Рис. 11. Регистрация нового бота (имена и токен приведены только для примера)
Рис. 11. Регистрация нового бота (имена и токен приведены только для примера)

Для настройки отправки сообщений в Telegram вам потребуется токен HTTP API, выделенный на рис. 11 рамкой красного цвета, а также идентификатор пользователя Telegram, который будет получать оповещения из Zabbix.

Получение идентификатора пользователя Telegram

Запустите этот бот и введите ему команду «/getid». В ответ вы получите собственный идентификатор (рис. 12, идентификатор показан только для примера).

Рис. 12. Получение собственного идентификатора (идентификатор показан только для примера)
Рис. 12. Получение собственного идентификатора (идентификатор показан только для примера)

Запуск бота

Получив идентификатор, подключитесь к боту, созданному на предыдущей шаге, и выдайте ему команду «/start». Это необходимо, чтобы бот смог отправлять вам сообщения.

Добавление способа оповещений Telegram

Рис. 13. Копирование токена при настройке способа оповещения Telegram (токен приведен только для примера)
Рис. 13. Копирование токена при настройке способа оповещения Telegram (токен приведен только для примера)

Добавив способ оповещения, протестируйте его с помощью ссылки Test
.

Если все будет хорошо, вы увидите сообщение об успешном тестировании (рис. 14).

Рис. 14. Тестирование способа оповещения Telegram
Рис. 14. Тестирование способа оповещения Telegram

Вы также получите тестовое сообщение в Telegram (рис. 15).

Рис. 15. Получено тестовое сообщение в Telegram
Рис. 15. Получено тестовое сообщение в Telegram

Если все в порядке, можно переходить к назначению настроенного способа оповещения Telegram пользователю Zabbix, а также к добавлению этого способа к существующему или новому действию.

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

С помощью флажков Use if severity
укажите серьезность триггеров, при срабатывании которых нужно отправлять сообщения в Telegram. На рис. 16 показана установка флажков для случая, когда в Telegram требуется отправка для уровней от средней ( Average
) до катастрофической ( Disaster
).

Рис. 16. Настройка типа оповещения для Telegram при назначении пользователю Zabbix
Рис. 16. Настройка типа оповещения для Telegram при назначении пользователю Zabbix

Добавление оповещения в Telegram для действия при срабатывании триггера

На следующем шаге в меню Configuration
выберите меню Action
, а потом из него — строку Trigger Actions
. Затем откройте вкладку Operations
(рис. 17).

Рис. 17. Вкладка Operations с добавленными операциями
Рис. 17. Вкладка Operations с добавленными операциями
Рис. 18. Добавление операции отправки в Telegram
Рис. 18. Добавление операции отправки в Telegram

Теперь при выполнении действия вы получите сообщение о срабатывании триггера (а также о восстановлении его состояния) в мессенджер Telegram.

Красивые сообщения в Telegram с использованием Emoji

Вы можете «оживить» сообщения, отправляемые сервером Zabbix в Telegram с помощью символов Emoji (рис. 19).

Рис. 19. Добавление символов Emoji в сообщения от Zabbix
Рис. 19. Добавление символов Emoji в сообщения от Zabbix

Чтобы это сделать, добавьте символы Emoji в тему Subject
для шаблонов сообщений способа оповещений Telegram, доступных на вкладке Message templates
(рис. 20).

Рис. 20. Шаблоны сообщений для Telegram
Рис. 20. Шаблоны сообщений для Telegram

Символы Emoji можно скопировать через буфер обмена Clipboard со страницы https://apps.timwhitlock.info/emoji/tables/unicode

, а затем вставить их в нужное место шаблона (рис. 21).

Рис. 21. Вставка символа Emoji в поле Subject шаблона сообщения для Telegram
Рис. 21. Вставка символа Emoji в поле Subject шаблона сообщения для Telegram

Символы Emoji полезны, так как привлекут ваше внимание к важным сообщениям.

Отправка SMS из Zabbix

В сервере Zabbix среди встроенных способов оповещений Media Types есть отправка SMS. Однако этот способ требует наличия GSM модема, подключенного к последовательному порту сервера Zabbix, о чем написано в документации
.

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

Читайте также:  Повысьте свою производительность в Интернете с помощью VPS-хостинга и быстрого Интернета.

Выбор сервиса для отправки SMS

Как оказалось, отправка SMS через онлайн-сервисы стоит заметных денег, причем для некоторых операторов мобильной связи есть еще и ежемесячная абонентская плата. Стоимость отправки SMS на момент написания этой статьи составляла от 5 руб. до 20 руб. за одно сообщение. 

Некоторые сервисы допускают отправку SMS без абонентской платы, однако не для всех операторов мобильной связи (например, https://sms.ru/

)
.

В итоге был выбран сервис P1SMS https://p1sms.ru/

. После настройки шаблона сообщений удалось отключить модерацию и отравлять сообщения по цене 5 руб. за штуку. Если в вашей информационной системе критичные ошибки не идут большим потоком, то это может быть разумным выбором.

Как мы уже говорили, доставка оповещений через SMS будет работать даже в том случае, если в зоне нахождения вашего смартфона нет интернета (или он очень дорогой), но есть мобильная связь.

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

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

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

Далее создайте на сервере 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  
  

Переименуйте его в 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

Рис. 22. Добавление способа оповещения Script
Рис. 22. Добавление способа оповещения Script

В поле Name
введите название способа оповещения p1sms.ru

, а затем выберите из списка Type
строку Script
. Укажите имя скрипта p1sms.pl

в поле Script name
.

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

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

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

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

   ICMP ping %w Down (0)  
  

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

Рис. 23. Добавлен шаблон без модерации
Рис. 23. Добавлен шаблон без модерации

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

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

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

Рис. 24. Тестирование способа оповещения p1sms.ru
Рис. 24. Тестирование способа оповещения p1sms.ru

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

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

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

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

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

Рис. 25. Добавление действия SMS Notify
Рис. 25. Добавление действия SMS Notify

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

Рис. 26. Добавление операции для отправки SMS
Рис. 26. Добавление операции для отправки SMS

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

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

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

Рис. 27. Настроенная операция
Рис. 27. Настроенная операция

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

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

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

Рис. 28. Пример сообщения SMS о недоступности узла
Рис. 28. Пример сообщения SMS о недоступности узла

SMS выглядят не так красиво, как сообщения в Telegram, однако они придут туда, где нет интернета.

Оповещение от Zabbix по телефону

Сообщение SMS легко пропустить, а вот на вызов по телефону вы скорее всего отреагируете (конечно, если в смартфоне не отключен звук).

Для повышения вероятности реагирования настроим отправку оповещений о катастрофических проблемах уровня Disaster голосовым звонком на телефон с использованием сервиса Звонобот
.

Настройка голосовых звонков аналогична только что рассмотренной настройке для SMS, поэтому мы остановимся только на основных моментах.

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

Кроме того, если становятся недоступными сразу несколько серверов, нам достаточно получить только один звонок по телефону. И еще не повредит повторный звонок через полчаса, если в первый раз дозвониться не удалось.

Добавление способа оповещения Zvonobot

Добавьте в Media types
новый способ оповещения Zvonobot
, аналогично тому, как мы добавляли способ p1sms.ru

(рис. 29).

Рис. 29. Добавление способа оповещения Zvonobot
Рис. 29. Добавление способа оповещения Zvonobot

Выберите в списке Type
строку Script
, а в поле Script name
введите имя скрипта zvonobot.pl
. Кроме того, добавьте параметры, как это показано на рис. 29.

Не забудьте переименовать скрипт перед его размещением в каталоге /usr/lib/zabbix/alertscripts
.

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

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

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

   ls -lh /usr/lib/zabbix/alertscripts/zvonobot.pl
-rwxr-xr-x 1 zabbix zabbix 4.8K Oct 17 15:40 /usr/lib/zabbix/alertscripts/zvonobot.pl  
  

Отредактируйте в скрипте три строки:

   my $api_key = '';
my $phone_number  = '';
my $outgoingPhone = '';  
  

Ключ $api_key можно получить по адресу: https://lk.zvonobot.ru/panel/profile

в личном кабинете после регистрации в сервисе Звонобот.

Для работы скрипта  zvonobot.pl
нужно установить на сервер Zabbix memcached, а также необходимые модули Perl:

Вам также потребуется два номера телефона. В переменную $phone_number запишите номер телефона, на который будет звонить Zabbix при обнаружении катастрофической проблемы (в формате 7*****).

Второй номер телефона запишите в переменную $outgoingPhone. Телефон с этим номером потребуется вам всего один раз для получения SMS от сервиса Звонобот. Звонки будут поступать именно от этого исходящего номера, поэтому вам их будет легко идентифицировать. Исходящий номер должен быть добавлен как личный и подтвержден в разделе ДРУГОЕ
Номера телефонов
личного кабинета https://lk.zvonobot.ru/panel/phones

.

После добавления способа оповещения Zvonobot протестируйте его с помощью ссылки Test
. В поле Send to
укажите номер телефона, на который должны приходить звонки от Zabbix (рис. 30).

Рис. 30. Тестирование способа оповещения Zvonobot
Рис. 30. Тестирование способа оповещения Zvonobot

При успешном тестировании вы получите звонок, и робот произнесет синтезированным голосом текст сообщения Message
, а также тему Subject
.

Назначение способа оповещения Zvonobot пользователю Zabbix

В поле Use if severity
отметьте флажок Disaster
, чтобы звонки поступали только при самых серьезных проблемах.

Добавление типа оповещения в действия

Добавьте действия для способа Zvonobot. Как и раньше, в меню Configuration
выберите меню Action
, далее строку Trigger Actions
, а затем щелкните кнопку Create action
.

Мы создали действие DISASTER_ALERT_Phone_CALL, определив для него сразу две операции, имеющие отношение к способу Zvonobot (рис. 31).

Рис. 31. Операции для Zvonobot
Рис. 31. Операции для Zvonobot

Обратите внимание, что в поле Steps
мы указали шаг эскалации 2-2, а в поле Step duration
(длительность шага эскалации) — значение 20 минут (рис. 32). 

Рис. 32. Настройка операции для Zvonobot
Рис. 32. Настройка операции для Zvonobot

На рис. 31 видно, что сразу после возникновения проблемы категории Disaster сообщение отправляется в Telegram, затем на электронную почту (шаг эскалации 1-1). Еще через 10 минут выполняется звонок через сервис Звонобот (шаг 2-2), который потом повторяется через 30 минут (шаг 3-3).

Когда сработают все шаги эскалации, на основной панели Zabbix Global View можно будет увидеть время и результат завершения каждого шага (рис. 33).

Рис. 33. Время и результат завершения шагов эскалации
Рис. 33. Время и результат завершения шагов эскалации

Применение эскалации описано в документации
(для версии 6.0 на русском языке
).

Исключение повторных звонков

Чтобы исключить повторные звонки, которые могут поступить при одновременном отказе нескольких контролируемых хостов, в скрипте zvonobot.pl
вызывается функция not_recently_called:

   if(not_recently_called(20*60))
{
  phone_call_zvonobot($api_url, $api_key, $phone_number, $outgoingPhone, $message);
}
  
  

Она создает в memcached ключ “Zabbix_phone_monitor” со значением “Phone was called”, который будет автоматически удален по истечении заданного времени (в нашем случае через 20 минут).

Читайте также:  Освоение DNS-запросов: раскрыты ключевые концепции

Profile picture for user Олег

Zabbix

На самом деле есть несколько способов отправлять сообщения из Zabbix в Telegram, но здесь я рассмотрю только отправку с помощью вебхуков.

Нам понадобится создать бота для отправки сообщений. Бот может отправлять сообщения пользователям или в группу.

telegram

Создание бота в Telegram

   /start  
  

telegram

Выводится справка по командам. Для создания бота пишем:

   /newbot  
  

Нам предлагают указать для бота name
(имя), я пишу:

   Zabbix internet-lab.ru  
  
   zabbix_internet_lab_ru_bot  
  

telegram

zabbix

Сохраняем изменения. Кстати, в описании также приводится краткая инструкция по настройке Telegram:

  1.  Register bot: send "/newbot" to @BotFather and follow instructions
2.  Copy and paste the obtained token into the "Token" field above
3.  If you want to send personal notifications, you need to get chat id of the user you want to send messages to:
 3.1.  Send "/getid" to "@myidbot" in Telegram messenger
 3.2.  Copy returned chat id and save it in the "Telegram Webhook" media for the user
 3.3.  Ask the user to send "/start" to your bot (Telegram bot won't send anything to the user without it)
4.  If you want to send group notifications, you need to get group id of the group you want to send messages to:
 4.1.  Add "@myidbot" to your group
 4.2.  Send "/getgroupid@myidbot" in your group
 4.3.  Copy returned group id save it in the "Telegram Webhook" media for the user you created for group notifications
 4.4.  Send "/start@your_bot_name_here" in your group (Telegram bot won't send anything to the group without it)  

Отправка уведомления в Telegram пользователю

Если вы хотите отправить личное сообщение пользователю, то в его профиле в разделе Media нужно указать chat id
пользователя из Telegram.

telegram

   /getid  
  

telegram

На самом деле таких ботов, которые возвращают идентификаторы довольно много.

telegram

Можно протестировать отправку сообщения в Telegram ссылкой «test».

telegram

telegram

Sending failed: Bad Request: chat not found.

Это нормально, ботам нельзя отправлять сообщения пользователям без их согласия. Нахожу созданного бота Zabbix internet-lab.ru
и отправляю ему команду:

   /start  
  

Проверяю ещё раз.

telegram

Media type test successful.

telegram

Отправка уведомления в Telegram группе

Для отправки уведомления в группу нужно эту группу создать, добавить в неё созданного бота и отправить уведомление на id группы.

ПРИМЕЧАНИЕ: если вы сделаете группу «супергруппой», то у неё сменится идентификатор.

Создаю группу, добавляю в неё бота.

telegram

   /getgroupid@myidbot  
  

telegram

Получаем идентификатор группы, заметьте, что он отрицательный, не теряем минус.

Можно протестировать отправку сообщения в Telegram.

telegram

telegram

Сообщения отправляются в Telegram. Теперь можно заниматься настройкой, шлифовкой, дизайном и прочими неинтересными вещами.

telegram

Время на прочтение

Zabbix графики в телеграмм

Кажется, что в последнее время электронная почта больше подходит для спама, чем для оперативных оповещений системы мониторинга. В этой статье я соберу методы получения уведомлений на мобильные устройства ― как через мессенджеры, так и через традиционные каналы связи.

Рассматривать решения я буду на примере Zabbix, но их можно адаптировать и под вашу любимую систему, лишь бы она умела запускать скрипты по триггеру.

Slack

Получать уведомления в такой корпоративный мессенджер как Slack действительно удобно, а благодаря открытому API ― еще и просто. С API можно познакомиться в официальной документации
, я же покажу пару примеров реализации.

Самым простым решением станет интеграция с мессенджером через механизм Webhook. Для начала нужно получить на сайте сервиса в разделе Incoming WebHooks
специальный адрес, на который можно отправлять запросы хоть обычным curl
. Также там можно будет выбрать иконку и канал для отображения сообщений по умолчанию.

Zabbix графики в телеграмм

Получаем URL для отправки запросов.

Zabbix графики в телеграмм

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

Более интересным и сложным способом решения задачи будет создание полноценного бота. В отличие от простого варианта с curl, бот может не только кидать уведомления, но и удалять их при решении проблемы.

Ознакомиться с исходным кодом бота и подробной инструкцией по настройке можно в репозитории zabbix-notify
на GitHub. Помимо Slack, этот бот поддерживает уведомления в HipChat, создание новых инцидентов и разрешение старых в системе управления инцидентами PagerDuty.

Telegram

Получать уведомления в этот популярный, но заблокированный на территории РФ, мессенджер тоже удобно, благо открытый API это позволяет. Ознакомиться с возможностями автоматизации можно в документации
на официальном сайте.

Zabbix графики в телеграмм

Получаем токен для нашего бота-уведомлятора.

Теперь можно отправлять сообщения запросами через curl. В качестве усложненной реализации можно привести в пример бота, отправляющего не только уведомления, но и графики. Завести себе бота поможет GitHub-репозиторий Zabbix-in-Telegram
.

С подробной инструкцией к простому и чуть более сложному скрипту можно ознакомиться в материале «Отправка уведомлений и графиков из Zabbix в Telegram»
.

WhatsApp

Этот мессенджер, к сожалению, не имеет документированного публичного API и борется со скриптами на GitHub в рамках «борьбы со спамом». Но выход есть. Можно использовать штатное решение « прямая связь
», описанное в официальном FAQ. Но тогда понадобится держать инстанс WhatsApp Web. Аналогично сработает обвязка автокликером веб-версии или десктопного приложения.

Чуть более интересным вариантом будет использование консольного «мессенджера» yowsup
. Сам мессенджер доступен в одноименном репозитории
GitHub .
Пока решение работает. Но если WhatsApp вдруг решит поменять свой API, то для адаптации понадобится время.

Zabbix графики в телеграмм

Отправка сообщений через консоль.

Подробнее с настройкой консольного скрипта и Zabbix можно ознакомиться в статье « Получаем уведомления от Zabbix в WhatsApp
».

ВКонтакте

Если ваш дежурный инженер проводит в соцсетях немало времени, то можно отправлять уведомления ему прямо в сообщения (или на стену) ВКонтакте.

Сначала нам понадобится создать свое приложение в соцсети ― для получения токена. Сделать это можно в разделе « Мои приложения
». После создания нового приложения нам нужно скопировать его ID в разделе «Настройки» и перейти по ссылке:

   https://oauth.vk.com/authorize?client_id=appid&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,**messages**,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token  
  

Разумеется, вместо

appid

нужно подставить свой ID. А если нужно просто отправлять сообщения ― без оповещения друзей инженера, если он сам не отвечает, ― то в параметрах достаточно задать

messages

.

telegram

Где в значении параметра
access_token

будет необходимый нам токен.

Теперь при помощи обычного curl
можно слать сообщения, а с оберткой из простого скрипта это сможет делать и Zabbix.

С пошаговой настройкой уведомлений и вариантом реализации скрипта можно ознакомиться в статье « Прикручиваем к Zabbix оповещения в VKontakte
».

Jabber

Если некоторое ретроградство вам не чуждо, то еще остался Jabber. Получать уведомления в старый любимый мессенджер Zabbix позволяет «из коробки». Для этого достаточно настроить аккаунт в свойствах оповещений:

Zabbix графики в телеграмм

Настройка аккаунта Jabber.

И указать нужные JID в свойствах пользователей. Подробнее можно ознакомиться в официальной документации Zabbix в разделе Jabber
. Я же добавлю, что если предварительно аккаунт Jabber зарегистрировать в нужных транспортах, то можно отправлять сообщения в ICQ, IRC и прочий агент Mail.ru.

Push

Если не зацикливаться на модных и не очень мессенджерах, то можно получать уведомления и просто через технологию push. Она поддерживается не только в мобильных устройствах, но и в любой Windows 10, а также в браузерах Chrome и Firefox.

Тут нам придется или развертывать свой сервер и приложения для отправки сообщений, или воспользоваться платными сервисами вроде Pushbullet
, Pushsafer
или Pushover
. Методика схожа с остальными: регистрируемся, получаем токен, ставим приложения или расширения браузера и шлем сообщения хоть многострадальным curl.

Выбор конкретного сервиса зависит от ценника. В общем и целом все они работают примерно одинаково. Некоторые сервисы предоставляют ограниченное количество бесплатных сообщений ― например, у Pushbullet это будет 100 сообщений в месяц.

Zabbix графики в телеграмм

Push уведомления на Android.

С примером конкретных реализаций можно ознакомиться:

Уведомления в мессенджеры на телефоны ― это, конечно, хорошо. Но только до тех пор пока у сервера Zabbix есть выход в интернет. Для гарантированного получения уведомлений при сбоях в сети лучше использовать традиционные каналы связи.

SMS

Zabbix «из коробки» поддерживает возможность отправлять SMS. К сожалению, он умеет это делать только через последовательный интерфейс. Если у вас завалялся Siemens MC35 или что-то подобное, то с настройками отправки СМС можно ознакомиться в документации Zabbix в разделе SMS
.

Помимо такого архаичного варианта, можно воспользоваться сервисом для отправки СМС вроде sms.ru
. Благо они все поддерживают разного рода API. Некоторые предоставляют и e-mail шлюз, и для настройки уведомлений не понадобится писать скрипты. Самое главное при выборе шлюза ― проверить его на предмет задержек доставки СМС.

Читайте также:  Повысьте безопасность своей сети с помощью нашего надежного приложения MikroTik: установите сейчас!

Zabbix графики в телеграмм

Настройка скрипта для уведомлений по СМС.

С примером настройки Zabbix можно ознакомиться в статье « Бесплатная отправка SMS
-уведомлений в Zabbix
».

Отправка СМС через внешний шлюз не решит проблему отсутствия интернета на сервере в отличие от отправки через аппаратные устройства с симкой. В качестве бюджетного варианта можно использовать USB-модем ― например, Huawei e1550.

Пошаговую инструкцию можно посмотреть в материале « Оповещения Zabbix через sms, используя GSM модем. Простая настройка
».

Голос

СМС можно пропустить запросто, а вот телефонный звонок ― уже сложнее. Поэтому для особо срочных уведомлений можно настроить Zabbix на телефонные звонки. Выходов, как обычно, несколько.

Простым решением будет использование внешнего сервера SIP. Для этого понадобится библиотека PJSIP
, которую можно применить как консольный SIP-клиент. Для генерации голосового сообщения подойдет утилита text2wave
из комплекта генерации речи Festival
. Собрав все в кучу и добавив скриптовой магии, можно быть разбуженным заботливым сервером мониторинга.

Пример реализации детально описан в статье « Оповещения из Zabbix телефонным звонком
».

Альтернативным вариантом станет использование своей АТС на базе Asterisk и обращение к ней с помощью специальных call-файлов или по интерфейсу AMI
. Тогда, при наличии независимого от интернета канала связи вроде аналоговой линии или потока Е1, можно будет выслушать проблемы вашего сервера.

Описание решения доступно в материале « Оповещение о проблемах Zabbix по телефону через Asterisk
».

И не забываем охранять охранников

В статье я постарался привести ссылки на основные решения для уведомлений инженеров о проблемах. Главное, при проектировании системы мониторинга учесть возможность отсутствия интернета и не забыть про дублирующую систему, ответив себе на извечный вопрос « Quis custodiet ipsos custodes?
». И, конечно же, не нужно превращать сервер мониторинга в спамера, иначе уведомления станут бессмысленны.

Если вы используете какой-то другой способ оповещения ― мы ждем его в комментариях.

По руководству
был настроен бот, тест сообщений в чат проходил, даже сообщения отправлялись. После этого была сделана попытка подкрутить шаблоны сообщений, в т.ч. вставить эмодзи. И всё сломалось. А сейчас даже тест сообщений не проходит.

Media type test failed.

5f59e716a24c1025841492.png

Если убрать скобочки, тест проходит. Но в реальных сообщениях разных символов, в том числе '-'
, '('
и т.п. дофига и все эти сообщения оседают в Action Log.

Ну, и чтоб 2 раза не вставать — как например в subject сообщения вставить эмодзи, например, SOS с кодом \xF0\x9F\x86\x97
? Маркдаун :sos:
тоже не срабатывает. Если попытаться вставить сам символ, то ругается при уже сохранении страницы Media Type.


  • Вопрос задан

    более двух лет назад

Эмоджи можно определять как Unicode Surrogates (вида `\u01234\uABCD` )

Тогда в JS-скрипте отправки сообщения в телеграм надо 29-ю строку вида

data = JSON.stringify(params);

заменить на

   var dataJSON = JSON.stringify(params);
        var re = /\\u([0-9A-F]{4})/g;
        data = dataJSON.replace(re, 'u$1');  
  

Суть в том, что JSON.stringify экранирует все слэши в Surrogates, получается два слэша. Поэтому, после того, как получили JSON с data для отправки надо вернуть один слэш и это изменение делаем только для Unicode Surrogates, а не вообще по тексту. Регулярка в помощь.

единственное, не все проходят, возможно, UTF16 не годятся.

У меня такие подошли ✅ ‼️ ⚠️

14 авг. 2023, в 18:57

500 руб./за проект

14 авг. 2023, в 18:34

1500 руб./за проект

14 авг. 2023, в 17:56

50000 руб./за проект

Минуточку внимания

Мы продолжаем публикацию цикла статей по реализации интеграции устройств мониторинга микроклимата серверных комнат и устройств удалённого распределения питания  NetPing
 с мессенджером  «Telegram»
. Ранее в нашем блоге мы достаточно подробно рассматривали  процесс создания ботов
 для «Telegram»,  управление розетками IP PDU NetPing
управление кондиционером в серверной комнате
 и  управление IO линиями устройства NetPing
 с помощью мессенджера «Telegram». В этой статье мы рассмотрим процесс создания средства удалённого мониторинга микроклимата серверной комнаты при помощи графиков, отправляемых в «Telegram».

Требуемое оборудование и подготовка к разработке решения

  • Устройство мониторинга   UniPing server solution v3
     или  UniPing server solution v3/SMS
     – 1 шт.;
  • Датчик температуры 1-Wire
     – 1 шт.;
  • Датчик влажности 1-Wire, (HS)
     – 1 шт.;
  • ПК или сервер с предустановленной операционной системой  CentOS
     Linux release 7.4.1708 (Core) и развёрнутой системой мониторинга  версии 3.4.8 – 1 шт.;
  • Локальная сеть для связи между устройством  UniPing server solution v3/SMS
     и ПК, на котором выполняется скрипт бота – 1 шт.;
  • Мессенджер «Telegram» на ПК или смартфоне с доступом к Интернет – 1 шт.;
  • Python 2.7.5 и менеджер пакетов pip – 1 шт.

Интерпретатор языка программирования Python 2.7.5 установлен в системе CentOS Linux release 7.4.1708 (Core) по умолчанию. Установим менеджер пакетов pip при помощи следующих команд: «# cd /usr/src && wget https://bootstrap.pypa.io/get-pip.py» и «# python get-pip.py»:

CentOS загрузка Pip

CentOS установка Pip

Так же для работы необходим pip модуль «requests». Установим его командой «# pip install requests»:

CentOS установка requests

На сайте  github.com
 в свободном доступе есть  скрипт
, который умеет отправлять в «Telegram» графики из системы мониторинга Zabbix.   исходники скрипта
 и копируем в директорию «/usr/lib/zabbix/alertscripts» нашего сервера Zabbix файлы «zbxtg.py» и «zbxtg_settings.example.py» из скачанного с  Файл переименовываем «zbxtg_settings.example.py» в «zbxtg_settings.py». Приводим содержимое «zbxtg_settings.py» примерно к такому виду:

  # -*- coding: utf-8 -*-

tg_key = "624993224:AAE74nYdfK3aDgej_AowQ0Gc0rXDFCSvZQk" # telegram bot api key

zbx_tg_prefix = "zbxtg" # variable for separating text from script info
zbx_tg_tmp_dir = "/var/tmp/" + zbx_tg_prefix # directory for saving caches, uids, cookies, etc.
zbx_tg_signature = False

zbx_tg_update_messages = True
zbx_tg_matches = {
  "problem": "PROBLEM: ",
  "ok": "OK: "
}

zbx_server = "http://192.168.1.211/zbx/" # zabbix server full url
zbx_api_user = "Admin"
zbx_api_pass = "12345"
zbx_api_verify = False # True - do not ignore self signed certificates, False - ignore

zbx_basic_auth = False
zbx_basic_auth_user = ""
zbx_basic_auth_pass = ""

proxy_to_zbx = None
proxy_to_tg = None

#proxy_to_zbx = "proxy.local:3128"
#proxy_to_tg = "proxy.local:3128"

google_maps_api_key = None # get your key, see 

#zbx_tg_daemon_enabled = False
#zbx_tg_daemon_wl_ids = [509559395, ]
#zbx_tg_daemon_wl_u = ["zeroxzed", ]

zbx_db_host = "localhost"
zbx_db_database = "zabbix"
zbx_db_user = "root"
zbx_db_password = "12"

emoji_map = {
  "OK": "✅",
  "PROBLEM": "❗",
  "info": "ℹ️",
  "WARNING": "⚠️",
  "DISASTER": "❌",
  "bomb": "?",
  "fire": "?",
  "hankey": "?",
}  

Для успешной работы скрипта нам необходимо заполнить корректными значениями следующие переменные:

Делаем основной файл скрипта «zbxtg.py» исполняемым при помощи команды «# chmod +x /usr/lib/zabbix/alertscripts/zbxtg.py»

CentOS изменение прав на запуск скрипта

Настройка Zabbix на отправку уведомлений в «Telegram»

Zabbix добавление нового типа оповещения

Zabbix параметры оповещения

После заполнения всех настроек оповещения нажимаем кнопку «Add».

Zabbix добавление нового опевещения пользователю

Zabbix добавление нового оповещения пользователю. Заполнение параметров

Сохраняем изменения нажатием кнопок «Add» и «Update».

Zabbix создание действия

В открывшемся окне на вкладке «Action» заполняем поля как в нашем примере. Здесь нам необходимо отсортировать триггеры, при срабатывании которых будут отправляться сообщения в «Telegram». Это действие будет выполняться при отклонении температуры от нормального диапазона.

Zabbix подбор триггеров для действия

где:

Name
 – уникальное имя действия. В нашем примере «temp_error»;

Type of calculation
 – тип логического правила для триггеров. В нашем примере «Custom expression»;

Conditions 
– условия, при которых будет срабатывать действие. Имена триггеров, при срабатывании которых будет отправляться графическое сообщение в «Telegram», должны содержать фразы «Temperature Sensor» и одно из условий «Above Safe Range» или «Below Safe Range»;

New condition 
– поле для создания нового условия. Добавление правил подтверждается нажатием на ссылку «Add» в поле «New condition»;

Enabled
 – параметр для включения и отключения данного действия.

Затем переходим на вкладку «Operations» и прописываем текст сообщения, которое будет отправлено в «Telegram» при срабатывании триггера, описанного на вкладке «Action»:

Zabbix настройка сообщения

Рассмотрим подробнее переменные, которые были указаны в сообщении:

zbxtg;graphs
 — указывает, что будем отправлять график;

zbxtg;graphs_period
 – период времени, который будет отображён на графике. Время указывается в секундах;

zbxtg;itemid
 – параметр который определяет itemid для графика. Мы указали нужный itemid вручную;

zbxtg;title
 — задаёт имя для заголовка графика.

Zabbix Configuration - Hosts - Items

И найдите интересующий вас параметр. Например, значение температуры на первом  термодатчике
 устройства мониторинга   UniPing server solution v3/SMS
:

Zabbix выбор параметра

Откройте свойства нужного вам параметра. Значение itemid будет в адресной строке браузера:

Zabbix свойства параметра

Zabbix форма описания действия

Подтверждаем создание нового действия нажатием кнопки «Add»
.

Zabbix создание действия

В открывшемся окне на вкладке «Action» заполняем поля как в нашем примере:

Zabbix подбор триггеров для действия

Затем переходим на вкладку «Operations» и прописываем текст сообщения, которое будет отправлено в «Telegram» при срабатывании триггера, описанного на вкладке «Action»:

Zabbix форма описания действия

Подтверждаем создание нового действия нажатием кнопки «Add».

В результате этих настроек администратор системы будет получать такие сообщения в «Telegram»:

Telegram Общий вид сообщений с графиками

Если кликнуть по картинке с графиком мышкой, то она откроется в большем размере:

Telegram увеличенное сообщение

Таким образом, мы получили ещё один инструмент, который может сделать работу системного администратора в части контроля микроклимата серверной комнаты немного проще.

Оцените статью
Хостинги