Como posso ver quanta largura de banda cada Apache Virtual Host está usando?

22

Eu tenho o Apache configurado para servir vários Hosts Virtuais, e gostaria de ver quanta largura de banda cada site usa. Eu posso ver o quanto o servidor inteiro usa, mas eu gostaria de relatórios mais detalhados.

A maioria das coisas que descobri são para limitar a largura de banda aos hosts virtuais, mas não quero fazer isso; Eu só quero ver quais sites estão usando quanta largura de banda.

Isso não é para fins de faturamento, apenas para informações.

Existe um módulo do apache que eu deveria usar? Ou existe alguma outra maneira de fazer isso?

    
por pkaeding 29.05.2009 / 16:28

8 respostas

22

A informação que você está procurando está nos logs, então você deve olhar para um analisador de logs como o AWStats . A outra opção é usar o Google Analytics.

Para analisar os logs, aqui está um exemplo aproximado que você pode usar para informar quantos MB de tráfego um arquivo de log informa da linha de comando:

cat /var/log/apache/access.log | awk '{SUM+=$10}END{print SUM/1024/1024}'
    
por 29.05.2009 / 16:47
3

Awstats é uma maneira de fazer isso, mas provavelmente não é a melhor

    
por 29.05.2009 / 16:34
3

Eu sugiro que você use o maravilhoso mecanismo de registro em log do apache e seus flags % I e % O menos conhecidos:

Defina o formato:

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

Use em seu principal link :

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

Os valores provavelmente não estão contabilizando todas as informações dos cabeçalhos, mas são bastante precisos para ter uma ideia precisa do tráfego do VirtualHost.

Analise os logs com um script perl para agregar por host virtual a cada n minutos (5, por exemplo) e envie para o cacti.

Esses sinalizadores são fornecidos pelo mod_logio, que provavelmente é construído em seu Apache (como para o Apache do Debian).

    
por 29.05.2009 / 18:21
2

Se você decidir usar o awstats com o Apache, ele mostrará a largura de banda agregada para todo o seu servidor.

Para ver a largura de banda por host virtual, recomendo instalar o vlogger .

O vlogger reunirá informações de log de acesso do Apache para cada um de seus hosts virtuais que você configurou para fazer isso em diretórios / arquivos separados.

Por exemplo, se o arquivo de log do Apache estiver em / var / log / apache2, a instalação típica do vlogger criará algo assim para seus hosts virtuais (por exemplo, vhost1.com vhost2.com):

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

O vlogger oferece a opção de girar esses registros para você, fornece uma maneira de alterar o modelo de nomenclatura do arquivo de registro de acesso (por exemplo, adicionar uma data) e afirma que ele manipula um grande número de arquivos de log melhor que o Apache.

Um lado negativo disso é que você não terá mais uma visão agregada do servidor (você precisará agregar logs separadamente ou talvez usar uma configuração adicional do apache ou talvez algum outro método?).

Gostaria de advertir contra o uso do Google Analytics (ou qualquer acompanhamento baseado em javascript) para o monitoramento da largura de banda do servidor, pois você está contando com o cliente para relatar por meio do javascript. A GA não denuncia a você pessoas que têm seu javascript desativado, bem como rastreadores / spiders / bots.

    
por 01.09.2011 / 00:51
1

Aqui está um pouco de regex para analisar o formato de log proposto por 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 +)

Exemplo de log:

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

Jogos:

Subpadrão 1 (dia do mês): 12
Subpadrão 2 (abr. Mês): Jan
Subpadrão 3 (ano): 2011
Subpadrão 4 (hospedeiro do visitante): 157.157.12.206
Subpadrão 5 (host virtual): files.hjaltijakobsson.com
Subpadrão 6 (bytes recebidos): 581
Subpadrão 7 (bytes de saída): 669

Felicidades.

    
por 12.01.2011 / 15:38
1

Um pequeno ajuste na resposta aceita, supondo que haja realmente vários vhosts no servidor (e, portanto, vários sites.com.access_log's). Isso irá classificar e listar cada vhost

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

e para um diretório de logs gzipados

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 
    
por 28.04.2014 / 03:13
0

Hmm, você pode ficar mal com IPTables e correspondência de strings para registrar os pacotes para relatórios posteriores. Só funcionará para conexões não SSL.

Ou algo que o protocolo e a sessão tenham em mente, como o Snort, poderiam ser usados com chifre ...

    
por 29.05.2009 / 16:41
0

Correto. Filtrar o log é uma boa ideia. Eu também quero obter a largura de banda do meu servidor Apache quando baixar arquivos.

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

Calcula a %b e %d output, que lhe dará a largura de banda atual.

    
por 15.04.2013 / 22:24