Академический Документы
Профессиональный Документы
Культура Документы
Solution
There is also another script on-line that lets your Nagios box call thru the
Asterisk Manager protocol (that way you can have your Nagios installation on a
separate box). See http://www.pplusdomain.net/asterisk_notification.html for
more information.
Nagios configuration
Una vez terminada la instalacin, podemos empezar con la configuracin de Nagios.
El archivo principal donde se definen los parmetros para el programa es nagios.cfg y lo
encontramos en la carpeta /etc/nagios.
Para la instalacin que vamos a hacer no se necesita ningn tipo de modifica.
Los que tenemos que modificar son los siguientes archivos presentes en la carpeta
/etc/nagios/objects:
commands.cfg
localhost.cfg
contact.cfg
[...]
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
service_notification_commands notify-service-by-phone
host_notification_commands notify-host-by-phone
email test@example.com
address2 SIP/1000
} [...]
Notification command
vim /usr/local/nagios/etc/objects/commands.cfg
[...]
define command{
command_name notify-host-by-phone
command_line $USER1$/notify-by-phone.sh $CONTACTADDRESS2$
"Nagios Host Alarm. Notification Type: $NOTIFICATIONTYPE$. Host:
$HOSTNAME$. State: $HOSTSTATE$. Address: $HOSTADDRESS$ Info:
$HOSTOUTPUT$ Time: $LONGDATETIME$" _host_$HOSTEVENTID$
}
define command{
command_name notify-service-by-phone
command_line $USER1$/notify-by-phone.sh $CONTACTADDRESS2$
"Nagios Service Alarm. Notification Type: $NOTIFICATIONTYPE$. Service:
$SERVICEDESC$. Host: $HOSTALIAS$. Address: $HOSTADDRESS$. State:
$SERVICESTATE$. Time: $LONGDATETIME$. Additional Info:
$SERVICEOUTPUT$" _service_$SERVICEEVENTID$
}[...]
El acceso a la pagina de Nagios est protegido y para poder acceder tenemos que
configurar la contrasea del usuario predefinido nagiosadmin de la siguiente forma:
htpasswd -bc /etc/nagios/htpasswd.users nagiosadmin sesamo
Adding password for user nagiosadmin
Este comando crear una archivo htpasswd.users que contendr los datos de acceso para el usuario
predefinido nagiosadmin (en nuestro caso la contrasea es sesamo)
Configuramos Nagios y Apache para que arranquen en automtico:
chkconfig nagios on
chkconfig httpd on
Arrancamos primero apache y luego Nagios:
/etc/init.d/httpd start
/etc/init.d/nagios start
Para entrar en la pagina de Nagios:
http://ipservidor/nagios
----------------------------------------------------------------------------------
Command name: nombre del commando
----------------------------------------------------------------------------------
Command line: los parmetros que pasaremos al comando:
La macro (variable) $USER1$ contiene el valor /usr/lib/nagios/plugins como especificado en el
archivo /etc/nagios/resource.cfg
------------------------------------------------------------------------------------
notify-host-by-phone Nombre del plugin
-----------------------------------------------------------------------------------
$HOSTADDRESS$ la opcin H define el servidor que vamos a interrogar y
$HOSTADDRESS$ es una macro (variable) predefinida que contiene el nombre del servidor
como lo definiremos luego en localhost.cfg
------------------------------------------------------------------------------------
-C public es la comunidad que vamos a utilizar para conectarnos al agente como definido en el
archivo /etc/snmp/snmp.conf que hemos visto en el precedente articulo
-----------------------------------------------------------------------------------
-o la OID que vamos a consultar
-P 2c versin de SNMP utilizada para la consulta
-l la etiqueta que definiremos
-w est por Warning
-c est por Critical
----------------------------------------------------------------------------------
$ARG1$ $ARG2$ $ARG3$ ARG4$ son las macros (variables) cuyo valor ser asignado desde la
configuracin de localhost.cfg
----------------------------------------------------------------------------------
Ej
nano /etc/nagios/objects/commands.cfg
al final del archivo aadimos:
define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C public -o $ARG1$ -P 2c
-l $ARG2$ -w $ARG3$ -c $ARG4$
}
IMPORTANTE
Una vez terminada la instalacin, podemos empezar con la configuracin de Nagios.
El archivo principal donde se definen los parmetros para el programa es nagios.cfg y lo
encontramos en la carpeta /etc/nagios.
Para la instalacin que vamos a hacer no se necesita ningn tipo de modifica.
Los que tenemos que modificar son los siguientes archivos presentes en la carpeta
/etc/nagios/objects:
commands.cfg
localhost.cfg
contact.cfg
Asterisk configuration
/etc/asterisk/extensions.conf
[...]
[alarm]
exten => s,1,Answer
exten => s,2,NoOp(alarmid: ${alarmid})
exten => s,3,Playback(/var/spool/alarm/alarm${alarmid})
exten => s,4,Hangup
[...]
cd /var/spool/alarm
echo $alarmtext > alarm$alarmid.txt
/opt/swift/bin/swift -n Allison-8KHz -f alarm$alarmid.txt -o
alarm$alarmid.tmp.wav
/usr/bin/sox alarm$alarmid.tmp.wav -r 8000 alarm$alarmid.ul
/bin/mv -f alarm$alarmid.ul alarm$alarmid.ulaw
/bin/rm alarm$alarmid.tmp.wav
echo "Channel: $1
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: alarm
Extension: s
Priority: 1
Set: alarmid=$alarmid" > alarm$alarmid.call
/bin/chmod 777 alarm$alarmid.call
/bin/mv alarm$alarmid.call /var/spool/asterisk/outgoing
Setup procedure
prerequisites: Nagios, Asterisk and Cepstral installed
as root:
apt-get install sox
apt-get install libsox-fmt-all
mkdir /var/spool/alarm
chown nagios.asterisk /var/spool/alarm/
Ahora Nagios sabe que tiene que ejecutar cuando llegue el momento.
Como probablemente estemos puestos como nagiosadmin, estaremos
haciendo uso de generic-contact para notificaciones. Todo esto lo podemos
comprobar en /usr/local/nagios/etc/objects/contacts.cfg. Una vez que
sabemos quin somos y cmo se nos notifica (suponemos que estamos en
generic-contact), editamos /usr/local/nagios/etc/objects/templates.cfg y
veremos algo como
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
register 0 }
y aadiremos a host_notification_commands todos aquellos comandos que
queremos se ejecuten cuando hay problemas. En este caso, se llama host-
notify-by-sms. El resultado es:
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email,host-notify-by-
sms
register 0
}
Con esto ya tenemos el sistema listo para enviar sms cuando el host en
cuestin se nos caiga o tenga problemas.