用于 AWS 弹性负载均衡器的 AWStats LogFormat

用于 AWS 弹性负载均衡器的 AWStats LogFormat

希望有人可以指出我尝试使用的 LogFormat 与 Amazon ELB 生成的访问日志有什么问题。

为了提高 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。

答案1

事实证明,这似乎是%time5AWStats 中 LogFormat 选项的一个错误。

我将 YYYY-MM-DDTHH:MM:SS 转换为 YYYY-MM-DD HH:MM:SS 并使用%time2,日志被成功解析。

答案2

早上好,现在这已经过时了,但是使用 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 正在工作。

谢谢你的发帖。

问候大卫

答案3

  • 样本中没有点,后面跟着 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

相关内容