И так, у нас есть настроенный Nagios core, теперь нужно научить его делиться информацией с администраторами.
Начнем с простого, обычные почтовые оповещения.
Подрозумеваем, что у нас ОС установлена со стандарными пакетами без X11, соответственно exim4 настроен только на localhost - отправляет и получает почту сам на себя.
Такой расклад для Nagios не пойдет, мы сидим в сети предприятия у нас есть почтовая система, вот ей мы и будем пользоваться как релеем.
1. Для изменения конфигурации exim4 запускаем:
:$
sudo dpkg-reconfigure exim4
В появившемся окне выбираем
"mail sent by smart host; no local mail"
Далее заполняем необходимые поля, такие как system mail name, listen ip (127.0.0.1), ну и самое главное это ip релея через который мы будем отправлять почту.
ВАЖНО: ваша почтовая система должна разрешать для сервера Nagios пересылку почты
После выполнения кофигурации exim, проверим отправку почты:
:$
echo "TEST" | mail -s "SUBJECT:TEST" any_mail@domain.ru
С нотификацией по e-mail все...
2.SMS оповещение
ЖЕЛЕЗО.
Как же без него! на практике устанавливал два варианта :). 1-ый - обычный сотовый телефон, хотя нет не совсем обычный: в телефоне должен быть модем, подключаться он должен по USB. Года два-три назад в продаже я нашел один такой и имя ему
sony ericsson k530i. 2-ой вариант - USB GSM-модем - вот его мы и поставим
Я использую купленый у МТС
huawei E1550.
Модем просто вставляем в USB и проверяем в системе нашу железяку:
:#
lsusb
У меня выглядит так:
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
:#
dmesg | grep attached
usb 1-3: GSM modem (1-port) converter now attached to ttyUSB0
usb 1-3: GSM modem (1-port) converter now attached to ttyUSB1
usb 1-3: GSM modem (1-port) converter now attached to ttyUSB2
Тут мы собственно видим, где нам в дальнейшем искать наше устройствo для демона smsd.
 
БАБЛО (материалная составляющая)
СМСки стоят денег, а Nagios по умолчанию шлет их много :), так как в темплейтах (/usr/local/nagios/etc/objects/templates.cfg) установлена опция:
notification_interval 30 (30 - это время в минутах). Тем самым Nagios отсылает каждые 30 минут уведомление о проблемном хосте либо сервисе. Для экономии рубликов, данную опцию лучше установить со значением
0, тогда уведомления не будут повторяться.
 
СОФТ
Для оповещения по СМС будем использовать
SMS Server Tools 3 [http://smstools3.kekekasvi.com/]. Текущая версия 3.1.14
:#
cd ~/distrib
:#
wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.14.tar.gz
:#
tar -xzf smstools3-3.1.14.tar.gz
:#
cd smstools3-3.1.14
:#
make
:#
make install
Файл конфигурации демона smsd находится в /etc/smsd.conf, его необходимо поправить: указать где искать модем, а также прописать строку инициализации. Примерный конфиг:
 
# Example smsd.conf. Read the manual for a description
devices = huaweiE1550
 
checked = /var/spool/sms/checked
incoming = /var/spool/sms/incoming
failed = /var/spool/sms/failed
stats = /var/spool/sms/stats
 
logfile = /var/log/smsd.log
loglevel = 7
receive_before_send = no
status_signal_quality = yes
stats_interval = 60
status_interval = 60
 
[huaweiE1550]
device = /dev/ttyUSB0 # - модем в системе
rtscts = no
baudrate = 115200 #скорость порта
incoming = yes # директива разрешающая "складывать" на сервер входящие сообщения
incoming = high
pin = XXXX # ПИН КОД SIM карты, если установлен указывать обязательно!
init = AT+CPMS="SM","SM","" # Строка инициализации
memory_start = 0
check_memory_method=31
smsc=+7XXXXXXXXXX # НОМЕР SMS ЦЕНТРА МОБИЛЬНОГО ОПЕРАТОРА
Запускаем демона:
:#
/etc/init.d/sms3 start
Проверяем работу на отправку SMS:
:#
sendsms 7XXXXXXXXXX "TEST"
Если все настроено и установленно верно, то в течении нескольких секуд на указаный мобильный придет сообщение.
 
3. Дружим Nagios и SMS Tools
Для того что бы Nagios отправлял SMS, необходимо создать команды в файле /usr/local/nagios/etc/objects/commands.cfg, для сервисов и хостов:
#HOST NOTIFY SMS
define command {
command_name notify-host-by-sms
command_line /usr/local/bin/sendsms $CONTACTPAGER$
"$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$ is $HOSTSTATE$ $LONGDATETIME$"
}
 
#SERVICE NOTIFY SMS
define command {
command_name notify-service-by-sms
command_line /usr/local/bin/sendsms $CONTACTPAGER$
"Service: $SERVICEDESC$ Host: $HOSTNAME$ Address: $HOSTADDRESS$ State:
$SERVICESTATE$ Info: $SERVICEOUTPUT$ Date: $LONGDATETIME$"
}
И остается последний штрих, добавить в темплейт (/usr/local/nagios/etc/objects/templates.cfg) контактов команду нотификации (полностью группа контакта по умолчанию):
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email,notify-service-by-sms
host_notification_commands notify-host-by-email,notify-host-by-sms
register 0
}
На этом все.