Tech Recipe Book
My Services
  • Book
    • About the author
    • Architect
      • Algorithms
        • DB index algorithms
          • How does database indexing work
        • Neural network optimization
          • Neural Network Optimization
        • Route search
          • Road network in a database to build a route
          • Traveling Salesman Problem (TSP)
      • Architecture Frameworks
        • DODAF
        • TOGAF
        • Enterprise Architecture (EA) Tools Reviews 2023 | Gartner
      • Zero Trust
      • Billing
        • SHM billing system
      • Bots
        • Discord
        • Telegram
          • Chat GPT Telegram bot
          • Получаем статистику Telegram-канала при помощи api и python или свой tgstat с регистрацией и смс
          • Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7
          • Создание Telegram бота на PHP #1: основные понятия для работы с API
          • Создание Telegram бота на PHP #2: создание первого бота для Telegram
          • Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
          • Создание Telegram бота на PHP #4: отправка файлов и изображений в Telegram
          • Создание Telegram бота на PHP #5: работа с хуками
      • Business intelligence
      • Cloud Storage
        • Ceph
        • Virtual Distributed File System
      • Cryptography
        • Open Source PKI Software
        • OpenPGP
          • Email Encryption
          • Kleopatra
          • Miscellaneous Tools
          • Server side applications
      • Message broker
        • Kafka
          • Kafka UI-tools
          • Kafka streams ksqlDb
        • RabbitMQ
      • DB
        • MySQL
          • Auto sharding
          • MariaDB Zabbix monitoring
          • MySQL and MariaDB replication with Zabbix monitoring
        • Postgres
          • HA PostgreSQL with Patroni, Haproxy, Keepalived
          • Mass parallel requests - Greenplum
          • PostgreSQL cluster for development and testing
        • Vitess - Scalable. Reliable. MySQL-compatible. Cloud-native. Database.
      • Identity and Access Management (IDM)
        • FreeIPA - Identity, Policy, Audit
        • FreeIPA as an Enterprise solution
        • Keycloak
          • Keycloak HA cluster
        • Open Identity Platform
        • SSO
          • Keycloak for Java app
          • OpenAM
          • OpenIG
      • Firewall
        • nftables
      • Infrastructure As a Code
        • Ansible
        • IaC Packer Ansible Teraform
        • Installing Jenkins using terraform in Kubernetes in Yandex Cloud with letsencypt
        • Teraform Crosplan Pulumi
        • Yandex IaC solutions
      • Kubernetes
        • Installation
          • Install Kubernetes cluster
          • Deploying a Kubespray cluster to OpenStack using Terraform
          • Kube deploy in Yandex cloud
        • Frameworks
          • Deckhouse
            • LDAP authentification
            • On premise Install
            • Yandex Cloud Install
          • K3S
          • OpenShift OKD
          • RKE2
          • Rancher
            • Rancher Install
        • Auth
          • Keycloak in k8s
          • LDAP
        • GUI management Lens
        • Monitoring
          • Monitoring with Falco
          • Network monitoring
          • Nginx ingress
          • Prometheus Graphana for sample Nodejs app
          • Rsource monitoring Avito
        • Exposing services
          • Exposing Kubernetes Services
          • Cilium BGP
        • CNCF
        • Helm
          • Repositories
            • Artifact Hub | official
            • Bitnami | vmware
          • Awesome helm charts and resources
          • Essential Services for Modern Organizations
          • Security and Compliance
          • Additional charts
        • Isolation
          • vcluster - Virtual Kubernetes Clusters
          • Kiosk
          • KubeArmor
          • Control Plane Hardening
          • Hierarchical namespaces
        • Security Center
          • Minesweeper
          • NeuVector by SUSE
          • SOAR in Kubernetes
          • Security Сenter for Kubernetes
        • Terraform CI security
          • Terraform plan analysis with Checkov and Bridgecrew
          • Yandex Terraform scan
        • Vulnerability management
          • Aqua
          • Sysdig
          • Kyverno
          • GitLab
          • NeuVector by SUSE
        • Image scanning
          • Snyk
          • Sysdig
          • Harbor
          • Trivy
        • Signature verification
          • Sigstore
        • Control plane security
          • Gatekeeper
            • Applying OPA Gatekeeper
          • Kyverno
            • Policy as a code. Kyverno
        • Runtime Security
          • Osquery
          • Falco
          • ClamAV
        • Network security
          • Cilium
          • Control Plane Hardening (API restriction)
          • Network policy recipes
          • Service mesh
            • Istio HA, LoadBalance, Rate limit
          • mTLS Autocert
        • Honeypot
          • Building honeypot using vcluster and Falco
        • Backup
          • Kasten K10
        • Secrets
          • Vault CSI Driver
      • Load Balance
        • Nginx
        • HAProxy
          • Proxy methods
          • HAProxy for RDP
          • Payment gateway A/B test with HAProxy
          • HAPRoxy for Percona or Galera
      • Monitoring
        • Zabbix
          • Apache Zabbix
          • Disc Quota
          • Nginx Zabbix
          • SSL certificates Zabix
          • Zabbix notifications
        • Nagios
          • Datacenter monitoring
        • Prometheus and Grafana
      • Windows
        • Sysmon enhanced Windows audit
        • Sysmon to Block Unwanted File
      • Linux
        • Rsync
        • Debian based
          • Apt-Cacher NG
          • Unattended Upgrades in Debian / Ubuntu
        • RedHat basede
          • RPM Server
        • Logs analysis
        • Build armhf qemu
      • NGFW
      • CI/CD
        • DevSecOps
          • DAST
            • Burp
              • Dastardly
            • StackHawk
            • ZAP and GitHub Actions
          • SAST
            • Checkmarx
            • OSV by Google
            • Snyk
            • SonarQube
        • GitLab Runner in Yandex Cloud
        • Dynamic Gitlab Runners in Yandex Cloud
        • GitLab runner in Kubernetes with Werf
        • Kubernetes deploy strategies
        • Kubernetes highload deploy. part 1
        • Kubernetes highload deploy. part 2
        • Kubernetes Argo Rollouts
        • Jenkins in Kubernetes
        • Ansible Semaphore
        • Image storage, scaning and signing
        • Install WireGuard with Gitlab and Terraform
        • CI/CD example fror small web app
        • Threat matrix for CI CD Pipeline
      • SIEM / SOC
        • Datadog
        • Splunk
          • Splunk — general description
        • MaxPatrol
          • MaxPatrol 8 and RedCheck Enterprise
        • QRadar IBM
        • Cloud Native Security Platform (CNAPP) - Aqua
        • OSSIM | AT&T
          • AlienVault (OSSIM) install
        • Wazuh
        • EDR
          • Cortex XDR | Palo Alto Networks
          • Cynet
          • FortiEDR | Fortinet
          • Elastic
        • Elastic
          • Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 22.04
          • Setting Up Elastic 8 with Kibana, Fleet, Endpoint Security, and Windows Log Collection
        • Threat Intelligence
          • MISP
          • msticpy Microsoft
          • X-Force | IBM
          • Elastic
      • VPN
        • Full-Mesh VPN fastd, tinc, VpnCloud
        • Wireguard
          • WireGuard for Internet access
          • WireGuard on MikroTik and Keenetic
          • WireGuard site to site
        • SoftEther VPN Project
        • Cisco AnyConnect client
        • OpenConnect
        • SSTP python server
      • OS hardening
        • CIS Benchmarks
      • Cloud Providers
      • OpenNebula
        • OpenNebula Edge Cloud - Open Source Cloud & Edge Computing
        • Discover OpenNebula – Open Source Cloud & Edge Computing Platform
        • OpenNebula Multi-Cloud
        • Kubernetes on OpenNebula
        • The Open Source Alternative to Nutanix
        • The Simple Alternative to OpenStack
        • OpenNebula Partner Ecosystem
      • OpenStack
        • Install manual
        • Install with DevStack
      • VM
        • Create a VHD file from a Linux disk
        • Backup / Migration
          • Coriolis
          • Proxmox Backup Server
        • oVirt
        • VMware vCenter
        • Proxmox
      • Docker
        • Container optimization
        • Ubuntu RDP container
      • LXC
        • LXD on Ubuntu 18.04
        • Install, Create and Manage LXC in Ubuntu/Debian
    • Big Data
      • OLAP data qubes
      • Storage and autoscale in Lerua
    • Machine Learning
      • Yandex YaLM 100B. GPT model
      • Kaggle Community Datasts Models
      • AI in video production
      • Image search
      • Chat bots
        • You.com
        • Chat GPT
          • Implementing GPT in NumPy
        • Jailbreak Chat
      • Coding plugins CodeWhisperer
    • Malware
      • Isiaon/Pitraix: Modern Cross-Platform Peer-to-Peer Botnet over TOR
      • theZoo A repository of LIVE malwares
    • Pentest
      • Red Team
        • MITRE ATT&CK matrix
        • C2 Frameworks
          • Brute Ratel C4
          • Cobalt Strike
          • Covenant
          • Havoc Framework
          • Merlin
          • Metasploit
          • Sillenttrinity
          • Sliver
        • Manage and report
          • Dradis Framework
          • Hexway
        • Underground
      • Social engineering
        • Social Engineer Toolkit setoolkit
      • OSINT
        • OSINT for comapny
        • Instagram fishing
      • Forensics
        • Forensics tools
      • Pentesting Methodology
      • Web
      • CI/CD Methodology
      • Cloud Methodology
        • Hacking The Cloud
      • Kubernetes Pentesting
      • Android
        • SSL Unpinning for Android applications
      • iOS
        • SSL unpinning iOS and macOS applications
      • HackBar tool
      • CyberChef Tools
      • Python virtualenv
      • IppSec - YouTube
      • Hacktricks.xyz
    • Compliance
      • 152 ФЗ. Personal data
      • PCI DSS and ГОСТ Р 57580.1-2017
      • Cloud compliance
      • ГОСТ Р 57580.1-2017 для Kubernetes
      • Kubernets as DevSecOps and NIST compliance
      • NIST SP 800-61 cyberincidece control
      • CIS Kubernetes Benchmark v1.6 - RKE2 v1.20
      • CIS Kubernetes Benchmark v1.23 - RKE2
      • Requirements for Russian Banks
      • Tools
        • Chef InSpec
        • Elastic SIEM
    • Asset management
      • CMDBuild
    • Project management
    • Incident management SRE
    • Risk management
      • IT risk management
      • BSI-Standard 200-3
    • Web Dev
      • Cookie security
      • OWASP Top 10 2021
      • Docker nginx php mysql
      • Docker tor hiddenservice nginx
      • Docker Compose wp nginx php mariadb
      • Dependency Checking
        • Nexus Analyzer
        • OWASP dependency-check
      • Yii skeeks cms
      • YiiStudio
    • Art
      • GTK Themes
      • Themes for Xfce Desktop
      • XFCE / Xubuntu Windows 95
      • Moscow events
      • Photo goods
      • Russian style gifts
    • Cryptocurrency
      • News
      • Arbitrage
      • Stocks
      • Exchange aggregators
      • Where to use
      • Prepaid cards
        • BitFree
        • Pyypl Your Money at Your Fingertips
    • IT magazines
      • WIKI and Writeups tools
        • BookStack
        • GitBook
        • MkDocs
        • Wiki.js
        • DokuWiki
    • Languages
    • Learning
      • (ISC)2
        • CISSP
      • Offensive Security
        • OSCP
        • OSEP
        • OSED
      • DevSecOps
        • Certified DevSecOps Professional (CDP)
        • Certified DevSecOps Expert (CDE)
      • Web Security Academy: PortSwigger
    • Relocation
      • London experience
      • IT visas in 2022
      • Remote work
      • Running business in UAE
    • Freenet
      • Independent online services: the philosophy of a free Internet
      • Tor Project Anonymity Online
      • I2P Anonymous Network
    • Services
      • SMS Registration
        • Registering ChatGPT in Russia
      • Local and regional eSIMs for travellers - Airalo
      • Digital busines cards
      • No KYC services and exchanges
