关于apache日志格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于apache日志格式相关的知识,希望对你有一定的参考价值。

在apache 日志格式中,有这样一些格式%Refereri,%User-agenti。其中Referer和User-agent称为消息头。
apache手册中是这样定义格式的。%...Foobari, %...Foobarn , %...Foobaro 等等。
请问还有其他的消息头么,它们组合以后的格式又分别代表什么意思呢?谢谢!

下面是Apache 日志格式中的关键字。。。你看看就明白了。

%% 百分号(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并按从多到少排列

五月 31, 2012 by FandLR   
Filed under Linux

解法1: cat access_log | awk  ’{print $1}’ | sort | uniq -c | sort -n -r | head -10
解法2:cat access_log | awk -F “- -” ‘{print $1}’ | sort -t . | uniq -c | sort -n -r | head -10

 

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日志格式的主要内容,如果未能解决你的问题,请参考以下文章

Apache 访问日志格式不正确

ELK收集Apache的json格式访问日志并按状态码绘制图表

APACHE访问日志格式 和 LogFormat语法

Apache日志优化

haproxy+keepalived+apache2 记录日志格式难题求助!

Linux9.9Apache日志