Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Feb 2007 09:34:33 -0500
From:      John Nielsen <lists@jnielsen.net>
To:        freebsd-isp@freebsd.org
Cc:        Anders Nordby <anders@fupp.net>
Subject:   Re: Per virtualhost bandwidth/hitrate statistics for Apache
Message-ID:  <200702070934.34074.lists@jnielsen.net>
In-Reply-To: <20070207130614.GA15328@fupp.net>
References:  <20070207130614.GA15328@fupp.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200702070934.34074.lists>