Powered by GitBook
On this page
  • Отправка сообщений по электронной почте
  • Настройка способов оповещений Media Types
  • Назначение Media с типом Email пользователю Zabbix
  • Добавление действий при срабатывании триггера Trigger Actions
  • Отправка сообщений в Telegram
  • Создание бота
  • Получение идентификатора пользователя Telegram
  • Запуск бота
  • Добавление способа оповещений Telegram
  • Назначение типа оповещения Telegram пользователю
  • Добавление оповещения в Telegram для действия при срабатывании триггера
  • Красивые сообщения в Telegram с использованием Emoji
  • Отправка SMS из Zabbix
  • Выбор сервиса для отправки SMS
  • Скрипт отправки SMS через P1SMS
  • Добавление способа оповещения p1sms.ru
  • Добавление шаблона сообщений SMS
  • Назначение типа оповещения p1sms.ru пользователю
  • Добавление действия для отправки SMS
  • Тестирование отправки SMS при недоступности сервера
  • Оповещение от Zabbix по телефону
  • Добавление способа оповещения Zvonobot
  • Назначение способа оповещения Zvonobot пользователю Zabbix
  • Добавление типа оповещения в действия
  • Исключение повторных звонков

Was this helpful?

  1. Book
  2. Architect
  3. Monitoring
  4. Zabbix

