Como usar o AWK para gerar o relatório de largura de banda no Apache

1

Eu tenho meus registros do Apache configurados assim:

LogFormat "%v %t %I %O" billing

Como posso usar o AWK para gerar um relatório que me mostre a largura de banda total (recebida + enviada) em MB por host virtual?

Veja um exemplo de saída de log:

bob.com  [3 JULY 2013]  903 299
bob.com  [8 JULY 2013]  192 138
luke.com [12 JULY 2013]  34 123
bob.com  [19 JULY 2013] 616 213
luke.com [22 JULY 2013]  23  74

Estou procurando uma saída que resuma as colunas 3 e 4 para bob.com e luke.com sem realmente especificar os domínios, pois tenho mais de 50 domínios e não quero manter uma lista. Muito mais fácil apenas ter a impressão consolidada.

    
por James 08.06.2013 / 03:15

2 respostas

1

Ou isto:

awk '{T[$1]+=$NF+$(NF-1)} END{for(i in T) print i,T[i]}' file

produziria

bob.com 2361
luke.com 254

Com seu arquivo de registro de amostra ...

    
por 08.06.2013 / 11:51
0

Você pode escrever um pequeno script para fazer este trabalho:

#!/bin/bash

log_file="/path/to/logfile"
domains='awk '{print $1}' $log_file | sort | uniq'

for domain in $domains
do
    sum=$(grep "$domain" $log_file | \
            awk '{ for (i = 5; i <= NF; i++) s = s+$i }; END { print s+0 }')

    echo "Total bandwidth of $domain is $sum"

done
    
por 08.06.2013 / 05:25