Apache服务器的全面监测
一、模块简介class=content>对于正式提供Web服务的系统来说,监视它的运行情况是非常重要的,比如我们必须监视内存和文件系统使用情况、系统负载、处理器利用率、交换分区空间是否足够,等等。只要能够对Web服务器运行的系统进行交互式访问(比如telnet、ssh或其他),所有这些任务都可以完成。但要完成这些任务并不轻松,因为一般的Unix工具都只能报告部分服务器信息。也就是说,我们不能同时查看整个系统的运行情况,除非同时打开了许多连接并让每个终端专门监视部分系统信息,否则我们就得在各个监视工具之间来回切换,需要进行繁琐的操作。
class=content>如果Apache服务器启用了mod_perl,我们可以利用一个专用的Apache::VMonitor模块同时监视大多数自己需要的系统信息。
class=content>Apache::VMonitor模块提供了比top(1)更优秀的监视功能。它不仅提供所有top(1)能够提供的信息,而且还包括所有Apache的mod_status模块提供的、专门有关Apache的信息,比如请求处理时间、最后请求的URI、每个子进程响应的请求数量,等等。此外,Apache::VMonitor模块模拟了top(1)、mount(1)、df(1)工具的报表功能;它具有视觉报警能力,并支持可配置的“自动刷新”模式;它供了一个Web界面,支持动态地显示或者隐藏各部分信息。
Apache::VMonitor模块支持的监视模式主要有以下两种:
* 多进程系统整体状态报告模式
* 单进程详细报告模式
二、需求与设置
class=content>要使用Apache::VMonitor,系统必须安装Apache::Scoreboard并已经在 httpd.conf中正确配置,而Apache::Scoreboard又要求安装mod_status。要让Apache::VMonitor能够正常运行,mod_status必须启用扩展模式。为此,在httpd.conf文件中,必须加入:
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-TOP-COLOR: #000000"
width="80%">
ExtendedStatus On
class=content>
此外,系统中还必须安装有Time::HiRes和GTop。GTop又依赖于libgtop库,而后者在有些平台上不可用。请参见
href="http://home-of-linux.org/gnome/libgtop/"
target=_blank>http://home-of-linux.org/gnome/libgtop/了解更多信息。当然,Apache服务器上的mod_perl模块也是必不可少的。
class=content>
要启用Apache::VMonitor模块,我们应该修改httpd.conf文件中的一个配置。如果我们在httpd.conf文件中加入下面的配置指令:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
<Location /system/vmonitor> SetHandler
perl-script PerlHandler Apache::VMonitor
</Location>
class=content>此时,访问http://localhost/system/vmonitor即可打开VMonitor监视器。通常,我们必须保护http://localhost/system/vmonitor这个位置,禁止其他用户访问。如果我们总是从同一个IP地址访问这个URL,则只需根据主机进行验证:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
<Location /system/vmonitor> SetHandler
perl-script PerlHandler Apache::VMonitor order deny, allow
deny from all allow from 132.123.123.3
</Location>
另外,我们还可以使用Apache提供的基本验证模式或其他验证模式,或者使用其他各种扩展模块。
class=content>在启动文件或者在<Perl>区内配置下面介绍的这些变量,我们可以控制Apache::VMonitor模块的行为。
从httpd.conf文件装载Apache::VMonitor模块:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
PerlModule Apache::VMonitor
或者从启动文件装载Apache::VMonitor模块:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
use Apache::VMonitor();
在启动文件中调整下列配置参数,我们可以改变Apache::VMonitor的报告选项:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
$Apache::VMonitor::Config{BLINKING} = 1;
$Apache::VMonitor::Config{REFRESH} = 0;
$Apache::VMonitor::Config{VERBOSE} = 0;
通过下列配置参数,我们能够控制该工具第一次打开时显示哪些部分的信息:
borderColorDark=#ffffff cellPadding=5 cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
$Apache::VMonitor::Config{SYSTEM} = 1;
$Apache::VMonitor::Config{APACHE} = 1;
$Apache::VMonitor::Config{PROCS} = 1;
$Apache::VMonitor::Config{MOUNT} = 1;
$Apache::VMonitor::Config{FS_USAGE} = 1;
class=content>我们能够控制mod_perl进程报表的排序方式。mod_perl报表可以按照以下各列进行排序:“pid", "mode","elapsed","lastreq","served","size","share","vsize","rss", "client","request"。例如,如果要按照进程大小排序,则我们使用下列配置指令:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
$Apache::VMonitor::Config{SORT_BY} =
"size";
class=content>鉴于VMonitor提供监视非mod_perl进程的能力,我们可以设置正则表达式去匹配需要监视的进程。例如,如果要匹配带有httpd_docs、mysql以及squid字符串的进程名字,我们使用如下正则表达式:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
$Apache::VMonitor::PROC_REGEX = join "\|",
qw(httpd_docs mysql squid);
稍后我们将详细讨论所有这些配置选项以及它们对VMonitor行为的影响。
三、多进程系统整体状态报告模式
class=content>这种模式是我们主要使用的监视模式。在这种模式下,我们能够从同一个位置监视几乎所有重要的系统资源。为了方便起见,它允许我们关闭或者开启报表的各个部分,使得报表刚好能够显示在一个屏幕上。
多进程系统整体状态报告模式具有以下功能和特点:
▲ 自动刷新
class=content>我们可以让报表每隔数秒钟自动刷新。这个数值可以在服务器启动时预先设置。例如,如果要把刷新时间设置为60秒,则我们加入如下配置选项:
cellSpacing=0
style="BORDER-BOTTOM-COLOR: #000000; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #000000"
width="80%">
$Apache::VMonitor::Config{REFRESH} =
60;
0(零)值表示关闭自动刷新。
服务器启动后,刷新速度可以通过VMonitor应用的用户界面调整。
▲ top(1)模拟:系统状况报告
class=content>正如top(1),VMonitor显示当前的日期/时间、机器启动时间、平均负载以及所有系统CPU和内存的使用情况:CPU负载,实际内存、交换分区使用情况