我正在尝试诊断一个奇怪的服务器崩溃问题(服务器响应ping,但在重新启动之前将不接受SSH连接。0%CPU),重新启动服务器可使一切恢复正常。我想让我的Apache访问日志(或其他一些日志)包含崩溃发生时已经提出的所有请求,但是不幸的是Apache直到完成后才记录请求。这意味着,如果请求使服务器崩溃,则该请求将永远不会完成,因此不会显示在日志中。
有什么方法可以配置Apache以创建一个在请求到达时写入日志文件?
我正在尝试诊断一个奇怪的服务器崩溃问题(服务器响应ping,但在重新启动之前将不接受SSH连接。0%CPU),重新启动服务器可使一切恢复正常。我想让我的Apache访问日志(或其他一些日志)包含崩溃发生时已经提出的所有请求,但是不幸的是Apache直到完成后才记录请求。这意味着,如果请求使服务器崩溃,则该请求将永远不会完成,因此不会显示在日志中。
有什么方法可以配置Apache以创建一个在请求到达时写入日志文件?
Answers:
我认为您需要法医记录,请参阅以下链接:http : //httpd.apache.org/docs/current/mod/mod_log_forensic.html
片段:
取证日志格式:
每个请求被记录两次。第一次是在进一步处理之前(即,在收到标头之后)。在发生正常日志记录的同时,在请求处理之后写入第二个日志条目。
为了识别每个请求,分配了唯一的请求ID。可以使用%{forensic-id} n格式字符串在正常传输日志中交叉记录此取证ID。如果您使用的是mod_unique_id,则将使用其生成的ID。
第一行记录取证ID,请求行和所有接收到的标头,以竖线字符(|)分隔。样例行如下所示(全部一行):
+ yQtJf8CoAB4AAFNXBIEAAAAA | GET /manual/de/images/down.gif HTTP / 1.1 |主机:localhost%3a8080 |用户代理:Mozilla / 5.0(X11; U; Linux i686; en-US; rv%3a1.6)Gecko / 20040216 Firefox / 0.8 | Accept:image / png等...
开头的加号表示这是此请求的第一条日志行。第二行只包含一个减号和ID:
-yQtJf8CoAB4AAFNXBIEAAAAA
check_forensic脚本将日志文件的名称作为其参数。它查找那些+/- ID对,并在请求未完成时进行投诉。