Comment surveiller la charge du serveur Web Apache et les statistiques des pages

Dans cet article, vous apprendrez comment surveiller la charge et les requêtes du serveur web Apache en utilisant le module mod_status dans vos distributions Linux telles que CentOS, RHEL et Fedora.

Qu’est-ce que mod_status?

mod_status est un module Apache qui aide à surveiller la charge du serveur Web et les connexions httpd actuelles avec une interface HTML accessible via un navigateur Web.

Le mod_status d’Apache affiche une page HTML simple contenant des informations sur les statistiques actuelles du serveur Web, y compris:

  • Nombre total de requêtes entrantes
  • Nombre total d’octets et de comptes serveur
  • Utilisation du processeur du serveur Web
  • Charge du serveur
  • Temps de disponibilité du serveur
  • Trafic total
  • Nombre total de travailleurs inactifs
  • PIDs avec les clients respectifs et bien d’autres encore.

Le projet Apache par défaut a activé sa page de statistiques de serveur pour le grand public. Pour voir une démo de la page d’état d’un site Web occupé, visitez:

Environnement de test

Nous avons utilisé l’environnement de test suivantEnvironnement de test pour cet article afin d’explorer davantage mod_status avec quelques exemples pratiques et captures d’écran.

  1. Système d’exploitation – CentOS 8/7
  2. Application – Serveur Web Apache
  3. Adresse IP – 5.175.142.66
  4. Répertoire des documents – /var/www/html
  5. Fichier de configuration Apache – /etc/httpd/conf/httpd.conf
  6. Port HTTP par défaut – 80 TCP
  7. Tester les paramètres de configuration – httpd -t

Les prérequis pour ce tutoriel sont que vous devriez déjà savoir comment installer et configurer un Serveur Apache de base. Si vous ne savez pas comment configurer Apache, lisez l’article suivant qui pourrait vous aider à configurer votre propre Serveur Web Apache.

  1. Créez votre propre serveur Web et hébergez un site Web sous Linux

Comment activer mod_status dans Apache

L’installation Apache par défaut est livrée avec mod_status activé. Sinon, assurez-vous de l’activer dans le fichier de configuration Apache.

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf

Recherchez le mot « mod_status » ou continuez à faire défiler vers le bas jusqu’à ce que vous trouviez une ligne contenant.

#LoadModule status_module modules/mod_status.so

Si vous voyez un caractère ‘#‘ au début de « LoadModule », cela signifie que mod_status est désactivé. Supprimez le ‘#‘ pour activer mod_status.

LoadModule status_module modules/mod_status.so

Configurer mod_status

Recherchez à nouveau le mot « Emplacement » ou faites défiler vers le bas jusqu’à ce que vous trouviez une section pour mod_status qui devrait ressembler à ce qui suit.

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

Dans la section ci-dessus, décommentez les lignes pour la directive Emplacement, SetHandler, et les restrictions de répertoire selon vos besoins. Par exemple, je le garde simple avec l’ Ordre Autoriser, interdire et c’est autorisé pour tous.

<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from all 
</Location>

Remarque: La configuration ci-dessus est la configuration par défaut pour le site web Apache par défaut (site web unique). Si vous avez créé un ou plusieurs Hôtes Virtuels Apache, la configuration ci-dessus ne fonctionnera pas.

Donc, fondamentalement, vous devez définir la même configuration pour chaque hôte virtuel pour tous les domaines que vous avez configurés dans Apache. Par exemple, la configuration de l’hôte virtuel pour mod_status ressemblera à ceci.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example.com
    ServerName example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from example.com 
</Location>
</VirtualHost>

Activer ExtendedStatus

Les paramètres “ExtendedStatus” ajoutent plus d’informations à la page de statistiques comme utilisation du CPU, requêtes par seconde, trafic total, etc. Pour l’activer, éditez le même fichier httpd.conf et recherchez le mot “Extended” et décommentez la ligne et définissez le statut “On” pour la directive ExtendedStatus.

# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

Redémarrez Apache

Assurez-vous maintenant d’avoir correctement activé et configuré la page de statut du serveur Apache. Vous pouvez également vérifier les erreurs dans la configuration httpd.conf en utilisant la commande suivante.

[root@tecmint ~]# httpd -t

Syntax OK

Une fois que vous avez la syntaxe OK, vous pouvez redémarrer le service httpd.

[root@tecmint ~]# service httpd restart
OR
[root@tecmint ~]# systemctl restart httpd
Stopping httpd:                                          [  OK  ]
Starting httpd:                                          [  OK  ]

Accéder à la page mod_status

La page de statut d’Apache sera accessible via votre nom de domaine avec « /server-status » aux URL suivantes.

