s %b" common LogFormat "%h %l %u %t \"%r\" %>s %b" \"%{Referer}i\" \" />
监视并记录Apache网站服务器的运行LogFormat 指令承诺你告诉Apache你想要记录要求的哪些方面。
而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。
下面的例子显示了两种最受欢迎的格式的配置:一般日志格式和整合日志格式。
当Apache收到一个要求,他将会用相应的要求属性来替代以%为前缀的每一个域。
假如您正在使用一般日志格式,您的日志文件里尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域:# %h: 客户端(例如,扫瞄器)向服务器发出连接要求时自己的当时的IP地址或域名(需开启HostNameLookups)。
# %u: 使用方式认证用户时,记录下的用户的编号。
# %t: 服务器同意到连接要求的时刻。
# %r: 客户端发出的原始连接要求中的文本信息,包含所使用的方法。
# %>s: 服务器应答扫瞄器后的返回状态代码,200表示要求成功。
.# %b: 服务器应答扫瞄器发出的单个要求的回传对象的内容大小(字节为单位),不统计数据包头部字节。
整合日志格式在一般日志格式的基础上扩展出了两个附加的域。
定义为:# %{Referer}i: 连接要求数据包包头,包含指向当前页面的文档关联信息。
# %{User-agent}i: 用户代理连接要求数据包包头,包含客户扫瞄器的信息。
创建一个自定义日志文件您可能会想创建Apache自带以外的新的日志文件。
下面的例子将运用CustomLog来创建一个新的日志文件,并储存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。
您还能够用格式本身的定义来替换昵称。
一个附加的,更为简单的指令是Transferlog,它只同意最后一个LogFormat指令提供的定义。
你也能够用CustomLog或TransferLog将日志的输出重导向(输出)到一个外部的程序,而不是一个文件。
要做到这一点,第一您需要以输出字符"|"开头,跟着是接收日志标准输入信息的程序之路经。
本例运用Apache自带的rotatelogs程序,在稍后的章节中会对其有所介绍。
当有一个外部程序被使用,它将作为启动d的用户被运行。
假如服务器是被超级治理员所启动,它就会是超级治理员,完全确保那个程序是安全的。
同时,当进入一个非Unix 平台上的一个文件路径时,需要小心确保只有正斜杠被使用,即使那个平台可能是承诺使用反斜杠的。
总的来说,在整个配置文件中总是使用正斜杠是个好主意。
有条件的日志要求你能够依照可变的环境决定是否记录一个要求。
这种可变能够依照许多参数,比如客户端的IP地址或要求中某个头部的存在,事先设置好。
正如本例中所显示,CustomLog指令能够将可变的环境作为第三个参数来同意。
假如存在可变的环境,它就将被记录,否则就可不能。
假如那个可变的环境被一个"!"开头否定,那么不存在可变的环境将会被记录。
本例将告诉您如何幸免在日志里以GIF和JPEG的格式记录图像,及如何从一个特定的IP地址记录要求道一个单独的日志文件。
另一个例子请参加下一节。
谁在连接你的网站能够通过记录Referer的值来检测哪些人连接了你的网站,Referer变量位于用户发送连接要求数据包的头部,数据包头中还包含了用户访问的目的网站的URL地址。
通过这种方法能够记录下绝大部分网站访问者。
也能够把来自特定网站(www\.example\ )地址段的来访者排除出日志记录文件。
利用模块参数(mod_status)来监视Apache服务器Apache 服务器中能够使用的功能模块专门多,有服务器内置的也有外挂的,这些模块工作的状态和性能确实是通过mod_status参数来记录的,记录的内容有“哪些模块参与了网站应答服务、哪些模块处于闲暇状态、服务器的开启/关闭时刻。
正在处理的连接要求数和访问者数量(需要指定ExtendedStatus记号) -该模块记录对高负荷网站服务器性能有专门大阻碍”。
例子中记录的模块状态统计结果能够用扫瞄器访问:// example /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日志文件做分析和处理,通常的步骤是:Webalizer( :// /webalizer/)和AWStats( ://)是较为流行的日志文件分析工具;还有一些工具能够记录来访者具体访问路线,比如Vistors和Pathalizer 工具,能够分别从:// /visitors/和:///下载。
实时监视日志使用apachetop命令行工具来显示apache服务器当前的运行状态,类似于Unix等系统下的top命令工具。
对流量比较低的Unix- Apache网站也能够使用tail命令来记录实时日志信息,tail -f /logfile/。
通过扫描错误日志文件中的记录,分析出恶意连接要求,常用的错误日志文件扫描工具有Logscan和ScanErrLog,能够分别从:// /security.php 和:// librelogiciel /software/去下载这些工具。
将连接要求日志记录到数据库Apache 本身没有将记录转发到数据库的功能,必须要第三方脚本和模块来支持。
那个地点列举几个:mod_log_sql模块承诺将连接要求直截了当记入MySQL数据库,然后用Apache LogView SQL工具来参看库中的记录;pglogd工具能够记录日志到PostgreSQL数据库中。
假如网站流量较高,日志文件专门容易就会变得专门大,需要进行转存和归档处理。
转存日志文件时需要压缩和储存,在线进行这项工作能够使用Apache提供的rotatelogs来完成,类似工具还能够在:///上找到。
例子中用rotatelogs工具将每天的日志做了转存和归档处理,一天共有86400秒。
查看Apache关心文件能够了解更多的rotatelogs工具参数。
注意假如rotatelogs工具所在的名目名含有空格,则需要用跳转符号\来指定。
IP地址和域名之间对应处理将HostNameLookups 设置成on,那么日志记录中将显示来访者所在的域名,设置成on 可降低服务器性能。
为了解决这一问题,Apache提供了一个事后分析IP地址域名信息的工具logresolve,例如$ logresolve < access_log > resolved_log假如用代理服务器或网关设备来完成的网站访问,Apache服务器将只能记录到代理服务器和网关的IP地址和域名。
如何自动启动Apache服务器在windows 平台下以服务方式启动的Aapche遇到意外退出后能够由服务治理器自动自动,Unix平台下需要借助watchdog脚本来实现自动启动功能,watchdog程序专门用来监视其他程序的运行状态,发觉被监视的程序退出或停止后能够重新将他们启动。
例子中简单的linux脚本将监视系统的进程表,假如网站服务器d进程消逝,则负责将它重新启动,使用该脚本的条件有2个,第一保证该脚本文件具备可执行权限,第二必须将该文件设置到cron文件中,使之能够在预定的时刻间隔内运行,假如使用Solaris系统,需要将例子中的ps -waux改成ps -ef。
用户能够访问:///docs/general/control/control.html网页发觉更多高级的watchdog类脚本工具,大多数linux发行版自带一些用于Apache的脚本工具。
日志文件的分割和合并假如用户的网站环境是用服务器集群来搭建的,通常需要将所有服务器上的日志做合并成单个文件后,才能够进行分析和处理。
相似的道理,假如在单台服务器上运行多个虚拟网站,则需要将单个日志文件分割成多个部分供不同的虚拟网站用户去分析。
在Apache服务器源码的support/文件夹下能够找到相应的脚本工具split-logfile等。
在://coker .au/logtools/网页能够找到一些其他的日志工具。
比如vlogger工具就能够替代cronologs来对单个服务器上的虚拟网站日志进行分别处理,该工具在:///vlogger/下载。
为虚拟网站储存独立的日志文件使用CustomLog标志段在Apache配置文件的<Virtualhost>区块内实现虚拟网站日志文件的独立处理。
在Apache全局配置中配置方法,其中的v%负责把提供服务的虚拟网站记录下来,关于配置了专门多虚拟网站的单台服务器来说,这种配置不错。
假如不想记录虚拟服务器的日志只需要在配置文件中加入"CustomLog /dev/null"就能够了。
日志文件中常见的条目缺少favicon.ico文件,该文件可在扫瞄器的标题栏显示网站的个性图案;缺少robots.txt文件,利于站点复制工具和搜索引擎使用;覆写 d.pid文件,网站服务器不正常退出后遗留的PID记录文件;生疏的长记录条,类似的记录条表示访问者要求了网站上全然没有的cmd.exe,root.exe或dir等文件。
日志文件中的一些条目经常反映了那些自动探测网站服务器漏洞的动作,多数来源于针对IIS网站服务器的蠕虫和恶意程序。
有时候也会发觉一些针对Apache的漏洞,因此为了保证Apache的正常运行,用户应保持经常更新Apache软件。