Intégration serveur · 3 min read · Oct 18, 2025
Intégration du serveur Nagios 3.x.x/Icinga 1.x.x pour les alertes SMS via des dispositifs FoxBox sur Debian Squeeze
Intégration du serveur Nagios 3.x.x/Icinga 1.x.x pour les alertes SMS via des dispositifs FoxBox sur Debian Squeeze
Ce tutoriel explique comment intégrer un serveur de surveillance Nagios (ou Icinga) standard avec un dispositif externe de notification SMS, le FoxBox ( www.smsfoxbox.it).
1 Remarque préliminaire
FoxBox, comme l’indiquent les fabricants, existe en deux versions similaires (G25 et LX800) différant par des spécificités matérielles. Dans ce guide, nous ferons référence à la passerelle SMS LX800 (nous avons acheté celle-ci en raison de ses performances supérieures et de son stockage CompactFlash), mais je suis convaincu qu’elle pourrait être étendue à d’autres versions sans problème.
Notre serveur exécute Nagios Core 3.5.0 (avec les plugins Nagios 1.4.16) sur Debian Squeeze. Probablement que pour différentes distributions, les chemins changeront, mais la logique reste à peu près la même.
2 Installation du côté de FoxBox
Le dispositif est conçu pour ce type de tâches de communication, donc il n’y a pas grand-chose à faire ici, sauf :
- Fournir une adresse IP valide, accessible depuis notre serveur de surveillance ;
- Insérer une carte SIM testée et entièrement fonctionnelle, pour envoyer le SMS.
3 Installation du côté du serveur
Tout d’abord, nous devons placer ce script dans le dossier /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(" - adresse IP ou nom d'hôte du SMS FoxBox\n");
print(" - nom de l'administrateur du SMS FoxBox\n");
print(" - mot de passe de l'administrateur du SMS FoxBox\n");
print(" - numéro de téléphone où le SMS sera envoyé\n");
print(" - message à envoyer\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: Impossible d'envoyer le SMS\n");
$status_code = UNKNOWN;
}
else {
$status_code = OK;
}
}
else {
print("ERROR: Sortie de page inconnue\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);
Il est également important de définir correctement les permissions sur ce fichier, pour permettre à l’utilisateur Nagios de l’exécuter.
Nous devrions maintenant ajouter les nouvelles commandes de notification, fonctionnant sur le canal SMS au lieu du classique email. Pour ce faire, nous devons ajouter ces lignes au fichier /etc/nagios3/commands.cfg :
# définition de la commande '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 "Alerte d'hôte : $HOSTNAME$ \nÉtat de l'hôte : $HOSTSTATE$ \nDate/Heure : $LONGDATETIME$"
}
# définition de la commande '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 "Alerte de service : $HOSTALIAS$/$SERVICEDESC$ \nÉtat du service : $SERVICESTATE$ \nDate/Heure : $LONGDATETIME$"
}
Comme vous pouvez le voir, nous avons besoin d’une nouvelle information pour les contacts : le numéro de téléphone. Ainsi, nous devons le définir comme “pager” dans le fichier /etc/nagios3/conf.d/contacts_nagios2.cfg.
De plus, nous configurons la commande de notification de service/hôte. Par défaut, celles-ci utilisent le canal email, tandis que nous voulons alerter avec les nouvelles commandes de notification, donc nous devons également modifier les paramètres “service_notification_commands” et “host_notification_commands” :
define contact{
contact_name test-contact
use generic-contact
alias testeur
email votre_nom@domaine
host_notification_commands notify-host-by-foxbox
service_notification_commands notify-service-by-foxbox
pager 12453683421
}
Évidemment, une fois les configurations terminées, nous devons redémarrer le service Nagios afin de voir leurs effets.
Pour vérifier que tout va bien, vous pourriez peut-être lancer le contrôle pré-vol avec
nagios3 -v /etc/nagios3/nagios.cfgComme je le vois, cette architecture a également été mise en œuvre sur une paire de versions FoxBox, fournissant une solution de notification tout-en-un (EasyG2 G25 et Monitoring LX800).
(Reference: www.smsfoxbox.it)
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.