Integrazione Server · 3 min read · Oct 18, 2025
Integrazione del Server Nagios 3.x.x/Icinga 1.x.x per Avvisi SMS tramite Dispositivi FoxBox su Debian Squeeze
Integrazione del Server Nagios 3.x.x/Icinga 1.x.x per Avvisi SMS tramite Dispositivi FoxBox su Debian Squeeze
Questo tutorial spiega come integrare un server di monitoraggio standard Nagios (o Icinga) con un dispositivo esterno di notifica SMS, il FoxBox ( www.smsfoxbox.it).
1 Nota preliminare
FoxBox, come dichiarato dai produttori, è disponibile in due versioni simili (G25 e LX800) che differiscono per specifiche hardware. In questa guida ci riferiremo al SMS Gateway LX800 (abbiamo acquistato questo perché offre prestazioni superiori e memoria CompactFlash), ma sono fiducioso che possa essere esteso ad altre versioni senza problemi.
Il nostro server esegue Nagios Core 3.5.0 (con plugin Nagios 1.4.16) su Debian Squeeze. Probabilmente per diverse distribuzioni i percorsi cambieranno, ma la logica rimane sostanzialmente la stessa.
2 Installazione sul lato FoxBox
Il dispositivo è progettato per questo tipo di compiti di comunicazione, quindi non c’è molto da fare qui se non:
- Fornire un indirizzo IP valido, raggiungibile dal nostro server di monitoraggio;
- Inserire una SIM card testata e funzionante, per inviare gli SMS.
3 Installazione sul lato Server
Prima di tutto dobbiamo posizionare questo script all’interno della cartella /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 -u|--user --pw|--pass
-n|--number
-m|--message \n\n");
print(" - Indirizzo IP o nome host del SMS FoxBox\n");
print(" - nome dell'amministratore del SMS FoxBox\n");
print(" - password dell'amministratore del SMS FoxBox\n");
print(" - numero di telefono a cui verrà inviato l'SMS\n");
print(" - messaggio da inviare\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("ERRORE: " . $response->status_line . "\n");
$status_code = UNKNOWN;
}
$html_page = $response->content;
if($html_page =~ /p class="(\w+)"/g) {
if($1 eq "confneg") {
print("ERRORE: Impossibile inviare SMS\n");
$status_code = UNKNOWN;
}
else {
$status_code = OK;
}
}
else {
print("ERRORE: Uscita della pagina sconosciuta\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);
È anche importante impostare correttamente i permessi su questo file, per consentire all’utente Nagios di eseguirlo.
Ora dovremmo aggiungere i nuovi comandi di notifica, lavorando sul canale SMS invece di quello email classico. Per farlo, dobbiamo aggiungere queste righe al file /etc/nagios3/commands.cfg:
# definizione del comando 'notify-host-by-foxbox'
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 "Avviso Host: $HOSTNAME$ \nStato Host: $HOSTSTATE$ \nData/Ora: $LONGDATETIME$"
}
# definizione del comando 'notify-service-by-foxbox'
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 "Avviso Servizio: $HOSTALIAS$/$SERVICEDESC$ \nStato Servizio: $SERVICESTATE$ \nData/Ora: $LONGDATETIME$"
}
Come puoi vedere, abbiamo bisogno di una nuova informazione per i contatti: il numero di telefono. Quindi, dobbiamo definirlo come “pager” nel file /etc/nagios3/conf.d/contacts_nagios2.cfg.
Inoltre, impostiamo il comando di notifica per il servizio/host. Per impostazione predefinita, questi utilizzano il canale email, mentre noi vogliamo avvisare con i nuovi comandi di notifica, quindi dobbiamo modificare anche i parametri “service_notification_commands” e “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
}
Ovviamente, una volta terminate le configurazioni dobbiamo riavviare il servizio Nagios per vedere i loro effetti.
Per controllare che tutto sia a posto, potresti lanciare il controllo pre-volo con
nagios3 -v /etc/nagios3/nagios.cfgCome vedo, questa architettura è stata implementata anche su un paio di versioni di FoxBox, fornendo una soluzione di notifica tutto-in-uno (EasyG2 G25 e Monitoring LX800).
(Riferimento: www.smsfoxbox.it)
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.