Настройка SMS-оповещений в Nagios
Появилась потребность получать от Nagios уведомления не только в почту, но и по смс. USB-свистки сейчас стоят копейки, отправлять смс обучены, ну а тариф с нужным пакетом смс не стоит неприличных денег. Основным средством оповещения по прежнему остается почта, но вот о каких-то глобальных авариях хотелось бы получать уведомления независимо от работы собственной сети и аплинков.
Подключение свистка – тема для отдельного поста, а здесь рассмотрю именно настройку оповещений.
Итак, перво-наперво, нам нужно подключить свисток и научиться с ним работать. Для этого понадобятся две программы. Первая переключит свисток в режим модема (изначально он определяется как флешка или виртуальный диск, на который записываются драйвера и операторский софт).
sudo apt-get install usb-modeswitch usb-modeswitch-data
После чего вставляем наш свисток. В логах должно появиться что-то вроде этого:
admin@monitor:~$ cat /var/log/messages | grep usb Jun 1 19:35:03 monitor kernel: [246333.793109] usb 1-1: new full speed USB device using usb-vhci-driver and address 4 Jun 1 19:35:03 monitor kernel: [246334.250611] usb 1-1: New USB device found, idVendor=12d1, idProduct=1003 Jun 1 19:35:03 monitor kernel: [246334.250617] usb 1-1: New USB device strings: Mfr=2, Product=1, SerialNumber=0 Jun 1 19:35:03 monitor kernel: [246334.250621] usb 1-1: Product: HUAWEI Mobile Jun 1 19:35:03 monitor kernel: [246334.250624] usb 1-1: Manufacturer: HUAWEI Technology Jun 1 19:35:03 monitor kernel: [246334.250781] usb 1-1: configuration #1 chosen from 1 choice Jun 1 19:35:04 monitor kernel: [246334.466338] usbcore: registered new interface driver usbserial Jun 1 19:35:04 monitor kernel: [246334.466425] usbcore: registered new interface driver usbserial_generic Jun 1 19:35:04 monitor kernel: [246334.466434] usbserial: USB Serial Driver core Jun 1 19:35:04 monitor kernel: [246334.491565] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0 Jun 1 19:35:04 monitor kernel: [246334.491654] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1 Jun 1 19:35:04 monitor kernel: [246334.491801] usbcore: registered new interface driver option
Теперь модем видится как /dev/ttyUSB0 и готово к использованию. Если что-то пошло не так, то можно попробовать указать программе ID устройства вручную. Там же, в логах, ищем строчку, которая появляется при подключении устройства:
usb 1-1: New USB device found, idVendor=12d1, idProduct=1446
Далее идем в /etc/usb_modeswitch.d и создаем файлик вида “idVendor:idProduct”, т.е. в нашем случае файл будет называться “12d1:1446”.
Содержимое файла будет выглядеть следующим образом:
# Huawei E270+ (HSPA+ modem) DefaultVendor= 0x12d1 DefaultProduct=0x1446 TargetVendor= 0x12d1 TargetProductList="1001,1406,140c,14ac" CheckSuccess=20 MessageContent="55534243123456780000000000000011060000000000000000000000000000"
Разумеется, DefaultVendor и DefaultProduct надо подставить свои. Вытаскиваем-вставляем свисток, проверяем, что устройство /dev/ttyUSB0 в системе появилось.
Теперь ставим вторую программу, которая будет отправлять смс.
sudo apt-get install gnokii
Создаем конфиг-файл:
sudo mkdir /etc/gnokii sudo nano /etc/gnokii/e1550
Содержимое файла:
[global] model = AT connection = serial port = /dev/ttyUSB0
Этого, в общем, достаточно для работы модема. Проверяем:
sudo gnokii --config /etc/gnokii/e160g --identify
Результат будет примерно таким:
GNOKII Version 0.6.30 IMEI : 359xxxxxxx087 Manufacturer : huawei No flags section in the config file. Model : E1550 Product name : E1550 Revision : 11.608.12.10.209
Теперь нужно написать скрипт, который бы принимал текст сообщения от Нагиоса и отправлял его в модем. Скрипт будет получать два аргумента от Nagios, первый – имя хоста и его состояние, второй – номер получателя.
sudo nano /usr/bin/gpsend
Вставляем:
#!/bin/sh CONFIG="/etc/gnokii/e160g" PIN=6523 echo "$PIN" | /usr/bin/gnokii --entersecuritycode PIN echo "$1" | /usr/bin/sudo /usr/bin/gnokii --config="${CONFIG}" --sendsms "$2" >>/dev/null
Даём права на исполнение:
sudo chmod +x /usr/bin/gpsend
Чтобы для sudo не требовался пароль, прописываем бинарник в sudoers.
sudo visudo ALL ALL=(ALL) NOPASSWD:/usr/bin/gnokii
Это, конечно, определенная дырка в безопасности, но учитывая что сервер находится глубоко внутри сети, то можно обойтись без паранойи.
Разумеется, пользоваться им может не только Nagios, но и любая другая программа. Формат “gn_sendsms hello ‘+79211112233’.
Настроим Nagios:
sudo nano /etc/nagios3/command.cfg
define command{ command_name sms command_line /usr/bin/gpsend $HOSTNAME$-$HOSTSTATE$ $CONTACTPAGER$ }
Так же определим контакт, которому будут отсылаться сообщения. Можно ему же указать и е-мейл, и уведомлять не только по смс, но и по почте.
define contact{ contact_name Snake alias Snake service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r service_notification_commands sms host_notification_commands sms email nix@khd.ru pager +79211112233 }
Перезапускаем Nagios:
sudo service nagios3 reload
На этом все, уведомления настроены.
Скрипт честно стырил у камрада SvM.