LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

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-&gt;new;
    $ua-&gt;timeout(10);
    $response = $ua-&gt;post("http://$host" . SEND_PAGE,
                [
                    "username" =&gt; $user,
                    "pwd" =&gt; $pass,
                    "from" =&gt; 'Nagios',
                    "nphone" =&gt; $phonenum,
                    "testo" =&gt; $text,
                    "nc" =&gt; "http://$host" . SEND_PAGE
                ]);
    if(!$response-&gt;is_success) {
        print("ERROR: " . $response-&gt;status_line . "\n");
        $status_code = UNKNOWN;
    }
    $html_page =  $response-&gt;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'    =&gt; \$host,
        'user|u=s'     =&gt; \$username,
        'pass|pw=s'     =&gt; \$password,
        'number|n=s'     =&gt; \$number,
        'message|m=s'     =&gt; \$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)

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías