关于apache日志格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于apache日志格式相关的知识,希望对你有一定的参考价值。
在apache 日志格式中,有这样一些格式%Refereri,%User-agenti。其中Referer和User-agent称为消息头。
apache手册中是这样定义格式的。%...Foobari, %...Foobarn , %...Foobaro 等等。
请问还有其他的消息头么,它们组合以后的格式又分别代表什么意思呢?谢谢!
%% 百分号(Apache2.0.44或更高的版本 )
%a 远端IP地址
%A 本机IP地址
%B 除HTTP头以外传送的字节数
%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’- ‘而不是0。
%FoobarC 在请求中传送给服务端的cookieFoobar的内容。
%D 服务器处理本请求所用时间,以微为单位。
%FOOBARe 环境变量FOOBAR的值
%f 文件名
%h 远端主机
%H 请求使用的协议
%Foobari 发送到服务器的请求头Foobar: 的内容。
%l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck 设为”On “,否则将得到一个”-”。
%m 请求的方法
%Foobarn 来自另一个模块的注解Foobar 的内容。
%Foobaro 应答头Foobar: 的内容。
%p 服务器服务于该请求的标准端口。
%P 为本请求提供服务的子进程的PID。
%formatP 服务于该请求的PID或TID(线程ID),format 的取值范围为:pid 和tid (2.0.46及以后版本 )以及hextid (需要APR1.2.0及以上版本)
%q 查询字符串(若存在则由一个”? “引导,否则返回空串)
%r 请求的第一行
%s 状态。对于内部重定向的请求,这个状态指的是原始 请求的状态,—%>s 则指的是最后请求的状态。
%t 时间,用普通日志时间格式(标准英语格式)
%formatt 时间,用strftime(3) 指定的格式表示的时间。(默认情况下按本地化格式)
%T 处理完请求所花时间,以秒为单位。
%u 远程用户名(根据验证信息而来;如果返回status(%s )为401,可能是假的)
%U 请求的URL路径,不包含查询字符串。
%v 对该请求提供服务的标准ServerName 。
%V 根据UseCanonicalName 指令设定的服务器名称。
%X 请求完成时的连接状态: X = 连接在应答完成前中断。
+ = 应答传送完后继续保持连接。
- = 应答传送完后关闭连接。
(在1.3以后的版本中,这个指令是%c ,但这样就和过去的SSL语法:%varc 冲突了)
%I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio 模块。
%O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio 模块。追问
我的提问是,到底有多少个Foobar,还有它们的具体意思!
追答具体的你到Apache 官网上查一下。
参考技术A 不懂不懂!我要去学习!以后再告诉你吧!关于Apache日志的统计
统计apache日志文件里访问量前十的ip并按从多到少排列
awk ‘{a[$1] += 1;} END {for (i in a) printf(“%d %s\n”, a[i], i);}’ 日志文件 | sort -n | tail
首先用awk统计出来一个列表,然后用sort进行排序,最后用tail取最后的10个。
以上参数可以略作修改显示更多的数据,比如将tail加上-n参数等,另外日志格式不同命令也可能需要稍作修改。
当前WEB服务器中联接次数最多的ip地址
#netstat -ntu |awk ‘{print $5}’ |sort | uniq -c| sort -nr
查看日志中访问次数最多的前10个IP
#cat access_log |cut -d ‘ ‘ -f 1 |sort |uniq -c | sort -nr | awk ‘{print $0 }’ | head -n 10 |less
查看日志中出现100次以上的IP
#cat access_log |cut -d ‘ ‘ -f 1 |sort |uniq -c | awk ‘{if ($1 > 100) print $0}’|sort -nr |less
查看最近访问量最高的文件
#cat access_log |tail -10000|awk ‘{print $7}’|sort|uniq -c|sort -nr|less
查看日志中访问超过100次的页面
#cat access_log | cut -d ‘ ‘ -f 7 | sort |uniq -c | awk ‘{if ($1 > 100) print $0}’ | less
统计某url,一天的访问次数
#cat access_log|grep ’12/Aug/2009′|grep ‘/images/index/e1.gif’|wc|awk ‘{print $1}’
前五天的访问次数最多的网页
#cat access_log|awk ‘{print $7}’|uniq -c |sort -n -r|head -20
从日志里查看该ip在干嘛
#cat access_log | grep 218.66.36.119| awk ‘{print $1″\t”$7}’ | sort | uniq -c | sort -nr | less
列出传输时间超过 30 秒的文件
#cat access_log|awk ‘($NF > 30){print $7}’ |sort -n|uniq -c|sort -nr|head -20
列出最最耗时的页面(超过60秒的)
#cat access_log |awk ‘($NF > 60 && $7~/\.php/){print $7}’ |sort -n|uniq -c|sort -nr|head -100
以上是关于关于apache日志格式的主要内容,如果未能解决你的问题,请参考以下文章
ELK收集Apache的json格式访问日志并按状态码绘制图表