Назад | Перейти на главную страницу

Как использовать AWK для создания отчета о пропускной способности в Apache

У меня журналы Apache настроены следующим образом:

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

Как я могу использовать AWK для создания отчета, который показывает мне общую пропускную способность (полученная + отправленная) в МБ на виртуальный хост?

Вот пример вывода журнала:

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

Я ищу вывод, который суммирует 3-й и 4-й столбцы для bob.com и luke.com без фактического указания доменов, так как у меня более 50 доменов, и я бы не хотел поддерживать список. Намного проще просто консолидировать распечатку.

Или это:

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

произвел бы

bob.com 2361
luke.com 254

С образцом файла журнала ..

Вы можете написать небольшой скрипт для выполнения этой работы:

#!/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