Существуют определенные модули для Apache 1.x и 2.x, которые позволят вам установить максимальную сумму перевода, большинство из них отслеживают, используя файл табло, который генерирует Apache (когда mod_status включен с ExtendedStatus включен) , Когда я искал одну из них, я все же добавил закладку mod_curb , однако она не завершена и в настоящий момент работает только в масштабе сервера, а не на отдельных виртуальных хостах. .
Модули Apache могут быть установлены как исходящие фильтры, так что вы можете написать костюмный модуль, который будет располагаться в конце цепочки, и сложить все исходящие пакеты, используя данные, которые предоставляет APR, затем вы можете добавить их в счетчик для этого конкретного домена / субдомена. После этого у вас есть выбор, что делать с данными.
В качестве конкретных примеров, посмотрите на mod_deflate, который предоставляет Apache, чтобы увидеть, как он находится в конце цепочки и сжимает все, кроме заголовков, которые отправляет сервер. Это должно дать вам хорошее начало.
Что касается обработки на основе журналов, она становится медленнее, чем больше журналов существует. Это просто природа зверя. Когда мы использовали решение на основе журналов, у нас был собственный Perl-скрипт, который запускался каждые 15 минут. В конечном счете, для анализа потребовалось бы больше 15 минут, и, поскольку через некоторое время у нас была правильная блокировка, несколько из этих сценариев perl для обработки журналов работали, все ожидали друг друга. В итоге мы переписали его простым вызовом tail -F, который затем позволил perl анализировать каждый запрос по мере его поступления, хотя он и не был полностью эффективным, он работал. Плюсом этого стало то, что теперь мы можем обновлять статистику трафика практически в реальном времени, чтобы клиенты обновлялись раньше, а не позже, если они выходили за пределы.