awstatsdynamic基础架构中的服务器

我有一个专用于awstats的Linux服务器。 该服务器托pipeawstats应用程序,并为部署在我的基础架构中的多个Web服务器托pipe的多个网站生成/发布统计信息。

为了在这个时候完成这项工作,每个web服务器通过NFS导出它的web-access-logs目录,并且awstats服务器将它们装入只读。 这样一切正常,awstats可以读取所有的服务器日志。

这种解决scheme的主要问题是,每当我closures/在Web服务器上,我必须重新configurationNFS安装和awstats服务器内的Awstatsconfiguration。 考虑到我有一个dynamic的环境(私有),它发生了,我必须closures,并在一天中的Web服务器多次根据我有他们的负载。

您是否知道我可以将其他任何可能的和智能的configuration应用到awstats中,以便无需每次重新configuration都能满足此需求?

非常感谢你。

当我在AWS或类似的云中做类似的事情时,我使用autofs来安装日志目录。 这意味着日志目录被安装在需求驱动的基础上,也就是说,直到需要和不久之后才能卸载。 这也意味着对一个映射到一个down服务器的目录的访问涉及到一个空的目录返回之前的短暂等待,而不是一个很长的NFS挂起。

然后,我维护一个中心的当前活动服务器的轮询列表,以便日志作业不轮询服务器停止运行,甚至没有autofs等待; 但这仅仅是一个细化。

另一种方法是将Web服务器configuration为通过syslog将访问日志传输到您的awstats服务器。

这意味着当您将networking服务器上下移动时,对awstatsconfiguration的configuration更改为零。

在Apache的networking服务器上,你现在可能有这样的东西:

 ErrorLog "/var/log/www/error.log" CustomLog "/var/log/www/access.log" combined 

将其replace为logger (将标准input转换为系统日志消息的标准实用程序),并可select使用tee来复制日志消息,以便保留现有的日志文件:

 ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/www/error.log | /usr/bin/logger -thttpd -plocal6'" CustomLog "|/usr/bin/logger -thttpd -plocal7" combined 

然后指示每个Web服务器上的syslog守护程序将日志文件发送到您的awstats服务器:

 # syslog.conf local6.* @192.168.0.1 local7.* @192.168.0.1 

传入的消息可以被收集并存储,以便通过awstats进一步处理。

如果您有多个不同的虚拟主机,则可能需要添加一个loggingVirtualHost的附加LogFormat指令:

  LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined-with-vhost 

并使用

 CustomLog "|/usr/bin/logger -thttpd -plocal7" combined-with-vhost 

然后,您可以为每个VirtualHost执行一些预处理和分割logging到自己的日志文件,或者更改您的awstatsconfiguration以使用%virtualname处理这些logging并创build正确的统计信息。