La fonction Server-Status est activée par défaut sous CentOS et permet de générer des statistiques de surveillance de son serveur Apache ainsi que ses modules. Il est indispensable de la paramétrer correctement pour surveiller efficacement son serveur LAMP par exemple.
A quoi sert la fonction Server-Status d’un serveur Apache ?
A partir d’une page web de votre serveur Apache vous pourrez consulter les informations ci-dessous très utile pour surveiller les problèmes de surconsommation de ressources de certains scripts :
- Le nombre de processus servant les requêtes
- Le nombre de processus inactifs
- L’état de chaque processus, le nombre de requêtes qu’il a traitées et le nombre total d’octets qu’il a servis
- Le nombre total d’accès effectués et d’octets servis
- Le moment où le serveur a été démarré/redémarré et le temps écoulé depuis
- Les valeurs moyennes du nombre de requêtes par seconde, du nombre d’octets servis par seconde et du nombre d’octets par requête
- Le pourcentage CPU instantané utilisé par chaque processus et par l’ensemble des processus
- Les hôtes et requêtes actuellement en cours de traitement
Etape 1 : Modification dans le fichier httpd.conf.
vim /etc/httpd/conf/httpd.conf
La première chose à faire c’est de vérifier que la ligne ci-dessous soit décommentée (elle permet d’afficher un rapport détaillé)
ExtendedStatus On
Puis rechercher le bloc suivant pour décommenter les lignes ci-dessous :
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from .exemple.com 127.0.0.1 83.200.160.135 </Location>
La ligne Deny from all, permet de refuser l’accès à tout le monde. La ligne Allow from permet d’autoriser explicitement des IP à accéder à cette page de statistique. Pour le tutoriel tout le monde aura accès à cette page (Allow from all).
Il est ensuite nécessaire de redémarrer le service Apache.
#service httpd reload
Etape 2: Afficher et comprendre la page server-Status de votre serveur.
Pour afficher la page Server-Status de votre serveur, il suffit de rentrer dans un navigateur et de taper la ligne suivante :
http://votre-serveur/server-status
Pour une actualisation automatique de la page vous pouvez rajouter le paramètre refresh (en seconde) dans la ligne.
http://votre-serveur/server-status?refresh=10
Dans la première partie de notre page (1) nous avons des indications sur le fonctionnement de notre serveur comme :
- Que le serveur a été redémarré il y a 2heures 54 minutes
- L’utilisation du processeur (moins de 1%)
- Qu’il y a en moyenne sur le serveur 0,67 requêtes/seconde
- Que le trafic est de 308 octets/seconde
- Une requête fait en moyenne 4610 octets
- Une requête en cours de traitement et 7 slots sont libres (pour des connexions futures).
Nous pourrons détecter ici si le serveur est surchargé par exemple.
La deuxième partie de notre page (2) affiche ensuite un tableau de caractères représentant chacun un slot (ou plutôt son état). Un « slot » Apache représente un des processus serveur dont la tâche est de répondre aux requêtes des navigateurs :
- « _ » : Slot en attente de connexion (prête à recevoir un client)
- « S » : Slot en cours de démarrage
- « R » : Le slot lit la requête du client
- « W » : Le slot envoie le résultat de la requête au client
- « K » : Le slot est en attente d’une requête du même client (Keepalive)
- « D » : Le slot effectue une requête DNS
- « C » : Le slot ferme la connexion avec le client
- « L » : Le slot écrit dans les fichiers de log (journaux)
- « G » : Le slot « meurt » car inutile
- « I » : Idle cleanup of worker
- « . » : Aucune activité
Enfin la troisième partie de notre page (3) contient la liste des tâches effectuées par les slots Apache. Vous pouvez y voir les colonnes suivantes :
- « PID » : Le PID système du processus Apache
- « M » : Le statut du slot (Voir précédemment)
- « CPU » : Le temps d’utilisation processeur pour exécuter la requête (en seconde)
- « SS » : Le temps d’inactivité du slot depuis la dernière requête (en seconde)
- « Req » : Le temps d’exécution de la dernière requête (en milliseconde)
- « Slot » : Le nombre de Ko transféré par ce slot
- « Client » : L’adresse IP du client (visiteur)
- « VHost » : L’adresse du site Internet pour lequel la requête est exécutée
- « Request » : La requête exécutée
Nous pourrons ici cibler précisément quel script tourne en boucle, connait des soucis de surconsommation de ressources, etc.
Etape 3: Pour aller plus loin.
Dans cette partie nous verrons comment protéger notre page server-status, mais aussi comment récupérer ces informations en ligne de commande.
Nous allons commencer notre série d’astuce par rajouter un peu plus de sécurité à cette page. Tout d’abord nous allons changer son adresse en modifiant la ligne :
<Location /server-status>
Par
<Location /nouvelle_adresse> <Location /quicktutoriel-server-status>
Si vous ne souhaitez pas mettre en place un filtrage par adresse IP on peut protéger cette page via un accès par mot de passe avec le fichier .htpasswd en rajoutant les lignes suivantes avant </Location> :
AuthUserFile "/var/www/.htpasswd" AuthName "Veuillez vous identifier" AuthType Basic Require valid-user
Il ne vous reste plus qu’à créer le fichier .htpasswd dans le répertoire /var/www de votre installation par exemple.
Pour vous aider à remplir le fichier voici un site : Générer un fichier htpasswd qui génèrera automatiquement la ligne à rajouter pour votre utilisateur.
Il suffit de rentrer votre login et password et de cliquer sur le bouton Crypter.
Enfin si aucune de ces solutions ne vous convient, vous pouvez vérifier le comportement de votre serveur apache en visionnant ces informations en ligne de commande. Pour cela il faudra installer l’outil lynx.
#yum install lynx
Puis taper la ligne ci-dessous pour visualiser les statistiques de votre serveur Apache.
# lynx
Vous avez les mêmes indications que sur la page web.
Voilà nous venons de faire le tour de cette fonctionnalité bien pratique, qui permettra de vérifier que votre serveur Apache est bien opérationnel.
That’s All.