Sun ONE Web Server 6.1 管理员指南 |
第 10 章
使用日志文件您可以使用多种方法监视服务器的活动。本章介绍了通过记录和查看日志文件来监视服务器的方法。有关使用内置性能监视服务、服务质量功能或 SNMP 的信息,请参见监视服务器。
本章包括以下部分:
关于日志文件服务器日志文件记录服务器的活动。使用这些日志可以监视服务器,并在诊断错误时为您提供帮助。错误日志文件(位于服务器根目录中的 https-server_name/logs/errors 下)列出了服务器曾产生的所有错误。访问日志(位于服务器根目录中的 https-server_name/logs/access 下)记录了有关对服务器的请求以及服务器响应的信息。您可以配置 Sun ONE Web Server access 日志文件中记录的信息。使用日志分析程序可以生成服务器统计数据。通过归档可以将服务器的错误日志文件和访问日志文件进行备份。
UNIX 和 Windows 平台上的日志本节介绍如何创建日志文件。此外,还包括以下主题:
默认错误日志
在 UNIX 和 Windows 平台上,Administration Server 的日志存储在该服务器的 https-admserve/logs/ 目录下。服务器实例的日志存储在 https-server_name/logs/ 目录下。
可以设置整个服务器的默认日志级别,还可以将 stdout 和 stderr 重定向到服务器的事件日志以及将日志输出定向到操作系统的系统日志。此外,还可以将 stdout 和 stderr 内容定向到服务器的事件日志。默认情况下,日志消息除了发送到指定的服务器日志文件以外,还将发送到 stderr。
另一个可用的功能是使用日志消息记录虚拟服务器 ID。当使用多个虚拟服务器将消息记录到同一个日志文件时,此功能很有用。可以选择将日志消息写入系统日志。执行此操作时,不会在错误日志文件中进行日志记录,而是使用 UNIX 中的 syslog 日志服务或 Windows 平台上的系统日志服务来生成和管理日志。
还可以使用 server.xml 的属性来控制此文件的内容。有关 server.xml 文件的详细信息,请参见《Sun ONE Web Server 6.1 Administrator's Configuration File Reference》。
使用 syslog 记录日志
syslog 适用于要求集中记录日志的稳定的可操作环境。在需要经常查看日志输出以进行诊断和调试的环境中,设置一个服务器实例或虚拟服务器日志可能比较容易管理。
通过将 syslog 日志文件与 syslogd 以及系统日志守护程序一起使用,可以将 syslog.conf 文件配置为:
因为将日志记录到 syslog 意味着 Sun ONE Web Server 以及其它守护程序应用程序的日志都存储在同一个文件中,所以日志消息中增加了以下信息,以便标识来自特定服务器或虚拟服务器实例中专用于 Sun ONE Web Server 的消息:
可以在 server.xml 文件中为 Administration Server 和服务器实例配置 LOG 元素。
要获得有关 UNIX 操作环境所使用的 syslog 记录机制的详细信息,请在出现终端提示后使用以下手册命令:
man syslog
man syslogd
man syslog.conf
使用 Windows 事件日志记录日志
有关 Windows 操作环境所使用的事件日志机制的详细信息,请在 Windows 帮助系统索引中查找关键字“事件日志”。
日志级别下表按严重程度升序定义了 Sun ONE Web Server 中的日志级别和消息。
关于虚拟服务器和日志Sun ONE Web Server 可以拥有虚拟服务器实例。Sun ONE Web Server 实例中的每个虚拟服务器都具有自己的标识,也可以具有自己的日志文件。可以使用每台虚拟服务器的单个日志文件追踪特定事务和资源的服务器活动。
也可以将来自多台虚拟服务器的日志消息定向到一个服务器日志文件。执行此操作时,用户可能需要启用 logvsid(位于 server.xml 文件中的 LOG 元素内)。这有助于区分来自不同虚拟服务器的日志消息。
<SERVER>
...
<LOG file="/export//https-iws-files2.red.iplanet.com/logs/errors" loglevel="finest" logtoconsole="true" usesyslog="false" createconsole="false" logstderr="true" logstdout="true" logvsid="true"/>
</SERVER>
在本示例中,<LOG logvsid="true"> 的作用是将虚拟服务器 ID 包含在每个日志消息中。这样可以区分来自不同虚拟服务器的消息。如果 VS 元素中不包含 errorlog 属性,那么所有虚拟服务器上的消息都将记录到一个文件中。
重定向应用程序和服务器日志输出对于开发者来说,在进行 Web 应用程序组件和 J2EE 应用程序的部件测试时,可以随时访问应用程序日志和服务器日志非常重要。在 Windows 平台上,开发者更希望看到日志消息显示在桌面命令窗口中。在 UNIX 平台上,只需将日志消息分发到从中启动了服务器实例的终端窗口中的 stderr,或在命令结尾处使用 -f 就可以查看写入日志文件的日志消息给许多开发者带来了很大的方便。
server.xml 文件中包含了可以为 stdout 和 stderr 设置的属性,以将日志消息定向到日志文件或终端窗口等位置。有关使用 stdout 和 stderr 的详细信息,请参见《Sun ONE Web Server 6.1 Administrator's Configuration File Reference》。
归档日志文件可以将访问日志文件和错误日志文件设置为自动归档。在某一时间或在指定的时间间隔后,用户的日志将被轮转。Sun ONE Web Server 将保存旧的日志文件,并使用包含保存日期和时间的名称标记所保存的文件。
例如,可以将访问日志文件设置为每小时轮转一次,而 Sun ONE Web Server 将保存该文件并将其命名为 access.200307152400,其中将日志文件名、年月日和 24 小时制时间连接起来组合成一个字符串。根据所设置的日志轮转类型,日志归档文件的实际格式会有所不同。
Sun ONE Web Server 为归档文件提供了两种日志轮转类型:内部守护程序日志轮转和基于守护程序的日志轮转。
内部守护程序日志轮转
此类型的日志轮转发生在 HTTP 守护程序内,且只能在启动时进行配置。使用内部守护程序日志轮转,服务器可以在内部轮转日志,而无需重新启动。使用此方法轮转的日志将被保存为以下格式:
access.<YYYY><MM><DD><HHMM>
error.<YYYY><MM><DD><HHMM>
可以指定用来轮转日志文件和开始新日志文件的基准时间。例如,如果轮转开始时间为 12:00 a.m.,并且轮转间隔为 1440 分钟(一天),那么当您保存并应用更改时,系统将立即创建一个新的日志文件,而不管当前的时间。日志文件在每天的 12:00 a.m. 进行轮转,而访问日志将被标记为 12:00 a.m. 并保存为 access.200307152400。同样,如果将间隔设置为 240 分钟(4 小时),开始时间为 12:00 a.m.,则访问日志文件将包含从 12:00 a.m. 到 4:00 a.m.,从 4:00 a.m. 到 8:00 a.m. 等时间段内收集到的信息。
如果启用了日志轮转,将在服务器启动时开始进行日志文件轮转。第一个要轮转的日志文件将收集从当前时间至下次轮转时间之间的信息。以上一个例子为例,如果将开始时间设置为 12:00 a.m.,并将轮转间隔设置为 240 分钟,而当前的时间为 4:00 a.m.,则第一个要轮转的日志文件将包含从 4:00 a.m. 至 8:00 a.m. 之间收集到的信息,下一个日志文件将包含 8:00 a.m. 至 12:00 p.m.(中午)的信息,并依此类推。
基于调度程序的日志轮转
此类型的日志轮转将基于存储在 scheduler.conf 文件中的时间(该文件位于 server_root/https-admserv/config/ 目录下)。此方法可用于将日志文件立即归档,或使服务器在特定日期中的特定时间将日志文件归档。服务器的调度程序配置选项存储在 schedulerd.conf 文件中(位于 server_root/https-admserv/config/ 目录下)。使用基于调度程序的方法轮转的日志将被保存为以下格式:
<original_filename>.<YYYY><MM><DD><HHMM>
例如,当在 4:30 p.m. 轮转文件时,access 将变成 access.200307151630。
日志轮转在服务器启动时进行初始化。如果开启了轮转,Sun ONE Web Server 将创建一个用时间标记的访问日志文件并在服务器启动时开始进行轮转。
轮转开始以后,如果存在需要记录到访问日志文件或错误日志文件的请求或错误,Sun ONE Web Server 将在预先调度的“下次轮转时间”之后创建用新时间标记的日志文件。
要将日志文件归档以及指定是采用内部守护程序方法还是采用基于调度程序的方法,请使用 Server Manager 中的“Archive Log Files”页面。
设置访问日志首选项在安装过程中,将为服务器创建名为 access 的访问日志文件。通过指定是否记录访问、记录时使用的格式,以及当客户机访问资源时服务器是否要查找客户机的域名,用户可以自定义任意资源的访问日志。
要将 %vsid% 添加到日志文件格式字符串:
更改现有日志文件的格式时,应首先删除/重命名现有的日志文件,也可以使用不同的文件名。
服务器访问日志可以使用通用日志文件格式、灵活日志格式或用户可自定义的格式。通用日志文件格式是普遍受支持的格式,可提供服务器的固定信息。灵活日志格式使您可以选择(从 Sun ONE Web Server)要记录的内容。可自定义的格式使用参数块,用户可以指定这些参数块来控制记录的内容。有关可自定义的格式参数的列表,请参见《NSAPI Programmer's Guide》。
创建某个资源的访问日志后,将无法更改日志的格式,除非对它进行归档或为该资源创建一个新的访问日志文件。
您可以使用 Server Manager 中的“Access Log Preferences”页面来指定日志首选项,也可以手动配置 obj.conf 文件中的以下指令。在 magnus.conf 中,服务器将调用函数 flex-init 初始化灵活日志系统,并调用函数 flex-log 以灵活日志格式记录专用于请求的数据。要使用通用日志文件格式记录请求,服务器将调用 init-clf 初始化通用日志子系统(该子系统在 obj.conf 中使用),并调用 common-log 以通用日志格式(大多数 HTTP 服务器采用的格式)记录专用于请求的数据。
有关 NSAPI 日志函数(包括有效的指令和参数)的详细信息,请参见《NSAPI Programmer's Guide》。
简易 Cookie 日志
使用 flexlog 功能,Sun ONE Web Server 可以很容易地记录特定的 cookie。将“Req->headers.cookie.cookie_name”添加到初始化 flex-log 子系统(位于配置文件 obj.conf 中)的行中。如果 cookie 变量存在于请求标头中,将记录 cookie 变量 cookie_name 的值;如果变量不存在,将记录“-”。
设置错误日志选项Sun ONE Web Server 6.1 使您可以配置要记录到服务器错误日志中的信息。
对于 Administration Server 实例
对于服务器实例
配置 LOG 元素下表说明了可以在 server.xml 文件中配置的 LOG 元素:
查看访问日志文件您可以查看服务器的活动访问日志文件和已归档的访问日志文件。
要从 Administration Server 查看其访问日志,请依次选择“Preferences”选项卡和“View Access Log”页面。
要从 Server Manager 查看服务器实例的访问日志,请依次选择“Logs”选项卡和“View Access Log”页面。
要从 Class Manager 查看单个虚拟服务器的访问日志,请先从突出显示的“Manage Virtual Servers”页面中选择要管理的虚拟服务器,然后在“Virtual Server Manager”页面上单击“Access Log”标题下的链接。您可以指定要查看的条目数或具有所选条件限定词的条目数。
以下是使用通用日志文件格式的访问日志的示例(此格式在“Log Preferences”窗口中指定,详细信息请参见设置访问日志首选项):
表 10-3 说明了此样例访问日志中的最后一行。
表 10-3
样例访问日志文件中最后一行的字段访问日志字段
示例
客户机的主机名或 IP 地址
arrow.a.com。(在这种情况下,显示主机名是因为启用了进行 DNS 查找的 Web 服务器设置;如果禁用了 DNS 查找,将显示客户机的 IP 地址。)
RFC 931 信息
-(RFC 931 标识未实现)
用户名
john(客户输入的用于验证的用户名)
请求的日期/时间
29/Mar/1999:4:36:53 -0800
请求
GET /help
协议
HTTP/1.0
状态代码
401
传送的字节数
571
以下是使用灵活日志格式的访问日志的示例(此格式在“Log Preferences”页面中指定,详细信息请参见设置访问日志首选项):
wiley.a.com - - [25/Mar/2001:12:55:26 -0800] "GET /index.htm HTTP/1.0" "GET" "/?-" "HTTP/ 1.0" 304 0 - Mozilla/2.0 (WinNT; I)
wiley.a.com - - [25/Mar/2001:12:55:26 -0800] "GET / HTTP/1.0" "GET" "/?-" "HTTP/1.0" 304 0 - Mozilla/2.0 (WinNT; I)
wiley.a.com - - [25/Mar/2001:12:55:26 -0800] "GET / HTTP/1.0" "GET" "/?-" "HTTP/1.0" 304 0 - Mozilla/2.0 (X11; I; IRIX 5.3 IP22)
查看错误日志文件错误日志文件中包含该文件创建以来服务器发生的错误;还包含有关服务器的提示性信息(例如服务器的启动时间)。失败的用户验证也记录在此错误日志中。使用错误日志可以查找中断的 URL 路径或丢失的文件。
要从 Administration Server 查看其错误日志文件,请依次选择“Preferences”选项卡和“View Error Log”页面。
要从 Server Manager 查看服务器实例的错误日志文件,请依次选择“Logs”选项卡和“View Error Log”页面。
要从 Class Manager 查看单个虚拟服务器的错误日志,请先从突出显示的“Manage Virtual Servers”页面中选择要管理的虚拟服务器,然后在“Virtual Server Manager”页面上单击“Error Log”标题下的链接。您可以指定要查看的条目数或具有所选条件限定词的条目数。
以下是两个有关错误日志中条目的示例:第一个示例中显示的是一条表明服务器成功启动的提示性信息,第二个示例表明的是客户机 wiley.a.com 对文件 report.html 进行请求,但是该文件却未在服务器的主文档目录下。
[[22/Jan/2001:14:31:41] info (39700):successful server startup [22/Jan/2001:14:31:41] info (39700):SunONE-WebServer/6.1 BB1-01/22/2001 01:45
[22/Jan/2001:14:31:42] warning (13751):for host wiley.a.com trying to GET /report.html, send-file reports:can't find /usr1/irenem/ES60-0424/docs/report.html (File not found)
运行日志分析程序server-root/extras/log_anly 目录中包含通过 Server Manager 用户界面运行的日志分析工具。此日志分析程序仅分析通用日志格式的文件。log_anly 目录下的 HTML 文档中介绍了此工具的参数。server-root/extras/flex_anlg 目录中包含灵活日志文件格式的命令行日志分析程序。但在默认情况下,Server Manager 使用灵活日志文件报告工具,而不管您是否选择了通用日志文件格式或灵活日志文件格式。
使用日志分析程序可以生成有关默认服务器的统计数据,例如活动摘要、最常访问的 URL、一天中访问服务器的高峰时段等等。可以从 Sun ONE Web Server 或命令行运行日志分析程序。除了可以生成默认服务器的统计数据以外,日志分析程序不能生成任何虚拟服务器的统计数据。但是,可以查看每个虚拟服务器的统计数据,如查看访问日志文件中所述。
在尝试运行 flexanlg 命令行实用程序之前必须设置库路径。各种平台的设置如下所示:
Solaris 和 Linux:
LD_LIBRARY_PATH=server_root/bin/https/lib:$LD_LIBRARY_PATH
AIX:
LIBPATH=server_root/bin/https/lib:$LIBPATH
HP-UX:
SHLIB_PATH=server_root/bin/https/lib:$SHLIB_PATH
Windows:
path=server_root\bin\https\bin;%path%
注意 在运行日志分析程序之前,应将服务器日志归档。有关将服务器日志归档的详细信息,请参见归档日志文件。
要从 Server Manager 运行日志分析程序,请执行以下步骤:
有关详细信息,请参见联机帮助中的“Generate Report”页面。
要从命令行分析访问日志文件,请运行工具 flexanlg(位于目录 server-install/extras/flex_anlg 下)。
要运行 flexanlg,请在出现命令提示后键入以下命令和选项:
flexanlg [ -P ] [-n name] [-x] [-r] [-p order] [-i file]* [ -m metafile ]* [ o file][ c opts] [-t opts] [-l opts]
下面将介绍语法。
flexanlg -h.):
-P:代理日志格式 默认值:no
-n servername:服务器的名称
-x:HTML 中的输出 默认值:no
-r:将 IP 地址解析到主机名 默认值:no
-p [c,t,l]:输出顺序(计数、时间统计和列表) 默认值:ctl
-i filename:输入日志文件 默认值:none
-o filename:输出日志文件 默认值:stdout
-m filename:元文件 默认值:none
-c [h,n,r,f,e,u,o,k,c,z]:对这些项目进行计数 - 默认值:hnreuokc
h:找到的总数
n:304 未修改的状态代码(使用本地副本)
r:302 找到的状态代码(重定向)
f:404 未找到的状态代码(未找到文档)
e:500 服务器错误状态代码(配置错误)
u:唯一 URL 的总数
o:唯一主机的总数
k:传送的千字节总数
c:高速缓存中保存的千字节总数
z:不对任何项目进行计数
-t [sx,mx,hx, xx,z]:查找常规统计数据 - 默认值:s5m5h24x10
s(数目):查找日志的最大(数目)秒钟数
m(数目):查找日志的最大(数目)分钟数
h(数目):查找日志的最大(数目)小时数
u(数目):查找日志的最大(数目)用户数
a(数目): 查找日志的最大(数目)用户代理数
r(数目):查找日志的最大(数目)参考数
x(数目):查找最大(数目)的杂项关键字
z:不查找任何常规统计数据
-l [cx,hx]:创建列表 - 默认值:c+3h5
c(x,+x):最常访问的 URL
(x:仅列出 x 项)
(+x:仅当访问超出 x 次时列出)
h(x,+x):最常访问用户服务器的主机(或 IP 地址)
(x:仅列出 x 项)
(+x:仅当访问超出 x 次时列出)
z:不创建任何列表
查看事件 (Windows)除了将错误记录到服务器错误日志之外(请参见查看错误日志文件),Sun ONE Web Server 还将严重的系统错误记录到事件查看器中。事件查看器可用于监视系统中发生的事件。在打开错误日志之前,可以使用事件查看器查看因基础配置问题而引起的错误。
要使用事件查看器,请执行以下步骤: