Per virtualhost bandwidth/hitrate statistics for Apache
John Nielsen
lists at jnielsen.net
Wed Feb 7 15:17:55 UTC 2007
On Wednesday 07 February 2007 08:06, Anders Nordby wrote:
> I just wonder if anyone has any good hints about software to use (Apache
> module?) for fetching per-virtualhost statistics about bandwidth usage
> and hitrates (hits per second) from Apache. I've been using mod_watch
> for a while, to graph this with MRTG, but it's discontinued it seems.
>
> What do people use to measure statistics per virtualhost?
I use Apache's logrotate and a separate log directory for each virtualhost. I
have a script that runs from cron every day that runs the logs through
webalizer and then cleans up logs older than a specified number of days. In
fact (since I'm feeling like sharing), here it is:
#!/bin/sh
for path in `cat /usr/local/scripts/logpaths.txt` ; do
for log in `find ${path} -name access\* | sort -n` ; do
if [ -r ${path}/hostname.txt ]; then
host=`cat ${path}/hostname.txt`
/usr/local/bin/webalizer -Q -p -n ${host} \
-o ${path} ${log}
else
/usr/local/bin/webalizer -Q -p -o ${path} ${log}
fi
done
find ${path} -name \*.log\* ! -newermt '1 month ago' -delete
done
The script depends on the existence of a "logpaths.txt" file, which contains a
list of directories to scan, one per line. It also supports an
optional "hostname.txt" for each directory so webalizer can use the right one
in the title of its reports. Webalizer output is stored in the log directory
but that could easily be changed.
The output is plain HTML, so you can publish it on a (presumably private)
webserver somewhere. Since I give certain clients access to their reports I
use webmin for this. However I just point webmin to a dummy file within each
log directory and don't let it actually run webalizer (since my script
already takes care of that). So just the "View report" button works, but it
gets the job done.
JN
More information about the freebsd-isp
mailing list