错误日志
访问日志
传输日志
Cookie日志
其中:传输日志和Cookie日志被Apache 2.0认为已经过时。所以本节仅仅讨论错误日志和访问日志。同时错误日志和访问日志被Apache 2.0默认设置。
能从日志中获取哪些信息
* 访问日志
o 访问服务器的远程机器的地址:可以得知浏览者来自何方
o 浏览者访问的资源:可以得知网站中的哪些部分最受欢迎
o 浏览者的浏览时间:可以从浏览时间(如工作时间或休闲时间)对网站内容进行调整
o 浏览者使用的浏览器:可以根据大多数浏览者使用的浏览器对站点进行优化
* 错误日志
o 获知失效链接
o 获知 CGI 错误
o 获知用户认证错误
配置错误日志
错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息,比如服务器何时启动、何时关闭等。
错误日志配置指令
ErrorLog
ErrorLog 指令指定了当服务器遇到错误时记录错误日志的文件名。其格式为:
格式1:ErrorLog 错误日志文件名
格式2:ErrorLog "|管道程序名"
格式1直接指定错误日志文件名,除非文件位置用”/“开头,否则 ErrorLog 所制定的文件位置是相对于 ServerRoot 目录的相对路径。
格式2实现管道日志,它指定一个命令来处理错误日志。
Apache 编译时默认的错误日志可以使用如下命令获得:
$ apache2 -V| grep DEFAULT_ERRORLOG
-D DEFAULT_ERRORLOG="logs/error_log"
LogLevel
LogLevel 用于调整记于错误日志中的信息的详细程度。其格式为:
LogLevel 错误日志记录等级
下面着重说说日志记录等级:
紧急程度 等级 说明
1 emerg 出现紧急情况使得该系统不可用,如系统宕机等
2 alert 需要立即引起注意的情况
3 crit 危险情况的警告
4 error 除了emerg、alert、crit的其他错误
5 warn 警告信息
6 notice 需要引起注意的情况,但不如error、warn重要
7 info 值得报告的一般消息
8 debug 由运行于debug模式的程序所产生的消息
如果指定了等级 warn,那么就记录紧急程度为1至5的所有错误信息。
Ubuntu 中 Apache 的错误日志配置
配置错误日志相对简单,只要说明日志文件的存放路径和错误日志记录等级即可。
从 Ubuntu 中的 /etc/apache2/apache2.conf 中可知,默认的错误日志存放在 /var/log/apache2/error.log
ErrorLog /var/log/apache2/error.log
LogLevel warn
您可以在 /etc/apache2/apache2.conf 中设置错误日志记录等级,也可以在相应的虚拟主机的配置文件中设置。
错误日志文件举例
下面是一个错误日志文件的截取。
$ sudo tac /var/log/apache2/error.log
[Wed Jun 20 14:53:15 2007] [error] [client 192.168.0.66] File does not exist: /usr/share/phpmyadmin/favicon.ico
[Wed Jun 20 11:12:50 2007] [notice] Apache/2.0.55 (Ubuntu) DAV/2 SVN/1.3.1 mod_python/3.1.4 Python/2.4.3 PHP/5.1.2 configured -- resuming normal operations
[Wed Jun 20 11:12:49 2007] [notice] Digest: done
[Wed Jun 20 11:12:49 2007] [notice] Digest: generating secret for digest authentication ...
[Wed Jun 20 09:22:22 2007] [notice] caught SIGTERM, shutting down
关于默认的Apache日志文件
Apache提供很多检测和日志工具来追踪服务器的正确运行。默认的Apache配置提供两个日志文件,放置在安装目录下的日志目录里面。access_log这个文件(在windows下对应access.log文件)包含了服务器已经处理过的请求的信息,比如说请求的URL,客户端的IP地址,请求是否被成功完成等。error_log 这个文件(在windows下对应error.log文件)包含了与错误情况相关的信息,以及服务器生命周期中不同的大事件。
创建日志格式
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%h %l %u %t "%r" %>s %b"
"%{Referer}i" "%{User-agent}i"" combined
LogFormat指令允许你告诉Apache你想要记录请求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:普通日志格式和整合日志格式。当Apache收到一个请求,他将会用相应的请求属性来替代以%为前缀的每一个域。如果您正在使用普通日志格式,您的日志文件里的每一项输入看起来都将是这样的:
192.168.200.4 - someuser [12/Jun/2005:08:33:34
+0500] "GET /example.png HTTP/1.0" 200 1234
如果您正在使用整合日志格式,您的日志文件里的每一项输入看起来则都将是这样的:
192.168.200.4 - someuser [12/Jun/2005:08:33:34
+0500] "GET /example.png HTTP/1.0" 200 1234
/ "Mozilla/5.0
(WindowsUWindows NT 5.1en-USrv:1.7.7)"尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域:
# %h: 客户端(例如,浏览器)向服务器发出连接请求时自己的当时的IP地址或域名(需开启HostNameLookups)。
# %u: 使用HTTP方式认证用户时,记录下的用户的编号。
# %t: 服务器接受到连接请求的时间。
# %r: 客户端发出的原始连接请求中的文本信息,包含所使用的HTTP方法。
# %>s: 服务器应答浏览器后的返回状态代码,200表示请求成功。.
# %b: 服务器应答浏览器发出的单个请求的回传对象的内容大小(字节为单位),不统计数据包头部字节。
整合日志格式在普通日志格式的基础上扩展出了两个附加的`域。定义为:
# %{Referer}i: 连接请求数据包包头,包含指向当前页面的文档关联信息。
# %{User-agent}i: 用户代理连接请求数据包包头,包含客户浏览器的信息。
创建一个自定义日志文件
CustomLog logs/access_log common
TransferLog logs/sample.log您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并保存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还可以用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只接受最后一个LogFormat指令提供的定义。
延伸阅读:
重导向日志到一个外部的程序
TransferLog "|bin/rotatelogs /var/logs/apachelog
86400"你也可以用CustomLog或TransferLog将日志的输出重导向(输出)到一个外部的程序,而不是一个文件。要做到这一点,首先您需要以输出字符"|"开头,跟着是接收日志标准输入信息的程序之路经。本例运用Apache自带的rotatelogs程序,在稍后的章节中会对其有所介绍。
当有一个外部程序被使用,它将作为启动mon env=!image
SetEnvIf Remote_Addr 192.168.200.5 specialmachine
CustomLog logs/special_access_log common env=specialmachine你可以根据可变的环境决定是否记录一个请求。这种可变可以根据许多参数,比如客户端的IP地址或请求中某个头部的存在,事先设置好。正如本例中所显示,CustomLog指令可以将可变的环境作为第三个参数来接受。如果存在可变的环境,它就将被记录,否则就不会。如果这个可变的环境被一个"!"开头否定,那么不存在可变的环境将会被记录。本例将告诉您如何避免在日志里以GIF和JPEG的格式记录图像,及如何从一个特定的IP地址记录请求道一个单独的日志文件。另一个例子请参加下一节。
谁在连接你的网站
SetEnvIfNoCase Refererinternalreferral
LogFormat "%{Referer}i ->%U" referer
CustomLog logs/referer.log referer env=!internalreferral可以通过记录Referer的值来检测哪些人连接了你的网站,Referer变量位于用户发送连接请求数据包的头部,数据包头中还包含了用户访问的目的网站的URL地址。通过这种方法可以记录下绝大部分网站访问者。也可以把来自特定网站()地址段的来访者排除出日志记录文件。
利用模块参数(mod_status)来监视Apache服务器
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 192.168.0
Apache服务器中可以使用的功能模块很多,有服务器内置的也有外挂的,这些模块工作的状态和性能就是通过mod_status参数来记录的,记录的内容有“哪些模块参与了网站应答服务、哪些模块处于空闲状态、服务器的开启/关闭时间。正在处理的连接请求数和访问者数量(需要指定ExtendedStatus记号)-该模块记录对高负荷网站服务器性能有很大影响”。例子中记录的模块状态统计结果可以用浏览器访问/server-status页面来查看。
通过SNMP协议来监视Apache服务器
SNMP是简单网管协议,支持SNMP的服务器或网络设备可以被OpenView、Tivoli等网管软件统一管理,目前有很多开源的SNMP模块可以加装到Apache网站服务器之上,对于Apache 1.3版来讲,mod_snmp模块可以支持第1版和2版的SNMP协议;对于Apache 2版来讲,mod_apache_snmp模块可以编译成Apache的DSO直接支持第1版、第2版和第3版的SNMP协议。有了SNMP模块,外部网管软件就可以对Apache网站服务器的各种实时性能参数进行查看了,这些参数包含“服务器连续在线时间、平均负载、一段时间内的错误数、提供网站服务的字节数和连接请求数”。SNMP模块遇到突然激增的并发连接请求数时会向控制台报警。管理SNMP资源的开源工具软件有:“net-snmp,OpenNMS,Najios等”。
用开源工具分析日志
有很多开源和商业版的工具软件可以对产生的Apache日志文件做分析和处理,通常的步骤是:
1.选取一个日志文件。
2.分析日志文件内容。
3.生成包含不同类别内容的统计信息网页输出。Webalizer(/software/去下载这些工具。
将连接请求日志记录到数据库
Apache本身没有将记录转发到数据库的功能,必须要第三方脚本和模块来支持。这里列举几个:mod_log_sql模块允许将连接请求直接记入MySQL数据库,然后用Apache LogView SQL工具来参看库中的记录;pglogd工具可以记录日志到PostgreSQL数据库中。
将日志文件转存和归档
CustomLog "|bin/rotatelogs /var/logs/apachelog
86400" common如果网站流量较高,日志文件很容易就会变得很大,需要进行转存和归档处理。转存日志文件时需要压缩和保存,在线进行这项工作可以使用Apache提供的rotatelogs来完成,类似工具还可以在.au/logtools/网页可以找到一些其他的日志工具。比如vlogger工具就可以替代cronologs来对单个服务器上的虚拟网站日志进行分别处理,该工具在
CustomLog logs/vhost1.example.com_log combined
ErrorLog logs/vhost2.example.com_log
.......
使用CustomLog标志段在Apache配置文件的 区块内实现虚拟网站日志文件的独立处理。
LogFormat "%v %h %l %u %t "%r" %>s %b" common_virtualhost
CustomLog logs/access_log common_virtualhost在Apache全局配置中配置方法,其中的v%负责把提供服务的虚拟网站记录下来,对于配置了很多虚拟网站的单台服务器来说,这种配置不错。如果不想记录虚拟服务器的日志只需要在配置文件中加入"CustomLog /dev/null"就可以了。
日志文件中常见的条目
缺少favicon.ico文件,该文件可在浏览器的标题栏显示网站的个性图案;
缺少robots.txt文件,利于站点复制工具和搜索引擎使用;
覆写httpd.pid文件,网站服务器不正常退出后遗留的PID记录文件;
陌生的长记录条,
"SEARCH /x90x02xb1x02xb1x02xb1x02 ..."
"GET /scripts/..%252f../winnt/system32/cmd.exe?/
c+dir HTTP/1.0..."
"GET /default.ida?NNNNNNN NNNNNNNNNNNNNNNNNN ..."类似的记录条表示访问者请求了网站上根本没有的cmd.exe,root.exe或dir等文件。
日志文件中的一些条目经常反映了那些自动探测网站服务器漏洞的动作,多数来源于针对IIS网站服务器的蠕虫和恶意程序。有时候也会发现一些针对Apache的漏洞,所以为了保证Apache的正常运行,用户应保持经常更新Apache软件。
默认目录是/var/www/html下。修改方法:打开/etc/httpd/conf/httpd.conf文件,找到下面这行
DocumentRoot "/var/www/html"
可以改成你想要的目录。
-----------------------------------------------------------
apache的默认重要配置信息如下:
配置文件:/etc/httpd/conf/http.conf
服务器的根目录:/var/www/html
访问日志文件:/var/log/httpd/access_log
错误日志文件:/var/log/httpd/error_log
运行apache的用户:apache
运行apache的组:apache端口:80模块存放路径:/usr/lib/httpd/modules
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)