Zabbix notifications

Last updated 1 year ago

Was this helpful?

Настройка оповещений о событиях в Zabbix

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

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

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

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

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

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

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

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

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

Если в Web-интерфейсе Zabbix выбрать Media Types из меню Administration, вы увидите многочисленные способы оповещений, доступные для настройки в Zabbix. Часть из них показана на рис. 1.

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

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

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

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

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

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

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

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

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

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

Чтобы способ оповещения заработал, его нужно назначить пользователю Zabbix, например, Admin.

Выберите в меню Administration раздел Users, щелкните имя пользователя Admin, а затем откройте вкладку Media. На рис. 4 мы показали ситуацию, когда для пользователя было добавлено несколько способов оповещения, в том числе и способ Email.

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

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

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

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

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

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

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

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

Итак, мы настроили и проверили способ оповещения Email, а также добавили его для пользователя Admin.

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

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

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

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

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

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

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

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

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

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

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

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

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

Здесь как минимум необходимо выбрать пользователя в поле Send to users и способ извещения Email в поле Send only to.

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

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

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

Сервер Zabbix версии 6.2 содержит встроенную поддержку отправки сообщений в мессенджер Telegram, основанную на использовании Telegram Bot API и Zabbix webhook.

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

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

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

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

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

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

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

Запуск бота

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

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

