41 votes

Comment puis-je regarder les connexions actuelles sur mon serveur Web Apache?

Je héberge un assez grand nombre de serveurs virtuels en utilisant Apache dans une configuration LAMP de base avec l'aide de Webmin/Virtualmin. Je recherche un outil similaire à top dans lequel je peux surveiller les connexions actuelles. La partie de l'hébergement virtuel semble me poser problème ici. Voici ce que j'ai essayé:

  • netstat - Je peux voir les connexions, mais elles me montrent toutes comme si elles utilisaient mon domaine principal, par exemple mondomaine.com:www.
  • iftop - Je l'aime beaucoup, mais le même inconvénient que netstat : ne montre pas le serveur virtuel.
  • apachetop - semble ne pas afficher d'informations pour tous mes serveurs virtuels. Je consigne dans des fichiers journaux personnalisés séparés, ce qui est la cause possible de son dysfonctionnement.
  • ntop, darkstat, MRTG, bwm-ng, IPTraf - ne fonctionnent pas non plus.

Donc, en gros, je recherche quelque chose de similaire à la sortie actuelle de netstat, mais qui inclurait le serveur virtuel pour lequel la requête est faite, par exemple : unsitesvirtuel.com:www.

36voto

RN. Points 559

La réponse d'Andrea Corbellini vous explique pourquoi cela ne fonctionnera pas avec les outils que vous utilisez et comment fonctionne l'hébergement virtuel. Voici la manière la plus simple que je puisse imaginer pour le faire dans Apache...

mod_status vous aidera.

Clause de non-responsabilité : Je ne sais pas comment faire cela avec Webmin - j'utilise des fichiers de configuration bruts pour configurer les serveurs. Voici juste un aperçu des étapes de base.

C'est un outil similaire à top, mais représente sous forme de page web. Il affiche l'état actuel directement interrogé depuis Apache, il ne dépend donc pas de l'analyse des fichiers journaux comme le fait apachetop.

  1. Activer mod_status :

    sudo a2enmod status
  2. Vous accorder l'accès.

    • Ouvrez /etc/apache2/mods-enabled/status.conf et modifiez :
    • Définissez ExtendedStatus sur On (optionnel, mais plus d'attrait et un peu plus lent)
    • Dans , ajoutez votre adresse IP à la ligne avec la directive Allow. Exemple :

      Allow from 127.0.0.1 ::1 66.77.88.99
  3. Redémarrez Apache :

    sudo service apache2 restart
  4. Profitez de l'outil dans votre navigateur, par exemple : http://1.2.3.4/server-status

    Cela ressemblera à cet exemple de capture d'écran.

  5. Continuez d'appuyer sur F5 pour obtenir des mises à jour. Ou utilisez une extension de navigateur géniale et regardez les mises à jour se faire !


Webmin

ajout par l'OP pour les futurs visiteurs

Dans Webmin, les étapes de base concernant le module Status peuvent être trouvées ici :

  • Serveurs -> Serveur web Apache -> Configurer les modules Apache
  • Sélectionnez le module Status et cliquez sur Activer les modules sélectionnés

description de l'image

15voto

Tendayi Mawushe Points 10335

Tous les outils que vous essayez ne vous donneront jamais la bonne réponse. La raison en est que les informations que vous demandez sont perdues lorsque la connexion est établie.

Prenons un exemple : supposons que votre serveur web ait une adresse IP (1.2.3.4) et deux noms d'hôte (a.mondomaine.com et b.mondomaine.com) qui se résolvent à cette adresse IP.

Que se passe-t-il lorsque vous utilisez votre navigateur web favori pour visiter a.mondomaine.com ?

  1. Le navigateur demande à votre serveur DNS l'adresse IP à laquelle a.mondomaine.com correspond.
  2. Le serveur DNS indique au navigateur que l'adresse est 1.2.3.4.
  3. Le navigateur web se connecte à 1.2.3.4.

Ainsi, netstat et cie savent seulement qu'une connexion entrante a été établie vers 1.2.3.4. La raison pour laquelle vous voyez un nom d'hôte au lieu d'une adresse IP est que l'adresse IP possède un enregistrement rDNS, donc netstat préfère afficher cela plutôt que l'IP, car c'est plus agréable. Essayez netstat -n (ou supprimez l'enregistrement rDNS) et vous verrez l'adresse IP.

Mais ce n'est pas tout : lorsque j'ai dit que l'information sur le nom d'hôte qui a été utilisé pour établir la connexion était perdue, je n'avais pas tout à fait raison. Du point de vue de la pile TCP/IP, cette phrase est vraie. Mais si nous voyons les choses du point de vue du protocole HTTP, les choses sont différentes. Dans chaque requête HTTP, il y a un en-tête Host: qui contient le nom d'hôte utilisé par le navigateur pour faire la requête.

En résumé, vous devriez consulter les fichiers journaux de votre serveur web. Le serveur web est le service qui gère les requêtes HTTP et donc le seul service qui connaît le nom d'hôte "original".

14voto

niksmac Points 299

Une autre façon est de taper

tail -f /var/log/apache2/access.log

dans votre terminal

11voto

DarckBlezzer Points 345

Vous pouvez vérifier toutes les adresses IP connectées sur le port 80 avec ce script bash

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Note: si vous souhaitez voir un autre port, changez 80

OUTPUT:

 19 x.174.143.1
 13 x.175.135.1
  9 x.68.135.1
  8 x.144.87.1
  7 x.68.150.1
  6 x.92.4.1
  6 x.188.23.1
  5 x.190.164.1
  4 x.189.156.1

4voto

user1717828 Points 253

Vous pouvez vérifier cela avec :

netstat -na | grep 'ESTA'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X