使用vlogger分解lighttpd日志并使用Webalizer创建统计信息
版本1.0
作者:Falko Timme
Vlogger是一个小工具,您可以用它编写由虚拟主机和日子分解的lighttpd日志。 使用vlogger,我们需要在我们的全局lighttpd配置中放置一个accesslog.filename
指令,并为每个虚拟主机和日期写入访问日志。 因此,您不必每天将lighttpd的整体访问日志分成每个虚拟主机的访问日志,并且您不必配置lighttpd为每个虚拟主机写入一个访问日志(这可能会使文件描述符的运行速度非常快) )。
在本教程末尾,我将向您展示如何使用webalizer从lighttpd访问日志中创建统计信息。
我不会保证这将为您工作!
1初步说明
我已经在已经安装和工作的lighttpd的Debian Etch系统上测试了vlogger。
2安装和配置vlogger
要安装vlogger,我们只需运行
apt-get install vlogger
之后,我们必须修改/etc/lighttpd/lighttpd.conf
中的accesslog.filename
行,并添加一个可与vlogger一起使用的accesslog.format
行:
vi /etc/lighttpd/lighttpd.conf
[...] #### accesslog module accesslog.filename = "| /usr/sbin/vlogger -s access.log /var/log/lighttpd" accesslog.format = "%v %h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" [...] |
请禁用lighttpd配置中的所有其他accesslog.filename
和accesslog.format
指令,尤其是在vhost配置中!
编写一个访问日志的优点是,这会降低服务器上的负载,特别是如果您的服务器上有一些高流量站点。
现在重启lighttpd:
/etc/init.d/lighttpd restart
Vlogger现在将在/ var / log / lighttpd
目录中创建一个子目录,每个虚拟主机一个,它将创建包含文件名中当前日期的访问日志。 它还将创建一个名为access.log
的符号链接,指向当前日志文件。
假设我们有两个虚拟主机www.example.com
和www.test.tld
。 那么这就是/ var / log / lighttpd
目录的样子:
/var/log/lighttpd/
www.example.com/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log
www.test.tld/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log
要了解其他vlogger命令行指令可以放入accesslog.filename
行,请查看
man vlogger
3使用webalizer创建统计信息
在本章中,我将介绍如何使用webalizer从分割的日志文件中创建统计信息。 再次,我假设您有两个虚拟主机www.example.com
和www.test.tld
,这些虚拟主机的文件根源为/var/www/www.example.com/web
和/ var / www /www.test.tld/web
(服务器名称在文档根路径中非常重要,否则以下过程将无法正常工作)。 我想将统计数据放到目录/var/www/www.example.com/web/stats
和/var/www/www.test.tld/web/stats中
,所以这些必须已经存在。
首先,我们来安装webalizer:
apt-get install webalizer
看一眼
man webalizer
看看webalizer的工作原理。 基本上,要从昨天的访问日志创建www.example.com的统计
信息,可以使用以下命令:
/usr/bin/webalizer -c /etc/webalizer/webalizer.conf -n www.example.com \
-s www.example.com -r www.example.com -q -T -o /var/www/www.example.com/web/stats \
/var/log/lighttpd/www.example.com/`/bin/date -d "1 day ago" +%m%d%Y`-access.log
( /etc/webalizer/webalizer.conf
是Debian的默认webalizer.conf。/
bin / date -d“1天前”的位置+%m%d%Y
按照我们需要的方式打印昨天的日期,以便我们可以通过昨天的access.log
到webalizer,而不需要知道确切的日期。)
当然,我们不想为每个虚拟主机手动运行这样的命令,因此我们编写一个读取/ var / log / lighttpd目录
的小脚本,并为在该目录中具有日志的每个虚拟主机创建统计信息。 我命名脚本webstats
并将其放在/ usr / local / sbin
目录中:
vi /usr/local/sbin/webstats
#!/bin/sh logdir=/var/log/lighttpd webalizerconf=/etc/webalizer/webalizer.conf yesterdaysdate=`/bin/date -d "1 day ago" +%m%d%Y` cd ${logdir} for directory in * do if [ -d ${directory} ]; then /usr/bin/webalizer -c ${webalizerconf} -n ${directory} \ -s ${directory} -r ${directory} -q -T -o /var/www/${directory}/web/stats \ ${logdir}/${directory}/${yesterdaysdate}-access.log fi done exit 0 |
我们必须使脚本可执行:
chmod 755 /usr/local/sbin/webstats
最后,我们创建一个cron工作,每天晚上在04:00时调用/ usr / local / sbin / webstats
脚本:
crontab -e
0 4 * * * /usr/local/sbin/webstats &> /dev/null |
在cron作业第一次运行之后,您可以访问http://www.example.com/stats
和http://www.test.tld/stats
,查看浏览器中的统计信息。
4链接
- vlogger: http : //n0rp.chemlab.org/vlogger
- webalizer: http : //www.mrunix.net/webalizer
- Debian: http : //www.debian.org