Теперь в Web-интерфейсе Zabbix откройте меню Administration, выберите из него строку Media Types, а затем найдите и щелкните ссылку Telegram.

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

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

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

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

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

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

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

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

Ранее вы уже назначали тип оповещения Email пользователю Admin. Теперь нужно повторить эту операцию для типа оповещения Telegram.

Откройте вкладку Media, выбрав в меню Administration раздел Users и щелкнув имя пользователя Admin. Далее воспользуйтесь ссылкой Add, чтобы добавить новый тип оповещения.

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

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

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

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

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

На вкладке Operations с помощью ссылки Add добавьте новую операцию, выбрав из списка Send to users пользователя Admin, а из списка Send only to — строку Telegram (рис. 18).

Рис. 18. Добавление операции отправки в Telegram

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для отправки 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

Сделайте владельцем скрипта пользователя 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
my $api_key = '*************';
my $phone_number = '';

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

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

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

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

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

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

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

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

ICMP ping %w Down (0)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не забудьте переименовать скрипт перед его размещением в каталоге /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 = '';
  • LWP::UserAgent

  • HTTP::Request

  • JSON

  • Data::Dumper

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

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

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

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

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

Выберите в меню Administration раздел Users, щелкните имя пользователя Admin, а затем откройте вкладку Media. Добавьте способ оповещения Zvonobot, как это было показано ранее на рис. 4.

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

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

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

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

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

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

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

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

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

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

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

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 минут).

Мы будем использовать готовые способы оповещений Email и Telegram, а также создадим собственные — (для отправки SMS) и Zvonobot (для голосовых сообщений по телефону).

Мы показали случай, когда используется собственный почтовый сервер, доступный на порту 25 с использованием STARTTLS. Сообщения будут отправлены на адрес (имя домена приведено только для примера).

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

( для версии 6.0);

()

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

Прежде всего создайте новый бот с помощью бота . Для этого отправьте боту команду "/newbot". Вам будет предложено ввести имя для нового бота, а также имя пользователя.

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

ваш идентификатор, полученный от бота , а в поля Скопируйте токен, полученный от бота при создании вашего бота, в поле Token, а затем щелкните кнопку Update (рис. 13, токен приведен только для примера).

При тестировании в поле Token уже должен находиться токен вашего бота. Скопируйте в поле To ваш идентификатор, полученный от бота , а в поля Subject и Message — тему и текст сообщения, соответственно.

Выберите в списке Type способ Telegram, а в поле Send To идентификатор пользователя Telegram, который мы получили раньше от бота .

Символы Emoji можно скопировать через буфер обмена Clipboard со страницы , а затем вставить их в нужное место шаблона (рис. 21).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Скрипт можно скачать .

Ключ $api_key можно получить по адресу: в личном кабинете после регистрации в сервисе Звонобот.

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

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

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

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

p1sms.ru
admin@my-domain.ru
здесь
конфигурирование способа оповещения Email
на русском языке
настройка действий
на русском языке
официальной документации Telegram webhook
статье
@BotFather
@BotFather
@myidbot
https://t.me/myidbot
@myidbot
@BotFather
@myidbot
@myidbot
https://apps.timwhitlock.info/emoji/tables/unicode
документации
https://sms.ru/
https://p1sms.ru/
документации
на русском языке
https://p1sms.ru/
https://admin.p1sms.ru/panel/apiinfo
по этому адресу
p1sms.pl
p1sms.pl
p1sms.ru
p1sms.pl
раздел редактирования шаблонов без модерации
hcp2.user-domain.ru
p1sms.ru
TRIGGER.NAME
Звонобот
p1sms.ru
zvonobot.pl
zvonobot.pl
здесь
https://lk.zvonobot.ru/panel/profile
zvonobot.pl
https://lk.zvonobot.ru/panel/phones
документации
на русском языке
zvonobot.pl
https://habr.com/ru/companies/first/articles/696402/