Измерение трафика из журнала доступа Apache - PullRequest
6 голосов
/ 05 ноября 2011

Можно ли измерить объем трафика, использованного в одном файле журнала Apache?

Формат:

66.249.72.214 - - [05/Nov/2011:12:47:37 +0200] "GET /produktas/565638 HTTP/1.1" 200 4699 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Насколько я понимаю 4699 - это байты, которые были переданы без заголовков.

Мне нужно простое решение (возможно, небольшой скрипт bash) для суммирования байтов в каждой строке журнала.

Ответы [ 5 ]

11 голосов
/ 05 ноября 2011

Попробуй это. Я проверил его на локальном файле, но не могу сказать, работает ли он на всех конфигурациях / locales /...

cat apache.log | perl -e 'my $sum=0; while(<>) { my ($traffic) = m/\[.+\] ".+" \d+ (\d+)/; $sum += $traffic}; print "$sum\n"'

Обновление январь 2017: Тем временем я выучил еще немного Perl, и вот как я это сделаю сегодня:

cat apache.log | perl -nE '/\[.+\] ".+" \d+ (\d+)/; $sum += $1; END {say $sum}'
4 голосов
/ 07 ноября 2011

Для подробного мониторинга файла журнала и фактического использования полосы пропускания, выберите AWStats .

. Он принимает файл журнала Apache в качестве входных данных и дает вам очень подробный анализ посетителей и полосы пропускания, сграфики.

Вы также можете попробовать GoAccess .

3 голосов
/ 20 января 2014

Apache Access Log - использование глобальной полосы пропускания:

awk '{ s += $10 } END { print "Total ", s/1024/1024 " Mo", "- Moyenne ", s/NR/1024/1024 " Mo", "- Accès ", NR }' access.log

А для файла:

grep NAME_OF_RESOURCE_HERE /var/log/apache2/access.log* | awk '{ s += $10 } END { print "Total ", s/1024/1024 " Mo", "- Moyenne ", s/NR/1024/1024 " Mo", "- Accès ", NR }'


Вы получаете что-то вроде этого: Всего 301,985 Мо - Моенна 0,0430055 Мо - Accès 7022

2 голосов
/ 25 декабря 2014

Я думаю, вам нужно использовать утилиту apachetop , попробуйте установить из APT следующую команду:

sudo apt-get install apachetop

А затем запустите его командой:

sudo apachetop -f /path/to/access.log

А ты рок! :)

0 голосов
/ 20 ноября 2018

Нам нужно было получить трафик за последние X дней. Я действительно не в Perl, так что я сделал:

zcat $(find -name yourvhost_access.log*.gz -mtime -3 2>/dev/null| xargs ) \ 
| awk '$10 ~ /^[0-9]+$/ {print $10}' \
| paste -sd+ \
| bc 

Шаги:

  1. найти последние 3 достигнутых журнала доступа
  2. вывести позицию 10, если здесь указан номер - полезная нагрузка
  3. положить его вместе с "+"
  4. высчитывает
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...