Supervision de postfix via mailgraph avec le plugin check_mailstat.pl via Nagios/Centreon

Centreon graph mailstat home

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.
NameVirtualHost *:443
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 10:0:0:0:0:0 -c 20: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

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:10 -c 0: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 à 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 :

 

Création de modèle de sondes sous Centreon

 

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

Author: Pierre-Yves Dubreucq

Passioné par les logiciels libres depuis 2001, je suis responsable d'Odiso (hébergeur web spécialiste des infrastructures haute disponibilité e-commerce et en gestion de pics de trafic & webperf) je tiens ce blog depuis 9 ans avec beaucoup moins d'assiduité malheureusement qu'à ses débuts, car j'écris aussi sur MonSiteEstLent.com blog d'Odiso dédié à la webperf

Share This Post On

2 Comments

  1. Ha Centreon …
    Quel beau produit.
    Couplé à un OCS-INVENTORY ou Fusion il devient un outil redoutable.

    Votre tuto est plus que complet, les idées sont bonnes (l’ajout des perfdatas, modification du Vhost).

    En général j’ajoute toujours ce type de sonde surtout sur une plateforme d’emailing.

    Post a Reply
  2. Article vraiment sympa,
    je le garde dans mes marques pages, il pourra me servir dans un avenir proche :p
    merci

    Post a Reply

Trackbacks/Pingbacks

  1. Databases, Systems, Networks » Supervision de postfix via mailgraph avec le plugin check_mailstat.pl via Nagios/Centreon - [...] Supervision de postfix via mailgraph avec le plugin check_mailstat.pl via Nagios/Centreon 12/02/2012 Olivier Commenter Allez aux commentaires…

Submit a Comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *