web-dev-qa-db-fra.com

Comment puis-je voir la quantité de bande passante de chaque hôte virtuel Apache utilise?

J'ai Apache mis en place pour servir plusieurs hôtes virtuels et j'aimerais voir la quantité de bande passante de chaque site utilise. Je peux voir à quel point l'ensemble du serveur utilise, mais je voudrais des rapports plus détaillés.

La plupart des choses que j'ai découvertes, il y a pour limiter la bande passante aux hôtes virtuels, mais je ne veux pas faire cela; Je veux juste voir quels sites utilisent la quantité de bande passante.

Ce n'est pas à des fins de facturation, juste pour des informations.

Y a-t-il un module Apache que je devrais utiliser? Ou y a-t-il une autre façon de faire cela?

24
pkaeding

Les informations que vous suivez sont toutes dans les journaux. Vous devez donc examiner un analyseur de journal tel que AWSTATS . L'autre option consiste à utiliser Google Analytics.

Pour analyser les journaux, voici un exemple rugueux que vous pouvez utiliser pour vous indiquer le nombre de MB de trafic Un fichier journal rapporte de la ligne de commande:

cat /var/log/Apache/access.log | awk '{SUM+=$10}END{print SUM/1024/1024}'
23
Xerxes

awstats est une façon de le faire mais probablement pas le meilleur

3

Je vous suggère d'utiliser le magnifique mécanisme de journalisation Apache et son moins connu % I et % O Drapeaux:

Définir le format:

Logformat "% t% a% v% u% q% i% o" ioformat

Utilisez-le dans votre principal httpd.conf :

Customlog /var/log/APACHE2/ALL-BW.LOG IOFORMAT

Les valeurs ne comptaient probablement pas toutes les informations sur les en-têtes, mais sont assez précises d'avoir une idée précise du trafic VirtualHost.

Numérisez les journaux avec un script Perl à l'agrégat par hôte virtuel toutes les minutes (5 par exemple) et envoyez ceci à cacti.

Ces drapeaux sont fournis par mod_logio qui est probablement construit dans votre Apache (comme pour mon Apache de Debian).

3
Oct

Si vous décidez d'utiliser AWSTATS avec Apache, hors de la boîte, il vous montrera une bande passante agrégée pour votre serveur entier.

Pour voir la bande passante sur une base aérienne virtuelle, je vous recommande d'installer Vlogger .

Vlogger rassemblera effectivement les informations de journal d'accès Apache pour chacun de vos hôtes virtuels que vous avez configurés pour le faire dans des répertoires/fichiers distincts.

Par exemple, si votre fichier journal de Apache est in/var/journal/Apache2, l'installation de Vlogger typique créera quelque chose comme ceci pour vos hôtes virtuels (par exemple, vhost1.com vhost2.com):

/var/log/Apache2/vhost1.com/access.log
/var/log/Apache2/vhost2.com/access.log

Vlogger vous donne la possibilité de faire pivoter ces journaux pour vous, fournit un moyen de modifier le modèle de nommage du fichier journal d'accès (E.G. Ajoutez une date) et affirme qu'il gère un grand nombre de fichiers journaux mieux que Apache.

Un autre côté à cet égard est que vous n'aurez plus une vue de serveur agrégé (vous aurez plus besoin d'agréger les journaux séparément ou d'utiliser un paramètre Apache supplémentaire ou peut-être une autre méthode?).

Je serais prudent contre l'utilisation de Google Analytics (ou de tout suivi basé sur JavaScript) pour la surveillance de la bande passante du serveur, car vous comptez sur le client pour signaler via JavaScript. GA= NE SONT PAS RAPPORTER DES PERSONNES QUI DISPONS QUELS JavaScript Désactivé ainsi que tous les crawlers/araignées/robots.

2
user12345

Un léger modification de la réponse acceptée en supposant qu'il existe en fait plusieurs vhosts sur le serveur (et donc plusieurs sites.com.access_log's). Cela triera et énumérera chaque Vhost

for f in *.access_log ; do echo `awk '{SUM+=$10}END{print SUM/1024/1024}' $f` $f ; done | sort -rn | more

et pour un répertoire de journaux gzippés

for f in *.access_log.*.gz ; do echo `zcat $f|awk '{SUM+=$10}END{print SUM/1024/1024}'` $f `stat -c%z $f`; done | sort -rn | more 
1
michael

Voici quelques regex pour analyser le format de journal proposé par Xerxes.

\ [([0-9] +)/(\ w +)/([0-9] {4}) [^ \]] + \]\s (\ d {1,3}.\D {1, 3}.\D {1,3}.\D {1,3})\s ([^ /] +) [^\s] +\s (\ d +)\s (\ d +)

Exemple de journal:

[12/Janvier/2011: 14: 25: 04 +0000] 157.157.12.206 Files.Hjaltijakobsson.com/581 669 [12/Janv./2011: 14: 25: 04 +0000] 157.157.12.206 Files.Hjaltijakobsson.com/624 747 [12/Janvier/2011: 14: 25: 04 +0000] 157.157.12.206 Files.Hjaltijakobsson.com /icons/blank.gif 687 186 [12/Janvier/2011: 14: 25: 04 +0000] 157.157. 12.206 Files.hjaltijakobsson.com /icons/comprimé.gif 693 188 [12/Janvier/2011: 14: 25: 04 +0000] 157.157.12.206 Files.Hjaltijakobsson.com /favicon.ico 592 512

Allumettes:

Sous-liste 1 (jour du mois): 12
Sous-Pattern 2 (mois ABBR.): Jan
[.____] Sous-Pattern 3 (année): 2011
[.____] Sous-Pattern 4 (hôte des visiteurs): 157.157.12.206
Sous-Pattern 5 (hôte virtuel): fichiers.hjaltijakobsson.com
[.____] Sous-Pattern 6 (octets entrants): 581
[.____] Sous-Pattern 7 (octets sortants): 669

À votre santé.

1
hjaltij

HMM, vous pouvez obtenir le mal avec des iptables et une correspondance de chaîne pour enregistrer les paquets pour les rapports ultérieurs. Ne fonctionnera cependant que pour les connexions non SSL.

Ou quelque chose de protocole et de session conscient comme Snort pourrait être cornée de chaussures à usage ...

0
Rob Dudley