使用vlogger拆分lighttpd日志并使用Webalizer创建统计信息

使用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.filenameaccesslog.format指令,尤其是在vhost配置中!

编写一个访问日志的优点是,这会降低服务器上的负载,特别是如果您的服务器上有一些高流量站点。

现在重启lighttpd:

/etc/init.d/lighttpd restart

Vlogger现在将在/ var / log / lighttpd目录中创建一个子目录,每个虚拟主机一个,它将创建包含文件名中当前日期的访问日志。 它还将创建一个名为access.log的符号链接,指向当前日志文件。

假设我们有两个虚拟主机www.example.comwww.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.comwww.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/statshttp://www.test.tld/stats ,查看浏览器中的统计信息。

4链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