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

29

Je héberge pas mal d’hôtes virtuels en utilisant Apache dans une configuration de base de LAMP avec l’aide de Webmin / Virtualmin. Je recherche un outil de premier ordre dans lequel je peux surveiller les connexions actuelles. L'hébergement virtuel semble me causer des problèmes ici. Voici ce que j'ai essayé:

  • netstat - Je peux voir les connexions, mais elles me montrent qu'elles utilisent toutes mon domaine principal, par ex. mydomain.com:www .
  • iftop - J'aime beaucoup, mais un inconvénient similaire à netstat : n'affiche pas l'hôte virtuel.
  • apachetop - semble ne pas afficher d'informations pour tous mes hôtes virtuels. Je me connecte pour séparer les fichiers journaux personnalisés, ce qui est à mon avis la cause des raisons pour lesquelles cela ne fonctionne pas.
  • ntop , darkstat , MRTG , bwm-ng , IPTraf - ne fonctionne pas non plus.

Donc, fondamentalement, je cherche quelque chose de similaire à la sortie actuelle de netstat , mais pour inclure l'hôte virtuel, la requête est, par exemple: avirtualsite.com:www .

    
posée ppumkin 10.01.2013 - 18:10
la source

6 réponses

30

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 le moyen le plus simple de penser à cela dans Apache ...

mod_status vous aidera.

Avertissement: Je ne peux pas dire comment cela se fait dans Webmin - J'utilise des fichiers de configuration nus pour configurer des serveurs. Voici un aperçu des étapes.

C'est un outil similaire à top , mais représenté sous la forme d'une page Web. Il répertorie l'état actuel directement interrogé à partir d'Apache, il ne dépend donc pas de l'analyse des fichiers journaux comme apachetop le fait.

  1. Activer mod_status :

    sudo a2enmod status
    
  2. Accordez-vous un accès.

    • Ouvrez /etc/apache2/mods-enabled/status.conf et éditez:
    • Définissez ExtendedStatus sur On (facultatif, mais plus génial et un peu plus lent)
    • Dans <Location /server-status> , ajoutez votre adresse IP à la ligne avec la directive Allow . Exemple:

      Allow from 127.0.0.1 ::1 66.77.88.99
      
  3. Redémarrer 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 à appuyer sur F5 pour obtenir des mises à jour. Ou obtenez un plug-in de navigateur génial et regardez-le être mis à jour!

Webmin

addendum par le PO pour les futurs visiteurs

Dans Webmin, les étapes de base du module Status sont disponibles ici:

  • Serveurs - & gt; Serveur Web Apache - & gt; Configurer les modules Apache
  • Sélectionnez le module Status et cliquez sur Activer les modules sélectionnés .

    
réponse donnée gertvdijk 10.01.2013 - 18:42
la source
13

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 lors de la connexion.

Prenons un exemple: supposons que votre serveur Web ait une adresse IP ( 1.2.3.4 ) et deux noms d’hôte ( a.mydomain.com et b .mydomain.com ) qui aboutit à cette adresse IP.

Que se passe-t-il lorsque vous utilisez votre navigateur Web préféré lorsque vous visitez a.mydomain.com ?

  1. Le navigateur (ou le noyau, mais cette distinction est superflue dans cet exemple) demande à votre serveur DNS l'adresse IP a.mydomain.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 .

Donc netstat & amp; co. sachez qu'une connexion entrante est établie avec 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 a un enregistrement rDNS. Par conséquent, netstat préfère afficher cela plutôt que l'adresse IP, car elle 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 les informations sur le nom d’hôte utilisé pour établir la connexion étaient perdues, je n’avais pas entièrement 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 existe un en-tête Host: contenant le nom d'hôte utilisé par le navigateur pour effectuer la requête.

Bref, vous devriez regarder les fichiers journaux de votre serveur Web. Le serveur Web est le service qui gère les requêtes HTTP et, par conséquent, le seul service qui connaît le nom d'hôte "d'origine".

    
réponse donnée Andrea Corbellini 10.01.2013 - 18:34
la source
11

Une autre façon de taper

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

dans votre terminal

    
réponse donnée niksmac 17.03.2014 - 06:19
la source
4

Vous pouvez vérifier tous les ips connectés sur le port 80 avec cette bash

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

Remarque: si vous souhaitez voir un autre port, modifiez 80

SORTIE:

 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
    
réponse donnée DarckBlezzer 09.07.2016 - 19:48
la source
1

Vous pouvez vérifier ceci avec:

netstat -na | grep 'ESTA'
    
réponse donnée user1717828 09.04.2016 - 22:45
la source
1

Si vous voulez pid, user et command:

lsof  -i  tcp:443,80 | egrep 'PID|->' | sort -k9
    
réponse donnée Vextor 13.09.2016 - 21:39
la source

Lire d'autres questions sur les étiquettes