Site icon RDR-IT

Nginx – module VTS – statistique par Virtual Host

Dans ce tutoriel, je vais vous expliquer comment mettre en place le module VTS (Virtual Host Traffic Status), qui va nous permettre d’avoir des statistiques détaillés par Virtual Host, ce qui peut être intéressants quand on héberge plusieurs sites sur un même serveur Web ou que l’on utilise Nginx comme reverse proxy.

Le module VTS est disponible sur le dépôt Github ici : https://github.com/vozlt/nginx-module-vts.

Comme vous pouvez le voir, ce n’est pas un module officiel et il va être nécessaire de compiler le module vous même.

On va voir tout cela dans le tutoriel.

Compiler le module VTS

Il n’est pas obligatoire de compiler le module sur le serveur où Nginx est installé, vous pouvez le faire sur un autre machine.

La première étape et de récupérer la version de Nginx sur le serveur, entrer la commande ci-dessous :

nginx -V

Comment on peut le voir, j’utilise la version 1.22.1 de Nginx.

Maintenant, on va télécharger les sources de Nginx, pour cela aller ici : https://nginx.org/download/ et récupérer le lien (tar.gz ou zip) de la version de Nginx que vous utilisez.

Utiliser la commande wget pour télécharger l’archive :

wget https://nginx.org/download/nginx-1.22.1.tar.gz

Décompresser l’archive :

tar -xzvf nginx-1.22.1.tar.gz

La compilation de module nécessite certain prérequis également, vous devez avoir gcc et d’autre paquets en fonction du module que vous souhaitez compiler.

sudo apt install gcc libpcre3-dev zlib1g-dev -y

Maintenant que nous avons réuni les prérequis pour la compilation du module, il faut récupérer les sources, pour cela on va cloner le dépôt :

git clone https://github.com/vozlt/nginx-module-vts.git

On a les sources de Nginx et du module :

On va maintenant compiler le module, commencer par aller dans le dossier qui convient les sources Nginx :

cd nginx-1.22.1

Commencer par entrer cette commande pour ajouter le module à la compilation :

./configure --add-dynamic-module=../nginx-module-vts --with-compat

Comment on peut le voir sur la seconde capture, il n’y a pas d’erreur, si une bibliothèque est manquante pour la compilation du module, vous aurez à la fin un message d’erreur.

Maintenant, on va compiler le module, entrer la commande ci-après :

make modules

Le module VTS est compilé, vous trouverez le fichier ngx_http_vhost_traffic_status_module.so dans le dossier objs du dossier source nginx.

Ajouter et configurer le module VTS à Nginx

La partie qui suit du tutoriel a été faite sur Ubuntu 22.04, si vous êtes sur un autre distribution, il sera peut être nécessaire d’adapter les différentes étapes (chemins et fichiers) à votre distribution et environnement.

Sur votre serveur Web Nginx, copier le ngx_http_vhost_traffic_status_module.so dans le dossier /usr/lib/nginx/modules.

Créer un fichier dans le dossier /etc/nginx/modules-available.

sudo touch /etc/nginx/modules-available/99-mod-vts.conf

Dans le fichier, nous allons indiquer à Nginx de charger le module.

Ouvrir le fichier :

sudo nano /etc/nginx/modules-available/99-mod-vts.conf

Copier la ligne ci-dessous :

load_module modules/ngx_http_vhost_traffic_status_module.so;

On va maintenant créer un lien symbolique dans le dossier /etc/nginx/modules-enabled/ pour le fichier soit chargé par Nginx

sudo ln -s /etc/nginx/modules-available/99-mod-vts.conf /etc/nginx/modules/enabled/

Tester la configuration de Nginx :

sudo nginx -t

Su vous n’avez pas d’erreur, recharger la configuration de Nginx :

sudo systemctl reload nginx

On va maintenant passer à la configuration du module, ouvrir le fichier /etc/nginx/nginx.conf.

sudo nano /etc/nginx/nginx.conf

Dans la section http{} ajouter :

##
# VTS settings
 ##
vhost_traffic_status_zone;

Maintenant, nous allons ajouter l’accès à la visualisation des statiques à un virtuahost.

Pour le tutoriel, je vais l’ajouter virtualhost par défaut.

Ouvrir le fichier default.

sudo nano /etc/nginx/sites-available/default

Dans la section server{} ajouter le code qui suit :

location /vts_status {
	vhost_traffic_status_display;
	vhost_traffic_status_display_format html;
	#allow a.b.c.d;
	#deny all;
}

Les statistiques seront accessible avec l’url vts_status. Les deux lignes commentées permettent de limiter l’accès à une adresse IP si nécessaire afin de rentre la page « privée’.

Tester de nouveau la configuration de Nginx :

sudo nginx -t

Si tout est bon, recharger la configuration :

sudo systemctl reload nginx

Le module VTS est configuré et opérationnel.

Afficher les statistiques par Virtualhost

La dernière étape de ce tutoriel est la visualisation des statistiques.

Depuis un navigateur, aller l’url configurer dans votre fichier default https://w.x.y.z/vts_status

Depuis cette page, vous aurez les statiques de trafic par virtualhost.

Vous savez maintenant comment avoir des statistiques de trafic par vistualhost sur Nginx, ce module est particulièrement utile quand vous utiliser Nginx comme reverse proxy.

Par la suite, je vous expliquerai comment exploiter ces statistique à travers le couple Prometheus / Grafana et Zabbix.

Quitter la version mobile