希望有人能指出我试图与 Amazon ELB 生成的访问日志一起使用的 LogFormat 有什么问题。
ServerFault 可读性的多行:
%time5 %elb %host %host_port %host_r %host_r_port %request_processing_time
%backend_processing_time %response_processing_time %code
%backend_status_code %received_bytes %bytesd %methodurl
示例日志条目(清理后):
2014-08-28T17:59:14 awseb-e-2-AWSEBLoa-AAAAAAAA 123.123.123.123 44153 10.123.123.123 80 0.000046 0.536613 0.000045 200 200 0 13129 "GET /path/to/web/app HTTP/1.1"
日志在发送到 AWStats 之前被清理。我使用以下替换:
cat ${s3_logs_dir}/* \
| sed -e "s/\(\.[0-9]\{1,3\}\):\([0-9]\{2,5\}\)/\1 \2/g" \
| sed -e "s/\(:[0-9]\{2\}\)\(\.[0-9]\{6\}Z\)/\1/g" \
| sed -e "s/http:\/\/www\.example\.com:80//g" \
> ${combined_log} 2>>${log_file}
首先我从端口中分离主机,其次我从 %time5 ISO 日期中删除微秒,最后我尝试从请求中删除绝对 URL。
事实证明,这似乎是
%time5
AStats 中 LogFormat 选项的错误。我将 YYYY-MM-DDTHH:MM:SS 转换为 YYYY-MM-DD HH:MM:SS 并使用
%time2
,日志解析成功。早上,现在这已经过时了,但是使用 awstats Advanced Web Statistics 7.7(内部版本 20180105)和您使用此标准的解析规则,它也与代理匹配。
在当前的 elb 日志中也是日志类型的请求,甚至没有记录,所以新格式是
LogFormat="%other %time5 %other %host %host_port %host_r %host_r_port %request_processing_time %backend_processing_time %response_processing_time %code %backend_status_code %received_bytes %bytesd %methodurl %uaquot"
%time5 现在正在工作。
感谢发帖。
亲切的问候大卫
样本中没有点,后跟 1 到 3 位,后跟 2 点,然后是 2 到 5 位,但端口分隔符已经有一个空格
sed -e "s/(.[0-9]{1,3}):([0-9]{2,5})/\1 \2/g"
没有双点后跟 2 位数字,后面跟着一个点、6 位数字和“Z”
sed -e "s/(:[0-9]{2})(.[0-9]{6}Z)/\1/g"
...
此外,您不需要管道 sed 操作,只需通过半列分隔操作
s/pat11/pat12/opt1;s/pat21/pat22/opt2;other action