我们处理 Apache 日志以获取一些 Google Shopping 和 Adwords 统计数据。有一个命令行可以cut
从日志中提取行,以在查询字符串中使用特定内容来获取 IP,例如gclid
。今天脚本停止工作,查看日志时,我发现了如下条目:
208.115.113.93 - - [20/Jun/2016:15:03:47 +0100] "GET /some-section/ HTTP/1.1" 200 13379
"-" "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, [email protected])"
E-SearchBox&FORM=IENTTR&conversationid=" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)
like Gecko"
80.43.114.199 - - [20/Jun/2016:15:03:48 +0100] "GET
/some/page.php?action=setvalues%5B%5D=41&_=1466431513315
HTTP/1.1" 200 20 "http://www.website.co.uk/the-section/?gclid=COC5q9TAAs0CFdgaGwodLREAAA"
"Moz
正如您在此处看到的,第二行(E-SearchBox...
)不是一个正确的条目。这是一个具有两个负载平衡的 Web 服务器的系统,并且所有日志都发送到同一个挂载位置,这可能说明顺序错误(即该行与前一行无关)。
奇怪的是,这种情况是上个月才开始发生的。上个月,同一份报告运行正常,但这个月却出现了错误,因为日志格式损坏。而且,运行前几个月的同一份报告现在也出现了错误,而以前没有出现过错误。
有人见过这种行为吗?以下是如何设置日志记录的示例:
CustomLog "|/usr/sbin/rotatelogs -l /var/www/vhosts/ombrelle/logs/website.co.uk/%Y%m%d_web.log 86400" combined env=!image
这种情况几年来一直没有改变,但这个问题直到本月才出现。我正在试图弄清楚文件发生了什么。有什么建议吗?
答案1
事实证明这是由于两个 apache 实例尝试写入安装在网络驱动器上的日志文件时出现的问题。
我们将日志文件分离到机器上,然后在处理报告时将它们合并。
我无法解释为什么它突然开始发生,但上述方法确实解决了它。