LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 578|回复: 0

Apache 服务器的全面监测

[复制链接]
发表于 2003-5-8 19:56:57 | 显示全部楼层 |阅读模式
一、模块简介
对于正式提供Web服务的系统来说,监视它的运行情况是非常重要的,比如我们必须监视内存和文件系统使用情况、系统负载、处理器利用率、交换分区空间是否足够,等等。只要能够对Web服务器运行的系统进行交互式访问(比如telnet、ssh或其他),所有这些任务都可以完成。但要完成这些任务并不轻松,因为一般的Unix工具都只能报告部分服务器信息。也就是说,我们不能同时查看整个系统的运行情况,除非同时打开了许多连接并让每个终端专门监视部分系统信息,否则我们就得在各个监视工具之间来回切换,需要进行繁琐的操作。
如果Apache服务器启用了mod_perl,我们可以利用一个专用的Apache::VMonitor模块同时监视大多数自己需要的系统信息。

Apache::VMonitor模块提供了比top(1)更优秀的监视功能。它不仅提供所有top(1)能够提供的信息,而且还包括所有Apache的mod_status模块提供的、专门有关Apache的信息,比如请求处理时间、最后请求的URI、每个子进程响应的请求数量,等等。此外,Apache::VMonitor模块模拟了top(1)、mount(1)、df(1)工具的报表功能;它具有视觉报警能力,并支持可配置的“自动刷新”模式;它供了一个Web界面,支持动态地显示或者隐藏各部分信息。

Apache::VMonitor模块支持的监视模式主要有以下两种:

多进程系统整体状态报告模式
单进程详细报告模式
二、需求与设置
要使用Apache::VMonitor,系统必须安装Apache::Scoreboard并已经在httpd.conf中正确配置,而Apache::Scoreboard又要求安装mod_status。要让Apache::VMonitor能够正常运行,mod_status必须启用扩展模式。为此,在httpd.conf文件中,必须加入:

ExtendedStatus On

  此外,系统中还必须安装有Time::HiRes和GTop。GTop又依赖于libgtop库,而后者在有些平台上不可用。请参见http://home-of-linux.org/gnome/l ... 必不可少的。

  要启用Apache::VMonitor模块,我们应该修改httpd.conf文件中的一个配置。如果我们在httpd.conf文件中加入下面的配置指令:

<Location /system/vmonitor> SetHandler perl-script PerlHandler Apache::VMonitor </Location>

此时,访问http://localhost/system/vmonitor ... 机进行验证:

<Location /system/vmonitor> SetHandler perl-script PerlHandler Apache::VMonitor order deny, allow deny from all allow from 132.123.123.3 </Location>

另外,我们还可以使用Apache提供的基本验证模式或其他验证模式,或者使用其他各种扩展模块。

在启动文件或者在<erl>区内配置下面介绍的这些变量,我们可以控制Apache::VMonitor模块的行为。

从httpd.conf文件装载Apache::VMonitor模块:

PerlModule Apache::VMonitor

或者从启动文件装载Apache::VMonitor模块:

use Apache::VMonitor();

在启动文件中调整下列配置参数,我们可以改变Apache::VMonitor的报告选项:

$Apache::VMonitor::Config{BLINKING} = 1; $Apache::VMonitor::Config{REFRESH} = 0; $Apache::VMonitor::Config{VERBOSE} = 0;

通过下列配置参数,我们能够控制该工具第一次打开时显示哪些部分的信息:

$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;

我们能够控制mod_perl进程报表的排序方式。mod_perl报表可以按照以下各列进行排序:“pid","mode","elapsed","lastreq","served","size","share","vsize","rss","client","request"。例如,如果要按照进程大小排序,则我们使用下列配置指令:

$Apache::VMonitor::Config{SORT_BY} = "size";

鉴于VMonitor提供监视非mod_perl进程的能力,我们可以设置正则表达式去匹配需要监视的进程。例如,如果要匹配带有httpd_docs、mysql以及squid字符串的进程名字,我们使用如下正则表达式:

$Apache::VMonitor:ROC_REGEX = join "\|", qw(httpd_docs mysql squid);

稍后我们将详细讨论所有这些配置选项以及它们对VMonitor行为的影响。

三、多进程系统整体状态报告模式
这种模式是我们主要使用的监视模式。在这种模式下,我们能够从同一个位置监视几乎所有重要的系统资源。为了方便起见,它允许我们关闭或者开启报表的各个部分,使得报表刚好能够显示在一个屏幕上。

多进程系统整体状态报告模式具有以下功能和特点:

▲ 自动刷新

我们可以让报表每隔数秒钟自动刷新。这个数值可以在服务器启动时预先设置。例如,如果要把刷新时间设置为60秒,则我们加入如下配置选项:

$Apache::VMonitor::Config{REFRESH} = 60;

0(零)值表示关闭自动刷新。

服务器启动后,刷新速度可以通过VMonitor应用的用户界面调整。

▲ top(1)模拟:系统状况报告

正如top(1),VMonitor显示当前的日期/时间、机器启动时间、平均负载以及所有系统CPU和内存的使用情况:CPU负载,实际内存、交换分区使用情况等。

系统信息区具有交换空间使用情况的视觉警报能力。我们知道,当系统用完了所有的RAM,它就开始把暂时不用的内存页转入速度较慢的交换分区,这种操作就称为交换操作。交换操作降低了整个系统的性能,最终有可能引起系统崩溃,在正式运行的系统上,我们应该尽可能地减少交换操作。VMonitor通过改变交换区信息行的颜色帮助我们监测异常情形。颜色按照如下规则改变:

