Home
Мониторинг
Nagios + SMS используя мобильный телефон
Мониторинг
Nagios + SMS используя мобильный телефон
Nagios + SMS используя мобильный телефон
Nagios + SMS используя мобильный телефон
Несколькими постами раньше уже были темы об использовании SMS уведомлений в Nagios. Сегодня я расскажу ещё об одном способе уведомлений. Нижеописанный способ несколько надёжнее описанных ранее, но и требует некоторых денежных вложений. Он полезен в том случае, когда какие-то из уведомлений являются критически важными (как, например, выход кондиционера из строя или увеличение влажности).Способ заключается использовании мобильного телефона с корпоративным тарифом (дабы деньги на телефоне не кончились неожиданно).
Физически подключается к серверу по bluetooth, com или usb. На уровне ПО мы будем использовать два скрипта: один из них умеет отправлять sms, второй проверяет статус мобильной сети. Если мобильная сеть недоступна, то nagios отправляет сообщение на email.
Оба скрипта написаны на python и используют библиотеку gammu для подключения к телефону.
Первый скрипт: check_sendsms.py — проверка статуса сети
—
#!/usr/bin/env python
import gammu
import sys
# Create state machine object
sm = gammu.StateMachine()
# Read /etc/gammurc
sm.ReadConfig()
# Connect to phone
sm.Init()
# Reads network information from phone
netinfo = sm.GetNetworkInfo()
# Print information
print 'State: %s' % netinfo['State']
if netinfo['State'] != "HomeNetwork":
sys.exit(2)
Второй скрипт: sendsms.py — собственно отправка sms
—
#!/usr/bin/env python
import gammu
import sys
if len(sys.argv) != 3:
print 'Usage: sendsms.py number1[,number2][...] "message"'
sys.exit(1)
# we are going to send first 160 characters only
text_message=sys.argv[2][:160]
# connect to phone
sm = gammu.StateMachine()
# Read /etc/gammurc
sm.ReadConfig()
sm.Init()
# send messages
for phone_number in sys.argv[1].split(','):
sms_message = {'Text': text_message, 'SMSC': {'Location': 1}, 'Number': phone_number}
try:
sm.SendSMS(sms_message)
except:
print "Sorry, I can't send message to %s" % phone_number
Несколько комментариев
- Скрипт sendsms.py в качестве первого параметра принимает номера телефонов в виде +7xxxxxxxxxx через запятую, и в качестве второго текст сообщениея. Кроме того, SMS-сообщение урезается до 160-ти символов, дабы не усложнять систему использованием Multi Part SMS.
- Примеры команд отправки уведомлений nagios по sms
# 'notify-service-by-sms' command definition
define command{
command_name notify-service-by-sms
command_line /etc/_orga/nagios/nagios-sms/sendsms.py $CONTACTPAGER$ "Nagios - $NOTIFICATIONTYPE$ : $HOSTALIAS$/$SER
VICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)"
}
# 'notify-host-by-sms' command definition
define command{
command_name notify-host-by-sms
command_line /etc/_orga/nagios/nagios-sms/sendsms.py $CONTACTPAGER$ "Nagios - $NOTIFICATIONTYPE$ : Host $HOSTALIAS$
is $HOSTSTATE$ ($HOSTOUTPUT$)"
} - Пример команды проверки статуса сети
# 'check_sendsms' command definition
define command{
command_name check_sendsms
command_line $USER1$/check_sendsms.py
} -
/etc/gammurc для bluetooth будет выглядеть следующим образом
[gammu]
port = /dev/rfcomm0
connection=at19200
Обновлено (31.08.2010 23:15)




Комментарии
уже лет 5 пользуюсь smsmail.ru — отлично и моментально доставляет.
нагиос шлет туда обо всем что происходит на сервере, если мучает паранойя на тему отключения всего сервера от сети, регистрируем аккаунт на pingdom.com, он бесплатно мониторит один сервер, уведомления опять же шлет на smsmail.ru
RSS лента комментариев этой записи.