Supervision de postfix via mailgraph avec le plugin check_mailstat.pl via Nagios/Centreon
Voici une procédure permettant de contrôler l’activité d’un serveur de messagerie postfix via Nagios / Centreon.
Pour cela nous allons utiliser le plugins check_mailstat.pl avec une petite adaptation du script afin de le rendre compatible avec la génération de graphe sous Centreon.
Le plugin check_mailstat.pl va récupérer depuis des données depuis mailgraph qui permet de générer des graphes via RRDTool
Tout d’abord, il faut installer Mailgraph sur l’hôte à superviser, ici une Debian.
Installation de Mailgraph
aptitude install mailgraph
Si l’installation ne vous a pas poser les questions propres au paramétrage, lancer :
dpkg-reconfigure mailgraph
Voici les questions et réponse à fournir :
Mailgraph doit-il être lancé au démarrage ? OUI
Fichier de journalisation à utiliser par mailgraph : /var/log/mail.log (à adapter)
Faut-il compter les courriels entrants comme des courriels sortants ? NON (J’utilise Amavis, donc j’ai choisi cette option, encore une fois à adapter.
Paramétrage et sécurisation de l’accès web Mailgraph
On va ensuite créer un un espace web dédié avec virtualhost afin de restreindre l’accès à l’interface web :
mkdir /var/www/mailgraph && mkdir /var/www/mailgraph/cgi-bin chown -R www-data:www-data /var/www/mailgraph cp -p /usr/lib/cgi-bin/mailgraph.cgi /var/www/mailgraph/cgi-bin/.
Voici un Virtual Host type avec prise en charge du ssl :
ServerName votre.hostname.com ServerAdmin votre@mail.com DocumentRoot /var/www/mailgraph # Mise en place du SSL SSLEngine on SSLCertificateFile /etc/ssl/web/mailgraph.crt SSLCertificateKeyFile /etc/ssl/web/mailgraph.key SSLOptions +StdEnvVars Options FollowSymLinks MultiViews Options +ExecCGI AddHandler cgi-script .cgi SSLOptions +StdEnvVars # Restriction par mot de passe basique AuthUserFile /var/www/mailgraph/.htpasswd AuthGroupFile /dev/null AuthName "Veuillez vous identifier" AuthType Basic require valid-user # Restriction par adresse IP AllowOverride none Order deny,allow Deny from all Allow from 192.168.1.0 ErrorLog /var/log/apache2/mailgraph-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/mailgraph-access.log combined
Créer donc le fichier /etc/apache2/sites-available/mailgraph puis l’activer :
ln -s /etc/apache2/sites-available/mailgraph /etc/apache2/sites-enabled/
Empecher l’indexation par les moteurs de recherche, on ne sait jamais :
cat /var/www/mailgraph/robots.txt User-agent: * Disallow: /
Ensuite générer le certificat SSL :
openssl genrsa -out mailgraph.key 1024 openssl req -new -x509 -days 3650 -key mailgraph.key -out mailgraph.crt
Déplacer les certificats/clefs à l’endroit paramétrer dans le Vhost
mv mailgraph.* /etc/ssl/web/.
S’assurer du bon paramétrage des ports apache (NameVirtualHost *:443)
cat /etc/apache2/ports.conf NameVirtualHost *:80 Listen 80 # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts is currently not # supported by MSIE on Windows XP. <strong>NameVirtualHost *:443</strong> Listen 443 Listen 4433
/etc/init.d/apache2 restart
Génération de l’authentification Apache
htpasswd -c /var/www/mailgraph/.htpasswd admin
Redémarrer Apache, ce qui n’est pas forcément nécessaire, mais bon…
/etc/init.d/apache2 restart
(un dernier pour la route)
Voilà, vous devriez avoir accès à Mailgraph en SSL avec restriction par IP et Authentification basique Apache
Vous pouvez voir votre Mailgraph via l’url :
https://votre.hostname.com/cgi-bin/mailgraph.cgi
Installation du plugin chek_mailstat.pl
Installation des pré-requis
aptitude install unzip patch unzip check_mailstat_plugin_v0.9.1.zip
Afin d’utiliser mailgraph, il est nécessaire de le patcher :
cd check_mailstat_plugin_v0.9.1 patch -b /usr/sbin/mailgraph mailgraph.patch
Là il faut attendre un peu afin que le fichier /var/tmp/mailstat soit créé. Le temps varie en fonction de la taille de votre fichier /var/log/mail.log
Attribuer les droits à l’utilisateur nagios
chown nagios:nagios /var/tmp/mailstat chown nagios:nagios /var/tmp/mailstat.old
Tests et paramétrage
Test en local
Déplacer le script check_mailstat.pl là où se trouve tout les plugins
mv check_mailstat.pl ..
Vous pouvez lancer le script perl avec l’option « -h » pour afficher l’aide
./check_mailstat.pl -h
Voici comment cela fonctionne par l’exemple :
root@server:/usr/lib/nagios/plugins# ./check_mailstat.pl -w <strong>10</strong>:0:0:0:0:0 -c <strong>20</strong>:0:0:0:0:0 OK: <strong>sent:7.68</strong> received:5.66 bounced:0.00 rejected:0.40 virus:0.00 spam:0.00 |<strong>sent=7.68</strong> received=5.66 bounced=0.00 rejected=0.40 virus=0.00 spam=0.00
En gros, je déclenche un WARN dès que je suis à 10 mails envoyés et un CRITICAL dès que je suis à 20
Voici un autre exemple :
root@server:/usr/lib/nagios/plugins# ./check_mailstat.pl -w 0:0:0:0:0:<strong>10</strong> -c 0:0:0:0:0:<strong>20</strong> OK: sent:7.68 received:5.66 bounced:0.00 rejected:0.40 virus:0.00 <strong>spam:0.00</strong> |sent=7.68 received=5.66 bounced=0.00 rejected=0.40 virus=0.00 <strong>spam=0.00</strong>
Je déclenche un WARN dès que je suis à 10 spams envoyés et un CRITICAL dès que je suis à 20
On peut aussi tester plusieurs paramètres en même temps
root@server:/usr/lib/nagios/plugins# ./check_mailstat.pl -w 20:0:0:0:0:10 -c 30:0:0:0:0:20
OK: sent:7.68 received:5.66 bounced:0.00 rejected:0.40 virus:0.00 spam:0.00 |sent=7.68 received=5.66 bounced=0.00 rejected=0.40 virus=0.00 spam=0.00
Je déclenche un WARN dès que je suis à 20 mails ou 10 spams envoyés et un CRITICAL dès que je suis à 30 mails ou 20spams
Paramétrage
Il faut ajouter la commande afin que NRPE la connaisse :
vi /etc/nagios/nrpe.cfg
Ajouter la ligne ci-dessous :
command[check_mailstat]=/usr/lib/nagios/plugins/check_mailstat.pl -w $ARG1$ -c $ARG2$
Puis redémarrer NRPE
/etc/init.d/nagios-nrpe-server restart
Test depuis le serveur de supervision
Ici On demande à NRPE d’appeler la commande check_mailstat en posititionnant un WARN à 40 mails envoyés et un CRITICAL à 50
root@info59sup01:/usr/local/nagios/libexec# ./check_nrpe -H muscat.nexen.net -c check_mailstat -a 40:0:0:0:0:0 50:0:0:0:0:0 OK: sent:7.68 received:5.66 bounced:0.00 rejected:0.40 virus:0.00 spam:0.00 |sent=7.68 received=5.66 bounced=0.00 rejected=0.40 virus=0.00 spam=0.00
Si c’est OK, il faut mettre en place la supervision au niveau de Centreon
Installation niveau Centreon
Voici une façon d’utiliser Centreon. Personnellement, je l’utilise en me basant beaucoup sur les modèles pour n’avoir généralement que les arguments à renseigner lors de la mise en place de service, mais bon libre à vous
Les deux premiers points ne sont bien sur qu’à faire qu’une seule fois.
Je vais utiliser lancer mes vérifications via NRPE pour lancer ensuite en local le script check_mailstat.pl
Création de la Commande
Aller dans Configuration -> Commandes
Créer une sonde nommée check_nrpe_mailstat
Ligne de commande :
$USER1$/check_nrpe -H $HOSTADDRESS$ -c check_mailstat -a $ARG1$ $ARG2$
Exemple d’arguments :
!300:0:0:0:0:0!500:0:0:0:0:0
Modèle de graphique :
Mailstat (nous allons voir ensuite pour le créer)
Création du modèle de service
Aller dans Configuration -> Services -> Modèles
Créer un modèle nommé :
NRPE-MAILSTAT
Commande de vérification :
check_nrpe_mailstat (créer précédemment)
Ne pas donner d’argument pour laisser le paramètrage au niveau du service lui même
Création de la sonde de Service
Voici la partie qui serait à répeter en cas de déploiement
Aller dans Configuration -> Services -> Services par hôte
Créer un service nommé NRPE-MAILSTAT
Modèle de service :
NRPE-MAILSTAT
Arguments : (à adapter selon les besoins)
!40:0:0:0:0:0!50:0:0:0:0:0
Sauvegarder
Ensuite redémmarer le poller du Nagios concerné
Configuration -> Nagios
Serveur :
Votre_Poller
Cochez :
Deplacer les fichiers générés
Redémarrer Nagios
Et voilà, vous superviser ce qui circule au niveau de votre messagerie.
Vous avez même des graphiques sur les mails envoyés, enfin seulement sur la première donnée remontée à savoir les mails envoyés.
Il semblerait que les données de performances renvoyées ne soient pas tout à fait compatibles avec le format attendu par Centreon pour la génération de graphe.
En effet, seul le nombre d’éléments envoyés est graphé.
J’ai du modifier le script pour que cela fonctionne.
Graphe des données de Performances via Centreon
Modification du script pour gestion des données de performance par Centreon
Pour cela j’ai modifié le script Perl afin qu’il fournisse des données de performances comme attendu par Centreon
Voici ma modification ligne 97 :
Remplacer :
my $perfdata = sprintf "sent=%-6.2f received=%-6.2f bounced=%-6.2f rejected=%-6.2f virus=%-6.2f spam=%-6.2f", @stat_counter;
Par :
my $perfdata = sprintf "sent=%-6.2f;received=%-6.2f;bounced=%-6.2f;rejected=%-6.2f;virus=%-6.2f;spam=%-6.2f", @stat_counter;
Ceci permet de renvoyer des résultats de ce type :
root@server:/usr/lib/nagios/plugins# ./check_mailstat_new.pl -w 5:0:0:0:0:0 -c 10:0:0:0:0:0 OK: sent:3.12 received:6.25 bounced:0.62 rejected:0.00 virus:0.00 spam:0.00 |sent=3.12 ;received=6.25 ;bounced=0.62 ;rejected=0.00 ;virus=0.00 ;spam=0.00
Vous remarquerez l’apparition des points-virgules nécessaires au traitement de toutes les données de performances par Centreon.
Création du modèle de graphique
Nous allons maintenant créer un nouveau template de graphe pour accueillir et personnaliser les graphes qui vont être générés.
Aller dans Vues -> Graphiques -> Modèles
Choisir de dupliquer le modèle par défaut
Nom du Modèle : Mailstat (Celui qu’on a utilisé plus haut)
Label Vertical : Nombre
Vous aurez peut-être remarquer pour la création de la commande que j’ai utilisé ce modèle de graphique.
Création des Courbes
Aller dans Vues -> Graphiques -> Courbes
Pour rappel les données de performances sont :
sent=3.12 ;received=6.25 ;bounced=0.62 ;rejected=0.00 ;virus=0.00 ;spam=0.00
Cliquer sur Ajouter :
Nom du Modèle de courbes : Mailstat-sent
Nom de la source de données : sent ( Cela correspond au nom présent dans les données de performances)
Voici un screenshot pour le reste des paramètres :
Il faut répeter l’opération, en n’oubliant pas de personnaliser les couleurs, pour chaque élément de données de performances, soit :
sent
received
bounced
rejected
virus
spam
On retrouvera donc des courbes au nom : (N’oubliez pas Mailstat en début pour identifier plus facilement les modèles de courbes que vous souhaitez)
Mailstat-sent
Mailstat-received
Mailstat-bounced
Mailstat-rejected
Mailstat-virus
Mailstat-spam
Ce qui vous donnera au final un graphique de ce type :
Image:Centreon_graph_mailstat.png