交换区使用 报告颜色
5Mb < swap < 10 MB 淡红色
20% < swap (交换不是什么好事!) 红色
70% < swap (几乎全部用光!) 红色 + 闪烁(如果启用闪烁的话)

闪烁模式可以用如下指令打开:

$Apache::VMonitor::Config{BLINKING} = 1;

如果系统只使用了少量的交换区,VMonitor模块不会警报。这是因为在大多数Unix系统上,即使系统还有相当数量的空闲内存,也总是存在少量使用交换区的情况。

系统信息区默认显示。如果不想让系统信息区显示,则我们设置:

$Apache::VMonitor::Config{SYSTEM} = 0;

▲ top(1)模拟:Apache/mod_perl进程状态

就象真正的top(1)一样,接下来的就是一个有关进程的报表,但它只显示有关mod_perl进程的信息。

报表中包含了:进程的状态(如Starting,Reading,Sending,Waiting,等等),进程的ID,自从当前请求开始以来的时间,最后一个请求的处理时间,进程大小,共享、虚拟和驻留内存的大小。同时,它还显示了最后一个客户的IP地址以及它所请求的URI(只有64个字符,因为这是底层Apache核心库所保留的最大长度)。

在VMonitor运行期间,点击该报表的任意一个列就可以将报表按照该列排序。或者,报表的排序列也可以用如下配制指令预先设置:

$Apache::VMonitor::Config{SORT_BY} = "size";

排序列的合法选择包括:"pid","mode","elapsed","lastreq","served","size","share","vsize","rss","client","request"。

报表的合计部分报告了所有mod_perl进程合计使用的内存,其中包括内核报告的数字、额外数字。额外数字根据启用内存共享时对实际使用内存的估算得到。

注意,对于有些系统来说,这个合计数字可能不正确,所以使用这个数字的风险你得自负。我们已经在Linux操作系统上验证过这个数字,具体方法是先获得Apache::VMonitor报告的数字,然后关闭mod_perl并检查系统内存使用情况。结果显示出,系统内存占用的减少量大约相当于Apache::VMonitor报告的数字。

这些有关mod_perl进程的信息默认显示。如果你不想显示这部分信息,请设置:

$Apache::VMonitor::Config{APACHE} = 0;

▲ top(1)模拟:任意进程

正如mod_perl进程信息区,“任意进程”信息也按照top(1)风格显示。这部分信息默认不显示。要显示这部分信息,我们必须先设置:

$Apache::VMonitor::Config{PROCS} = 1;

  另外还要指定需要监视哪些进程,这里要用到一个匹配待监视进程名字的正则表达式。例如,如果要监视所有名字中带有http、mysql、squid字符串的进程,则我们使用如下正则表达式:

$Apache::VMonitor:ROC_REGEX = join "\|", qw(httpd mysql squid);

▲ mount(1)模拟

这部分报表数据显示已装载文件系统的信息,就如不带参数执行mount(1)一样。这部分信息默认不显示。要显示这些信息,我们必须设置:

$Apache::VMonitor::Config{MOUNT} = 1;

▲ df(1)模拟

这部分内容完整地模拟了df(1)的功能。对于每一个已经装载的文件系统,它将报告合计、可用磁盘块数量以及使用百分比。

此外,它还能够报告可用的、已经使用的文件inode(索引节)数量,包括其绝对数值和百分比。

这部分信息具有视觉警报的功能。警报在以下两种情况下触发:当某个文件系统空间利用率超过90%,或者可用的文件inode少于10%时。一旦这些事件发生,与该文件系统有关的数据行将以粗体、红色方式显示。如果开启了闪烁功能的话,装载点(Mount Point)目录将闪烁。闪烁选项可以按如下方式开启:

$Apache::VMonitor::Config{BLINKING} = 1;

df(1)信息默认显示。如果不想让df(1)的信息显示,则设置如下选项:

$Apache::VMonitor::Config{FS_USAGE} = 0;

▲ 缩写词提示

Apache::VMonitor的报表中有许多缩写词。如果我们按照如下设置启用VERBOSE模式,则“缩写词提示”的后面将列出所有缩写词的全称。

$Apache::VMonitor::Config{VERBOSE} = 1;

默认情况下,缩写词提示不显示。

四、单进程详细报告模式
点击进程的PID即可查看有关该进程的详细信息。

如果该进程是一个mod_perl进程,则VMonitor显示如下信息:

进程类型(子进程或父进程);进程状态(Starting,Reading,Sending,Waiting,等等);当前请求的处理时间,或者如果生成报告时进程不活动,则是最后一个请求的处理时间。
到目前为止已传输的字节数。每个子进程所处理的请求数量。
进程所占用的CPU时间:total,utime,stime,cutime,cstime。
  以下信息对于所有的进程(mod_perl进程和非mod_perl进程)都提供:

进程的一般信息:UID,GID,状态,TTY,命令行参数。
内存使用情况:Size,Share,VSize,RSS。
内存段使用情况:文本,共享库,数据和堆栈。
内存映像:start-end,offset,device_major:device_minor,inode,perm,库路径。
已装载的库的大小。
正如多进程模式,单进程详细报告模式也支持按指定的间隔自动刷新页面。


 

参考:

mod_perl网站的URL:http://perl.apache.org。
Time::HiRes:http://search.cpan.org/search?dist=Time-HiRes。
Apache::Scoreboard:http://search.cpan.org/search?dist=Apache-Scoreboard。
GTop:http://search.cpan.org/search?di ... 解更多信息。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表