LinuxParty
1 Nota preliminar
FoxBox (www.smsfoxbox.it), según lo indicado por los fabricantes, se presenta en dos versiones similares (G25 y LX800) que difieren en aspectos específicos de hardware. En esta guía nos referiremos a SMS Gateway LX800 (compramos éste debido a su alto rendimiento y el almacenamiento CompactFlash), pero estoy seguro de que podría extenderse a otras versiones sin problemas.
Nuestro servidor se ejecuta el Nagios Core 3.5.0 (con plugins de Nagios 1.4.16) sobre una Debian Squeeze. Probablemente para diferentes distribuciones los caminos van a cambiar, pero la lógica sigue siendo la misma
2 Instalación del lado FoxBox
El dispositivo está diseñado para este tipo de tareas de comunicación, por lo que no hay mucho que hacer aquí, excepto:
Proporcione una dirección IP válida, accesible desde nuestro servidor de supervisión; Inserte una tarjeta SIM de trabajo probada y completa, para enviar los SMS.
3 Instalación en el lado del servidor
En primer lugar tenemos que poner este script dentro de la carpeta /usr/lib/nagios/plugins/:
#!/usr/bin/perl use LWP::UserAgent; use Getopt::Long; use strict; use warnings; use constant OK => 0; use constant WARNING => 1; use constant CRITICAL => 2; use constant UNKNOWN => 3; use constant SEND_PAGE => "/source/send_sms.php"; my($host); my($username); my($password); my($number); my($message); sub usage() { print("Usage: send_sms -h|--host <host> -u|--user <username> --pw|--pass <password> -n|--number <phone_number> -m|--message <message>\n\n"); print("<host> - IP address or hostname of the SMS FoxBox\n"); print("<username> - name of the SMS FoxBox administrator\n"); print(" <password> - password of the SMS FoxBox administrator\n"); print(" <phone_number> - phone number where SMS will be sent\n"); print("<message> - message to be sent\n"); } sub send_sms { my($host, $user, $pass, $phonenum, $text) = @_; my($ua); my($html_page); my($response); my($status_code); $ua = LWP::UserAgent->new; $ua->timeout(10); $response = $ua->post("http://$host" . SEND_PAGE, [ "username" => $user, "pwd" => $pass, "from" => 'Nagios', "nphone" => $phonenum, "testo" => $text, "nc" => "http://$host" . SEND_PAGE ]); if(!$response->is_success) { print("ERROR: " . $response->status_line . "\n"); $status_code = UNKNOWN; } $html_page = $response->content; if($html_page =~ /p class="(\w+)"/g) { if($1 eq "confneg") { print("ERROR: Unable to send SMS\n"); $status_code = UNKNOWN; } else { $status_code = OK; } } else { print("ERROR: Unknown page output\n"); $status_code = UNKNOWN; } return $status_code; } undef $host; undef $username; undef $password; undef $number; undef $message; GetOptions( 'host|H=s' => \$host, 'user|u=s' => \$username, 'pass|pw=s' => \$password, 'number|n=s' => \$number, 'message|m=s' => \$message); if(!defined $host || !defined $username || !defined $password || !defined $number || !defined $message) { usage(); exit(UNKNOWN); } $message =~ s/\\n/\n/g; my($ret_status); $ret_status = send_sms($host, $username, $password, $number, $message); exit($ret_status);
También es importante establecer correctamente los permisos de este fichero, para que el usuario Nagios pueda ejecutarlo.
Ahora hay que añadir los nuevos comandos de notificación, que trabaja en el canal en lugar del clásico único correo electrónico SMS. Para ello, hay que añadir estas líneas al archivo /etc/nagios3/commands.cfg:
# 'notify-host-by-foxbox' command definition define command{ command_name notify-host-by-foxbox command_line /usr/lib/nagios/plugins/sendSMS.sh -h "127.0.0.1" -u "nagiosadmin" -pw "nagios" -n "$CONTACTPAGER$" -m "Host Alert: $HOSTNAME$ \nHost State: $HOSTSTATE$ \nDate/Time: $LONGDATETIME$" } # 'notify-service-by-foxbox' command definition define command{ command_name notify-service-by-foxbox command_line /usr/lib/nagios/plugins/sendSMS.sh -h "127.0.0.1" -u "nagiosadmin" -pw "nagios" -n "$CONTACTPAGER$" -m "Service Alert: $HOSTALIAS$/$SERVICEDESC$ \nService State: $SERVICESTATE$ \nDate/Time: $LONGDATETIME$" }
Como puede ver, necesitamos una nueva información para las visitas, el número de teléfono. Por lo tanto, tenemos que definirlo como "buscapersonas" en el archivo /etc/nagios3/conf.d/contacts_nagios2.cfg.
Por otra parte, hemos creado el comando notificación de servicio / host. Por defecto estos están utilizando el canal de correo electrónico, mientras que nosotros queremos alertar a los nuevos comandos de notificación, así que tenemos que editar los parámetros "service_notification_commands" y "host_notification_commands":
define contact{ contact_name test-contact use generic-contact alias tester email yourname@domain host_notification_commands notify-host-by-foxbox service_notification_commands notify-service-by-foxbox pager 12453683421 }
Obviamente, una vez terminada la configuración que tenemos que reiniciar el servicio de Nagios para ver sus efectos.
Para comprobar que todo está bien, tal vez podría iniciar la verificación previa con:
nagios3 -v /etc/nagios3/nagios.cfg
Como yo lo veo, esta arquitectura también se ha aplicado en un par de versiones FOXBOX, proporcionando una solución de notificación todo-en-uno (EasyG2 G25 y Monitoreo LX800).
(Referencias: www.smsfoxbox.it)
-
Nagios
- Instalar Nagios Core en openSUSE Linux
- Cómo añadir un Linux al servidor de Monitorización Nagios mediante el plugin NRPE
- Añadir Windows al servidor de Monitorización Nagios.
- Controlar un Windows con el servidor de Monitorización Nagios
- Cómo vigilar, monitorizar y controlar a Linux y Windows Server en Red usando Nagios
- Instalar Nagios 4.0.1 en RHEL/CentOS 6.x/5.x y Fedora 19/18/17
- Instalar y configurar Monit (para la supervisión de procesos y servicios)
- Nagios 3.x.x/Icinga 1.x.x Integration Server para alertas SMS a través de dispositivos Foxbox En Linux Debian Squeeze
- Monitorizar Drupal con Opsview
- Explicación de los componentes de configuración de Nagios (2)
- Explicación de los componentes de configuración de Nagios
- R2-D2 Monotoriza Su Web Server
- Utilizar Nagios en Linux para Monitorizar Redes
- Instalar Nagios en Fedora / RedHat / CentOS