如何分析和解读ApacheWeb服务器日志?这些日志包含Apache处理和响应的HTTP请求等信息,以及特定于Apache的其他活动。分析日志是管理Apache并确保其按预期运行的重要部分。本文将描述Apache中的各种日志记录选项以及如何解释该日志数据。您将了解如何分析Apache生成的日志以及如何配置日志设置,以便为您提供有关Apache正在执行的操作的最准确数据。在本教程中,您将学习:配置和理解ApacheWeb服务器日志什么是Apache日志级别?Apache日志格式及其含义是如何解释的?最常见的Apache日志配置文件有哪些?如何扩展日志配置以包括取证分析数据?图1软件要求和使用的约定软件要求和Linux命令行约定类别要求、使用的约定或软件版本系统Ubuntu、Debian、CentOS、RHEL和Fedora软件ApacheWebserver其他Linux系统作为root用户或通过sudo命令特权访问约定#-要求给定的linux命令以root权限执行,直接作为root,或使用sudo命令$-要求给定的linux命令作为普通的非特权执行Apache日志文件的用户和Apache生成两个不同日志文件的位置:access.log存储有关连接到Apache的所有入站请求的信息。每当用户访问您的网站时,都会记录在这里。用户请求的每个页面也被记录为一个单独的条目。error.log存储有关Apache在其整个操作过程中遇到的错误的信息。理想情况下,这个文件应该是相对空的。图2.UbuntuLinux服务器上的Apache默认日志记录配置。日志文件的位置可能取决于您运行的Apache版本以及您使用的Linux发行版。您还可以将Apache配置为将这些文件存储在默认位置以外的其他位置。不过默认情况下,您应该能够在这些目录之一中找到访问和错误日??志:/var/log/apache//var/log/apache2//etc/httpd/logs/ApachelogformatApacheletsyouCustomizewhatinformation被记录以及每个日志条目是如何显示的,我们将在后面介绍。Apache用于显示日志条目的常用格式是:"%h%l%u%t\"%r\"%>s%O\"%{Referer}i\"\"%{User-Agent}i\""格式解释如下:%h–客户端的IP地址。%l–这是客户端上的“identd”以识别它。该字段通常为空并显示为连字符。%u–如果使用HTTP身份验证,则为客户端的用户ID。如果未使用,日志条目将不会显示该字段的任何内容。%t–日志条目的时间戳。\%r\–客户端的请求行。这将显示使用了什么HTTP方法(例如GET或POST)、请求了什么文件以及使用了什么HTTP协议。%>s–返回给客户端的状态码。代码4xx(如404,PageNotFound)表示客户端错误,代码5xx(如500,InternalServerError)表示服务器错误。其他数字表示成功(如200,OK)或类似重定向(如301,永久删除)。%O–请求的文件大小(包括标题),以字节为单位。\"%{Referer}i\"–Referer链接,如果适用。这告诉您用户如何导航到您的页面(从内部或外部链接)。\"%{User-Agent}i\"–这包含有关连接客户端的Web浏览器和操作系统的信息。访问日志中的典型条目如下所示:10.10.220.3--[17/Dec/2019:23:05:32-0500]"GET/products/index.phpHTTP/1.1"2005015"http://example.com/products/index.php""Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/79.0.3945.79Safari/537.36"错误日志简单、直观且易于理解。这是典型条目的样子:[MonDec1606:29:16.6137892019][php7:error][pid2095][client10.10.244.61:24145]script'/var/www/html/settings.php'notfoundorunabletostat这是为了查看访问者遇到的情况这是了解有多少404错误的好方法,可以帮助您找到网站上的一些损坏链接。更重要的是,它可以提醒您缺少资源或潜在的服务器问题。上面的示例显示了一个请求但丢失的*.php页面。Apache日志配置Apache的日志可以通过多个配置文件灵活定制和调整。在Ubuntu和Debian上,Apache日志的主要配置文件位于:/etc/apache2/apache2.conf由于您可以从单个Apache实例运行多个网站(称为虚拟主机),因此您也可以配置每个网站,有单独的访问和错误日??志。要定义这些单独的日志文件应如何命名以及它们应保存在何处,请配置此文件:/etc/apache2/sites-available/000-default.conf在CentOS、RHEL和Fedora上,这两个配置文件位于这里:/etc/httpd/conf/httpd.conf/etc/httpd/conf.d/(在这个目录下放置额外的VirtualHost配置)loginstructions这些文件中有几个可配置的指令,但是如果你想定制Apache的日志,你应该注意这些主要说明:CustomLog--定义访问日志文件的存储位置。ErrorLog–定义错误日志文件的存储位置。LogLeve–定义必须记录的事件的严重程度(详情如下)。LogFormat–定义访问日志中每个条目的格式(详情如下)。LogLevel默认设置为警告,这意味着它在遇到警告情况或更严重的情况时写入错误日志。如果错误日志中充斥着无害的警告消息,您可以将级别提高到错误,以便只报告错误或更严重的问题。其他选项包括(按严重程度排序)crit、alert和emerg。Apache建议至少使用暴击级别。出于调试目的,您可以暂时将LogLevel设置为调试,但要注意:您最终可能会在错误日志中看到大量条目。LogFormat允许您调整访问日志中条目的外观。如果您发现access.log中的示例条目(来自上面的Apache日志格式部分)有点令人困惑,请不要感到惊讶。Apache允许您自定义日志条目的格式,使事情变得更明智。您还可以使用此自定义来排除某些可能不相关的信息。Apache日志模块到目前为止,我们在本文中展示的日志配置与mod_log_configApache模块相关。要进一步扩展日志记录功能,您可以将其他日志记录模块加载到Apache中。这可以提供默认设置不可用的附加功能。mod_log_forensic在请求之前开始记录(当第一次收到标头时),并在请求之后再次记录。这意味着为每个请求创建两个日志条目,允许管理员更精确地测量响应时间。使用CustomLog指令定义取证分析日志的位置。例如:CustomLog${APACHE_LOG_DIR}/forensic.logforensicmod_logio记录每个请求发送和接收的字节数。它提供非常准确的信息,因为它还计算每个请求的标头和文字中的数据,以及SSL/TLS加密连接所需的其他数据。将%I和O%占位符添加到LogFormat指令的末尾,以便可以使用此模块提供的额外数据。还有其他模块,这些只是两个最有用的模块。结论本文描述了如何分析和解释Apache的访问和错误日??志。还介绍了如何在Apache配置文件中自定义日志,让日志数据更加准确。有了这些知识,您就可以更快地隔离和解决Apache问题。请记住,Apache的日志记录功能可以通过附加的日志记录模块进一步增强,但这仅在需要高级调试的极少数情况下才有必要。原标题:HowtoanalyzeandinterpretApacheWebserverLog,作者:KorbinBrown
