Server Integration · 3 min read · Oct 18, 2025

Nagios 3.x.x/Icinga 1.x.x Server Integration Für SMS-Benachrichtigungen Über FoxBox-Geräte Auf Debian Squeeze

Nagios 3.x.x/Icinga 1.x.x Server Integration Für SMS-Benachrichtigungen Über FoxBox-Geräte Auf Debian Squeeze

Dieses Tutorial erklärt, wie man einen Standard Nagios (oder Icinga) Überwachungsserver mit einem externen SMS-Benachrichtigungsgerät, der FoxBox ( www.smsfoxbox.it), integriert.

1 Vorbemerkung

FoxBox, wie von den Herstellern angegeben, kommt in zwei ähnlichen Versionen (G25 und LX800), die sich in den Hardware-Spezifikationen unterscheiden. In diesem Leitfaden beziehen wir uns auf das SMS Gateway LX800 (wir haben dieses gekauft wegen seiner höheren Leistung und dem CompactFlash-Speicher), aber ich bin zuversichtlich, dass es ohne Probleme auf andere Versionen ausgeweitet werden kann.

Unser Server läuft mit Nagios Core 3.5.0 (mit 1.4.16 Nagios-Plugins) auf einem Debian Squeeze. Wahrscheinlich werden sich die Pfade bei verschiedenen Distributionen ändern, aber die Logik bleibt ziemlich gleich.

2 Installation auf der FoxBox-Seite

Das Gerät ist für diese Art von Kommunikationsaufgaben konzipiert, daher gibt es hier nicht viel zu tun, außer:

  • Eine gültige IP-Adresse bereitzustellen, die von unserem Überwachungsserver erreichbar ist;
  • Eine getestete und voll funktionsfähige SIM-Karte einzulegen, um die SMS zu senden.

3 Installation auf der Server-Seite

Zuerst müssen wir dieses Skript in den Ordner /usr/lib/nagios/plugins/ legen:

#!/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  -u|--user  --pw|--pass  -n|--number  -m|--message \n\n");
    print(" - IP-Adresse oder Hostname der SMS FoxBox\n");
    print(" - Name des Administrators der SMS FoxBox\n");
    print(" - Passwort des Administrators der SMS FoxBox\n");
    print(" - Telefonnummer, an die die SMS gesendet wird\n");
    print(" - zu sendende Nachricht\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);

Es ist auch wichtig, die Berechtigungen für diese Datei richtig zu setzen, damit der Nagios-Benutzer sie ausführen kann.

Jetzt sollten wir die neuen Benachrichtigungsbefehle hinzufügen, die über den SMS-Kanal anstelle des klassischen E-Mail-Kanals arbeiten. Dazu müssen wir diese Zeilen in die Datei /etc/nagios3/commands.cfg einfügen:

# 'notify-host-by-foxbox' Befehldefinition
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$ \nDatum/Uhrzeit: $LONGDATETIME$"
        }
# 'notify-service-by-foxbox' Befehldefinition
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$ \nDatum/Uhrzeit: $LONGDATETIME$"
        }

Wie Sie sehen können, benötigen wir eine neue Information für die Kontakte: die Telefonnummer. Daher müssen wir sie als “pager” in der Datei /etc/nagios3/conf.d/contacts_nagios2.cfg definieren.

Darüber hinaus richten wir den Benachrichtigungsbefehl für Dienste/Hosts ein. Standardmäßig verwenden diese den E-Mail-Kanal, während wir mit den neuen Benachrichtigungsbefehlen alarmieren möchten, also müssen wir auch die Parameter “service_notification_commands” und “host_notification_commands” bearbeiten:

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
        }

Offensichtlich müssen wir, sobald die Konfigurationen abgeschlossen sind, den Nagios-Dienst neu starten, um deren Auswirkungen zu sehen.

Um zu überprüfen, ob alles in Ordnung ist, könnten Sie den Vorab-Check mit

nagios3 -v /etc/nagios3/nagios.cfg

starten.

Soweit ich sehe, wurde diese Architektur auch auf einem Paar von FoxBox-Versionen implementiert, die eine All-in-One-Benachlösung bieten (EasyG2 G25 und Monitoring LX800).

(Referenz: www.smsfoxbox.it)

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.