IBM Support

IBM HTTP server for i的日志维护

Technical Blog Post


Abstract

IBM HTTP server for i的日志维护

Body

 在IBM HTTP server for i上有一整套功能完备的日志系统。按照各自用途的分类主要有以下几类:
(1) Error log
默认生成路径为/www/instance_name/logs/error_log。主要用于记录HTTP服务器运行过程中产生的错误信息,是排查问题时最重要的日志。
(2)Custom log
此类日志用于记录服务器接收到的每条HTTP请求的信息。可由用户自定义日志格式。对于使用IBM Web Administration for i的默认选项创建的HTTP实例,会自动为其配置一个名为access log的此类日志,其默认路径为/www/instance_name/logs/access_log。下文均以access log表示此类日志。
(3) Forensic log
用于法律分析的日志,同样是记录HTTP的请求。每条HTTP请求都会被分配一个唯一的ID,并且拥有严格和固定的格式。
通常HTTP服务器都需要长时间不间断的运行。如果缺乏有效的维护手段,那么各类日志文件的体积将会与日俱增(特别是access log与forensic log两类日志),最终将占用大量的空间而难以管理。因此本文将介绍对这些日志进行维护的一些技巧。
(一)限制单个日志文件的大小
在IBM Web Administration for i中选择一个HTTP实例,在左侧列表中点击"Logging"按钮。然后在右侧的"General Settings "选项卡中的Maximum log file size后指定单个日志文件的最大大小。该选项可以接受从0(无限制)到2GB的数值。当日志文件增大到该数值设定的大小后,将不会继续往其中写入数据。该选项对error log、access log和forensic log都具有效果。可以有效防止日志文件的无序增大。
 
图像 
(二)按周期生成日志
虽然方案(一)可以有效控制日志文件的增大,但仍然不是一个易于维护的方案。在实际应用中,我们通常会按一定的时间间隔生成新日志。从而可以在一定时期后删除旧的日志,而不影响新日志的工作。
同样是在"General Settings "选项卡中,在Log cycle后我们可以选择产生新日志文件的周期。对于日志产生频繁的服务器,可以选择Hourly方式每个小时产生一个新文件。如果请求数量不是太多的服务器,可以按“天”或者更长的周期生成。 
 
图像 
启用日志生成周期后,原来设定的日志文件名也会相应发生改变。例如在Daily方式下,如果原日志名设置为access_log的话,那么实际产生的日志成将会类似于access_log.Q112051200的形式。如下图所示: 
 图像 
通过周期日志的设置,管理员可以定期删除过期的日志,以控制日志文件的总大小。但是最智能的日志管理方式还需要配合第(三)点的技术来实现。* 无论是否启用日志周期,第(一)点中的文件大小限制依然对单个日志文件有效。
(三)智能自动删除日志
在IBM HTTP server for i上的每个HTTP实例都有一个每天按时启动一次的计时器。在启用该计时器后,可以在每天的某个整点的时间对日志进行定期的处理。我们可以在"General Settings "选项卡中的Specify hour of the day log maintenance occurs中指定每天几点钟触发日志整理操作。如下图所示:
 
 图像 
而在该计时器被触发时所执行的具体操作,则由LogMaint指令指定。我们以error log为例说明。同样是在Logging页面中,选择Error logs标签。可以看到两个输入项,分别是Expiration和Maximum cumulative size。 
 
图像 
Expiration表示生成日期超过设定天数的日志将被全部删除。而Maximum cumulative size则表示当当前日志的大小之和*超过设定数值后,将从最旧的日志开始依次删除,直到大小之和小于所设定的数值。显然,该功能必须配合第(二)点介绍的周期日志使用。
* 即errorlog.Q112051300、errorlog.Q112051400……等所有同类日志都会被放在一起计算总大小
通过设定这两个参数,再配合前面设定的计时器时间设定,我们便可以智能地自动删除过期日志。而且该功能支持所有可以按周期生成的日志类型。如果在标签页上找不到相应的日志类型,我们可以直接在配置文件中设置,例如对于logs/forensic_log,我们可以在配置文件中添加如下指令:
LogMaintHour 3
LogMaint logs/forensic_log 7 2000000
这样在每天3点的时候,HTTP服务器将对logs目录下的所有forensic_log.QCYYMMDDHH文件进行统计,删除所有7天前的日志,并对剩下的日志大小进行统计,删除最旧的日志直到大小总和小于2000000个字节。
* 对于Forensic log的支持需要相应的PTF SI45531(IBM i 6.1)/SI45532(IBM i 7.1)的支持。Group PTF SF99368-level14(i 7.1)以及SF99115-level26(i 6.1)中已经包含上述PTF。请确保机器满足这些要求。
我们建议对于频繁生成的日志文件(如access log与forensic log)启用智能日志管理,通过结合第二点介绍的“按周期生成日志”以及第三点介绍的“自动智能删除旧日志”,可以将日志文件的总体大小控制在一个设定的范围内,同时减少人工维护的成本。
 
作者: Xu Meng

[{"Business Unit":{"code":"BU009","label":"Systems - Cognitive"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":""}]

UID

ibm11145134