Come posso vedere quanta larghezza di banda utilizza ogni host virtuale Apache?


24

Ho Apache impostato per servire diversi host virtuali e vorrei vedere quanta larghezza di banda utilizza ogni sito. Vedo quanto utilizza l'intero server, ma vorrei rapporti più dettagliati.

La maggior parte delle cose che ho scoperto sono per limitare la larghezza di banda agli host virtuali, ma non voglio farlo; Voglio solo vedere quali siti utilizzano quanta larghezza di banda.

Questo non è a scopo di fatturazione, solo a scopo informativo.

Esiste un modulo apache che dovrei usare? O c'è un altro modo per farlo?

Risposte:


23

Le informazioni che stai cercando sono tutte nei log, quindi dovresti guardare un analizzatore di log come AWStats . L'altra opzione è utilizzare Google Analytics.

Per analizzare i log, ecco un esempio approssimativo che puoi usare per dirti quanti MB di traffico riporta un file di log dalla riga di comando:

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

5
uso inutile di cat: awk '...' /var/log/apache/access.log funziona anche
marco,

Le modalità suggerite calcoleranno il traffico inviato da alcune pagine Web a Internet (traffico in uscita)?
Khaled,

2
Sì. Ma fai attenzione a non riassumere i codici di risposta per caso. Mi sono reso conto che i miei conteggi erano troppo bassi perché per me $ 10 è il codice di risposta http. Per il mio registro personalizzato di Apache, invece, dovevo usare {SUM + = $ 11}.
Phil


3

Ti suggerisco di utilizzare il meraviglioso meccanismo di registrazione di Apache e i suoi flag % I e % O meno noti :

Definisci il formato:

LogFormat "% t% a% v% U% q% I% O" IOFormat

Usalo nel tuo httpd.conf principale :

CustomLog /var/log/apache2/all-bw.log IOFormat

I valori probabilmente non tengono conto di tutte le informazioni sulle intestazioni, ma sono abbastanza precisi per avere un'idea precisa del traffico di VirtualHost.

Esegui la scansione dei log con uno script perl per aggregare per host virtuale ogni n minuti (ad esempio 5) e invialo ai cactus.

Questi flag sono forniti da mod_logio che probabilmente è integrato nel tuo Apache (come per il mio Debian's Apache).


2
Hum, anche come citato nella documentazione di Apache 2.0: Nota che in httpd 2.0, diversamente dalla 1.3, le stringhe di formato% be% B non rappresentano il numero di byte inviati al client, ma semplicemente la dimensione in byte della risposta HTTP ( che differirà, ad esempio, se la connessione viene interrotta o se viene utilizzato SSL). Il formato% O fornito da mod_logio registrerà il numero effettivo di byte inviati sulla rete.
Ottobre

2

Se decidi di utilizzare awstats con Apache, ti mostrerà la larghezza di banda aggregata per l'intero server.

Per vedere la larghezza di banda su base host virtuale, ti consiglio di installare vlogger .

Vlogger raccoglierà effettivamente le informazioni del registro di accesso di Apache per ciascuno dei tuoi host virtuali che hai impostato per farlo in directory / file separati.

Ad esempio, se il file di log di Apache è in / var / log / apache2, l'installazione tipica di vlogger creerà qualcosa del genere per i tuoi host virtuali (ad esempio vhost1.com vhost2.com):

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

Vlogger ti offre la possibilità di ruotare questi registri per te, offre un modo per cambiare il modello di denominazione del file di registro degli accessi (ad es. Aggiungere una data) e sostiene che gestisce un gran numero di file di registro meglio di Apache.

Un aspetto negativo di questo è che non avrai più una vista server aggregata (dovrai aggregare i log separatamente o forse usare un'impostazione apache aggiuntiva o forse qualche altro metodo?).

Vorrei mettere in guardia dall'utilizzare Google Analytics (o qualsiasi tracciamento basato su JavaScript) per il monitoraggio della larghezza di banda del server, poiché si sta facendo affidamento sul client per segnalare tramite il javascript. GA non segnala a te persone che hanno il loro javascript disabilitato e qualsiasi crawler / spider / bot.


1

Ecco qualche regex per analizzare il formato di registro proposto da 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 +)

Registro di esempio:

[12 / gen / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 581 669 [12 / gen / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 624 747 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com /icons/blank.gif 687 186 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157. 12.206 file.hjaltijakobsson.com /icons/compressed.gif 693 188 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157.12.206 file.hjaltijakobsson.com /favicon.ico 592 512

gli incontri:

Sottopattern 1 (giorno del mese): 12
Sottopattern 2 (abbr. Mese): Jan
Sottopattern 3 (anno): 2011
Sottopattern 4 (host visitatore): 157.157.12.206
Sottopattern 5 (host virtuale): files.hjaltijakobsson.com
Sottopattern 6 byte in entrata): 581
Sottotatro 7 (byte in uscita): 669

Saluti.


1

Leggero aggiustamento sulla risposta accettata supponendo che ci siano effettivamente più vhosts sul server (e quindi più site.com.access_log). Questo ordinerà ed elencherà ogni vhost

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

e per una directory di registri gzip

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 

0

Hmm, potresti diventare malvagio con IPTables e string matching per registrare i pacchetti per un successivo report. Funzionerà solo per connessioni non SSL.

O qualcosa che il protocollo e la sessione consapevoli come Snort potrebbero essere messi in funzione con le scarpe ...


0

Corretta. Il filtro del registro è una buona idea. Voglio anche ottenere la larghezza di banda del mio server Apache durante il download dei file.

LogFormat "%h %l %t %u \"%r\" %>s %b/%D**" combined

Calcola %be l' %doutput, che ti darà la larghezza di banda della corrente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.