设为首页 收藏本站
查看: 1208|回复: 0

[经验分享] apache日志管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-19 08:41:55 | 显示全部楼层 |阅读模式
一.apache日志类型
1.apache日志共分为:访问日志,错误日志
2.日志信息的级别
严重程度等级 说明
1emerg系统不可用
2alert需要立即引起注意的情况
3crit 危急情况
4error错误信息
5warn警告信息
6notice需要引起注意的情况
7info一般信息
8debug由运行于debug模式的程序输出的信息
说明:
       如果用户把错误日志设置成warn级别,则严重程度由1~5的所有错误信息都会被记录下来

二.apache访问日志
apache访问日志的格式
    Apache内建了记录服务器活动的功能,这就是它的日志功能。
  如果Apache的安装方式是默认安装,服务器一运行就会有两个日志文件生成。这两个文件是access_log和error_log。位于/var/log/httpd/下;如果采用源代码编译安装方式时,位于/usr/local/apache/logs;
   正如其名字所示,访问日志access_log记录了所有对Web服务器的访问活动。下面是访问日志中一个典型的记录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
192.168.254.191 - - [01/Sep/2014:14:06:49 +0000] "GET / HTTP/1.1" 200 44
从记录上可以看出,日志分为7项,上面例子中有两项空白,但是整体是7项
第一项:192.168.254.191 是客户端自身的ip

第二项:- 用一个“-”占位符代替 实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的email地址或者其他唯一标识符。这个信息由identd返回,或者直接由浏览器返回。但是基本上现在浏览器都淘汰了这项功能

第三项:-用一个“-”占位符代替。实际用来记录浏览者进行身份验证时提供的名字

第四项:[01/Sep/2014:14:06:49 +0000]  记录访问时间。这个信息用方括号包围,而且采用所谓的“公共日志格式”或“标准英文格式”。+0000表示服务器所在时区和UTC所差的时区

第五项:"GET / HTTP/1.1"  告诉我们服务器收到的是一个什么样的请求,该项信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”

第六项:200 表示信息状态码。即用户请求的结果是否成功。200表示服务器成功响应浏览器的请求。但一般地说,以2开头的状态代码表示成功,以3开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置,以4开头的状态代码表示客户端存在某种错误,以5开头的状态代码表示服务器遇到了某个错误。
   
第七项:44 示发送给客户端的总字节数。它告诉我们传输是否被打断(即,该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。
  
【总结】:日志名字段所代表的内容:   1.远程主机、2.空白(E-mail)、3.空白(登录名)、4.请求时间、5.方法+资源+协议、6.状态代码、7.发送字节数
配置访问日志



决定日志存放位置的是在httpd.conf中的下面这个语句
1
CustomLog "logs/access_log" common




CustomLog指定了保存日志的具体位置以及格式,上面这个语句指定是common日志格式(标准的日志格式)
注意:对于较早的apache服务器,这能不是CustomLog,而是用transferlog指定

三.apache错误日志
错误日志内容及格式
错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息。内容一般分为文档错误和CGI错误,还有一些配置文件报错及服务的开启关闭等信息
1
2
3
4
5
6
7
8
[Mon Sep 01 15:21:03 2014] [error] [client 192.168.254.191] File does not exist: /usr/local/httpd-2.2.9/htdocs/aa
第一项: 日期/时间标记,注意它们的格式和access_log中日期/时间的格式不同。access_log中的格式被称为“标准英文格式”,
  
第二项:当前记录的级别,它表明了问题的严重程度。这个级别信息可能是LogLevel指令的文档中所列出的任一级别(参见前面LogLevel的链接),error级别处于warn级别和crit级别之间。404属于error错误级别,这个级别表示确实遇到了问题,但服务器还可以运行。
   
第三项:表示用户发出请求时所用的IP地址。  

第四项:真正的错误信息。对于404错误,它还给出了完整路径指示服务器试图访问的文件。



位置
错误日志的位置由httpd.conf文件中下面语句指定
ErrorLog "logs/error_log" 指定错误日志文件位置     
LogLevel warn     指定记录错误日志的级别

四.apache日志的定制
定义访问日志的格式
定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令,默认httpd.conf文件提供了关于这两个指令的几个示例。  
LogFormat指令定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。CustomLog指令设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。  
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "logs/access_log" common

LogFormat指令创建了名为“common”日志格式,引号中间的每个字符串定义了日志的格式,表示特定的信息,这些信息按照格式串规定的次序写入日志文件。

常见的格式串变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
%...a:     远程IP地址  
%...A:     本地IP地址  
%...B:     已发送的字节数,不包含HTTP头  
%...b:     CLF格式的已发送字节数量,不包含HTTP头。  
           例如当没有发送数据时,写入‘-’而不是0。  
%...{FOOBAR}e: 环境变量FOOBAR的内容  
%...f:     文件名字  
%...h:     远程主机  
%...H      请求的协议  
%...{Foobar}i: Foobar的内容,发送给服务器的请求的标头行。  
%...l:     远程登录名字(来自identd,如提供的话)  
%...m      请求的方法  
%...{Foobar}n: 来自另外一个模块的注解“Foobar”的内容  
%...{Foobar}o: Foobar的内容,应答的标头行  
%...p:     服务器响应请求时使用的端口  
%...P:     响应请求的子进程ID。  
%...q      查询字符串(如果存在查询字符串,则包含“?”后面的  
           部分;否则,它是一个空字符串。)  
%...r:     请求的第一行  
%...s:     状态。对于进行内部重定向的请求,这是指原来的请求  
           的状态。如果用%...>s,则是指后来的请求。  
%...t:     以公共日志时间格式表示的时间(或称为标准英文格式)  
%...{format}t: 以指定格式format表示的时间  
%...T:     为响应请求而耗费的时间,以秒计  
%...u:     远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)  
%...U:     用户所请求的URL路径  
%...v:     响应请求的服务器的ServerName  
%...V:     依照UseCanonicalName设置得到的服务器名字
  