http://serveripaddress/server-status

OR

http://serev-hostname/server-status

Vous verrez quelque chose de similaire à la page suivante avec ExtendedStatus activé.

Apache mod_status View

Dans l’instantané ci-dessus, vous pouvez voir une interface HTML, qui montre toutes les informations sur le temps de disponibilité du serveur, l’ID du processus avec son client respectif, la page à laquelle ils essaient d’accéder.

Il montre également la signification et l’utilisation de toutes les abréviations utilisées pour afficher le statut, ce qui nous aide à mieux comprendre la situation.

Vous pouvez également rafraîchir la page toutes les secondes (disons 5 secondes) pour voir les statistiques mises à jour. Pour définir le rafraîchissement automatique, veuillez ajouter « ?refresh=N » à la fin de l’URL. Où N peut être remplacé par le nombre de secondes que vous souhaitez pour le rafraîchissement de votre page.

http://serveripaddress/server-status/?refresh=5
Apache mod_status Refresh

Affichage de la page de statut en ligne de commande

Vous pouvez également afficher la page de statut d’Apache à partir de l’interface en ligne de commande en utilisant les navigateurs en ligne de commande spéciaux appelés links ou lynx. Vous pouvez les installer en utilisant l’utilitaire de gestion de paquets par défaut appelé yum comme indiqué ci-dessous.

# yum install links

OR

# yum install lynx

Une fois que vous les avez installés, vous pouvez obtenir les mêmes statistiques sur votre terminal en utilisant la commande suivante.

[root@tecmint ~]# links http://serveripaddress/server-status
OR
[root@tecmint ~]# lynx http://serveripaddress/server-status
OR
[root@tecmint ~]#  /etc/init.d/httpd fullstatus
                     Apache Server Status for localhost
   Server Version: Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3
   Server Built: Aug 13 2013 17:29:28

   --------------------------------------------------------------------------
   Current Time: Tuesday, 14-Jan-2014 04:34:13 EST
   Restart Time: Tuesday, 14-Jan-2014 00:33:05 EST
   Parent Server Generation: 0
   Server uptime: 4 hours 1 minute 7 seconds
   Total accesses: 2748 - Total Traffic: 9.6 MB
   CPU Usage: u.9 s1.06 cu0 cs0 - .0135% CPU load
   .19 requests/sec - 695 B/second - 3658 B/request
   1 requests currently being processed, 4 idle workers
 .__.__W...

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of a worker, "." Open slot with no current process

Srv PID     Acc    M CPU   SS  Req Conn Child Slot     Client        VHost             Request
0-0 -    0/0/428   . 0.30 5572 0   0.0  0.00  1.34 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
1-0 5606 0/639/639 _ 0.46 4    0   0.0  2.18  2.18 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
2-0 5607 0/603/603 _ 0.43 0    0   0.0  2.09  2.09 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
3-0 -    0/0/337   . 0.23 5573 0   0.0  0.00  1.09 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
4-0 5701 0/317/317 _ 0.23 9    0   0.0  1.21  1.21 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
5-0 5708 0/212/213 _ 0.15 6    0   0.0  0.85  0.85 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
6-0 5709 0/210/210 W 0.16 0    0   0.0  0.84  0.84 127.0.0.1      5.175.142.66 GET /server-status
                                                                               HTTP/1.1
7-0 -    0/0/1     . 0.00 5574 0   0.0  0.00  0.00 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0

   --------------------------------------------------------------------------

    Srv  Child Server number - generation
    PID  OS process ID
    Acc  Number of accesses this connection / this child / this slot
     M   Mode of operation
    CPU  CPU usage, number of seconds
    SS   Seconds since the beginning of the most recent request
    Req  Milliseconds required to process most recent request
   Conn  Kilobytes transferred this connection
   Child Megabytes transferred this child
   Slot  Total megabytes transferred this slot
   --------------------------------------------------------------------------

    Apache/2.2.15 (CentOS) Server at localhost Port 80

Conclusion

Le module mod_status d’Apache est un outil de surveillance très pratique pour surveiller les performances de l’activité d’un serveur web et peut mettre en évidence les problèmes lui-même. Pour plus d’informations, consultez la page d’état qui peut vous aider à devenir un administrateur de serveur web plus performant.

  1. Page d’accueil d’Apache mod_status

C’est tout pour le mod_status pour le moment, nous reviendrons avec quelques astuces et conseils sur Apache dans de futurs tutoriels. D’ici là, restez Geeky et connecté à Tecmint.com et n’oubliez pas d’ajouter vos précieux commentaires.

Source:
https://www.tecmint.com/monitor-apache-web-server-load-and-page-statistics/