Як я можу побачити, яку пропускну здатність використовує кожен віртуальний хост Apache?


24

У мене Apache створений для обслуговування кількох віртуальних хостів, і я хотів би побачити, яку пропускну здатність використовує кожен сайт. Я бачу, наскільки весь сервер використовує, але хотів би детальніших звітів.

Більшість речей, які я там знайшов, - це обмеження пропускної здатності віртуальних хостів, але я не хочу цього робити; Я просто хочу побачити, які сайти використовують скільки пропускної здатності.

Це не для цілей виставлення рахунків, а лише для інформації.

Чи є модуль apache, який я повинен використовувати? Або є якийсь інший спосіб зробити це?

Відповіді:


23

Інформація, яку ви шукаєте, міститься в журналах, тому вам слід переглянути аналізатор журналів, наприклад AWStats . Інший варіант - використовувати Google Analytics.

Для аналізу журналів, ось приблизний приклад, який ви можете використовувати, щоб повідомити, скільки МБ трафіку повідомляє файл журналу з командного рядка:

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

5
марне використання кота: awk '...' /var/log/apache/access.log теж працює
marco

Чи запропонований спосіб (и) розрахувати трафік, надісланий з певної веб-сторінки в Інтернет (вихідний трафік)?
Халед

2
Так. Але будьте обережні, щоб ви не підсумовували коди відповідей випадково. Я зрозумів, що мій підрахунок був занадто низьким, оскільки для мене 10 доларів - це код відповіді http. Для мого власного журналу apache мені потрібно було використовувати {SUM + = $ 11}.
Філ


3

Я пропоную вам скористатися чудовим механізмом реєстрації apache та його менш відомими прапорами % I та % O :

Визначте формат:

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

Використовуйте його в головному httpd.conf :

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

Ці значення, ймовірно, не враховують всю інформацію заголовків, але досить точні, щоб мати точне уявлення про трафік VirtualHost.

Скануйте журнали за допомогою сценарію perl, щоб агрегувати кожного віртуального хоста кожні n хвилин (наприклад, 5) та надіслати це кактусам.

Ці прапори надаються mod_logio, який, ймовірно, вбудований у ваш Apache (як це для Apache мого Debian).


2
Hum, також цитується в документації Apache 2.0: Зауважте, що в httpd 2.0, на відміну від 1.3, рядки формату% b та% B не представляють кількість байтів, що надсилаються клієнту, а просто розмір у байтах відповіді HTTP ( які будуть відрізнятися, наприклад, якщо з'єднання перервано або якщо використовується SSL). Формат% O, наданий mod_logio, записуватиме фактичну кількість байтів, надісланих по мережі.
жовтня

2

Якщо ви вирішили використовувати ASTASTA з Apache, з вікна він покаже вам сукупну пропускну здатність для всього сервера.

Щоб побачити пропускну здатність на основі віртуального хоста, рекомендую встановити vlogger .

Vlogger фактично збиратиме інформацію журналу доступу Apache для кожного з ваших віртуальних хостів, які ви налаштували для цього в окремих каталогах / файлах.

Наприклад, якщо ваш файл журналу Apache знаходиться в / var / log / apache2, типова установка vlogger створить щось подібне для ваших віртуальних хостів (наприклад, vhost1.com vhost2.com):

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

Vlogger надає вам можливість обертати ці журнали для вас, надає спосіб зміни шаблону імен файлу журналу доступу (наприклад, додати дату) та стверджує, що він обробляє велику кількість файлів журналів краще, ніж Apache.

Однією стороною цього є те, що у вас більше не буде агрегованого подання сервера (вам потрібно буде агрегувати журнали окремо або, можливо, використовувати додатковий параметр apache або, можливо, якийсь інший метод?).

Я б застеріг від використання google analytics (або будь-якого відстеження на основі JavaScript) для моніторингу пропускної здатності сервера, оскільки ви покладаєтесь на клієнт для звітування через javascript. GA не повідомляє вам людей, у яких відключений JavaScript, а також будь-яких сканерів / павуків / ботів.


1

Ось декілька регулярних виразів для розбору формату журналу, запропонованого 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 +)

Приклад журналу:

[12 / січ / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 581 669 [12 / січ / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 624 747 [12 / січ / 2011: 14: 25: 04 +0000] 157.157.12.206 файли.hjaltijakobsson.com /icons/blank.gif 687 186 [12 / січ / 2011: 14: 25: 04 +0000] 157.157. 12.206 files.hjaltijakobsson.com /icons/compression.gif 693 188 [12 / січ / 2011: 14: 25: 04 +0000] 157.157.12.206 файли.hjaltijakobsson.com /favicon.ico 592 512

Матчі:

Subpattern 1 (день місяця): 12
Subpattern 2 (абр. Місяць): Jan
Subpattern 3 (рік): 2011
Subpattern 4 (відвідувач приймає): 157.157.12.206
Subpattern 5 (віртуальний хост): files.hjaltijakobsson.com
Subpattern 6 ( вхідні байти): 581
Підмітка 7 (вихідні байти): 669

Ура.


1

Трохи налаштувати прийняту відповідь, припускаючи, що на сервері насправді є декілька vhosts (і, отже, кілька site.com.access_log 's). Це буде сортувати та списувати кожен vhost

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

і для каталогу gzipped журналів

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

Гм, ви можете отримати зло з використанням IPTables та рядків, щоб записувати пакети для подальшого звітування. Працюватимуть лише для з’єднань, що не належать до SSL.

Або щось відоме протокол і сеанс, наприклад, Snort може бути взуттєвим в користування ...


0

Правильно. Фільтрування журналу - хороша ідея. Я також хочу отримати пропускну здатність мого сервера Apache при завантаженні файлів.

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

Обчислює %bі %dвихід, який дасть вам пропускну здатність струму.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.