"%{Referer}i" --此项指明了该请求是从被哪个网页提交过来的。
"%{User-Agent}i" --此项是客户浏览器提供的浏览器识别信息




在所有上面列出的变量中,“...”表示一个可选的条件。如果没有指定条件,则变量的值将以“-”取代。分析前面来自默认httpd.conf文件的LogFormat指令示例,可以看出它创建了一种名为“common”的日志格式,其中包括:远程主机,远程登录名字,远程用户,请求时间,请求的第一行代码,请求状态,以及发送的字节数。  

   有时候我们只想在日志中记录某些特定的、已定义的信息,这时就要用到“...”。如果在“%”和变量之间放入了一个或者多个HTTP状态代码,则只有当请求返回的状态代码属于指定的状态代码之一时,变量所代表的内容才会被记录。例如,如果我们想要记录的是网站的所有无效链接,那么可以使用:  
   LogFormat %404{Referer}i BrokenLinks  

   反之,如果我们想要记录那些状态代码不等于指定值的请求,只需加入一个“!”符号即可:
   LogFormat %!200U SomethingWrong  
举例
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined   
CustomLog "log/access_log" combined   
这种格式与通用日志格式类似,但是多了两个 %{header}i 项,其中的header可以是任何请求头。这种格式的记录形如:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

其中,多出来的项是:

"http://www.example.com/start.html" (\"%{Referer}i\")
"Referer"请求头。此项指明了该请求是被从哪个网页提交过来的,这个网页应该包含有/apache_pb.gif或者其连接。

"Mozilla/4.08 [en] (Win98; I ;Nav)" (\"%{User-agent}i\")
"User-Agent"请求头。此项是客户端提供的浏览器识别信息
五.apache日志轮询
什么是日志轮询?
默认情况下apache的日志是写入到一个文件中的,这对日志的备份和分析造成不便。日志轮询就是可以把apache的日志根据时间进行分开,例如按天轮询:即apache会把当天的日志写入到一个独立的文件中。

下载并安装日志轮询工具
1
2
3
4
5
6
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install




配置轮询
DocumentRoot "/usr/local/httpd-2.2.9/htdocs/sr1/"
ServerName www.sr1.com
ServerAlias www.sr1.com
ErrorLog "logs/www.sr1.com_error_log"
# CustomLog "logs/www.sr1.com_access_log" jie
CustomLog "|/usr/local/sbin/cronolog /usr/local/httpd/logs/sr1_%Y%m%d_access_log" jie

注意日志的文件要写绝对路径
%Y%m%d是按天轮询
%Y%m%d%H是按小时轮询

查看结果:可以发现在logs下sr1的日志会按天来创建
QQ截图20141219084156.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38260-1-1.html 上篇帖子: Apache运行时寻找ServerName 下篇帖子: apache的访问控制设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表