Modèle de server-block Nginx pour Monitorix

Accueil Monitorix

Comme je suis en train de migrer tous mes services vers Nginx, j’ai un travail de réécriture de mes hôtes virtuels Apache 2 à faire. Comme j’ai galéré un peu avec Monitorix, voici un petit mémo que je partage avec vous !

Alors évidemment il n’est pas question ici d’installer Monitorix ou Nginx mais seulement du server-block Nginx adapté à l’exécution de Monitorix. Si vous ne savez pas (ou plus) à quoi sert cet outil, je vous en avait vanté les qualités il y a quelques semaines.

Je suppose donc ici que vous avez installé Nginx, Monitorix, que vous souhaitez accéder à son interface à l’adresse http://monitorix.mon-domaine.com et que vous avez désactivé le serveur http embarqué. Voici quelques lignes importantes dans la configuration de Monitorix :

base_dir = /var/lib/monitorix/www/
base_lib = /var/lib/monitorix/
base_url = /
base_cgi = /cgi
 
<httpd_builtin>
        enabled = n
        [...]
</httpd_builtin>
Le problème qui se pose ici, c’est que Nginx n’est normalement pas configuré par défaut pour exécuter des scripts, mais seulement pour transmettre des fichiers statiques. Or Monitorix repose sur l’exécution d’un script CGI (en Perl je crois).

CG quoi ?!

CGI, pour Common Gateway Interface. C’est une interface utilisée par les serveurs HTTP pour exécuter des scripts et récupérer le contenu HTML qu’ils génèrent pour le transférer au client. C’est exactement ce qu’il se passe avec Nginx lorsque vous hébergez un site PHP : Nginx transmet vos requêtes à PHP, PHP génère du HTML que Nginx se charge de vous renvoyer.

Il va donc falloir installer les deux petits paquets suivants, sous Debian, pour que notre serveur HTTP soit en mesure d’exécuter Monitorix :

sudo apt-get install fcgiwrap spawn-fcgi
  • fcgiwrap est un serveur ultraléger, sans configuration, prévu pour fournir un support CGI à Nginx;
  • spawn-fcgi quant à lui est un helper facilitant le démarrage de processus FastCGI (FastCGI étant une évolution de CGI, mais on parle sensiblement de la même chose);

Nginx est donc maintenant prêt à exécuter Monitorix ! Il ne reste plus qu’à préparer la configuration du server block. Je vous propose de l’écrire dans le fichier /etc/nginx/sites-available/monitorix :

server {
        listen 80;
        server_name monitorix.mon-domaine.com;
        root /var/lib/monitorix/www;
        index index.html;
 
        access_log off;
        error_log /var/log/nginx/monitorix-error.log;
 
        location ~ \.cgi$ {
                gzip off;
                fastcgi_pass unix:/var/run/fcgiwrap.socket;
                fastcgi_index monitorix.cgi;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
J’ai désactivé les logs d’accès mais vous pouvez très bien les réactiver en renseignant un chemin valide…

Activez votre configuration et rechargez Nginx :

sudo ln -vs /etc/nginx/sites-available/monitorix /etc/nginx/sites-enabled/monitorix
sudo service nginx reload

Et le tour est joué ! http://monitorix.mon-domaine.com devrait vous afficher Monitorix !

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email