以下工具可用于进行监视:
immonitor-access 监视以下 Messaging Server 组件/进程的状态:邮件传送(SMTP 服务器)、邮件访问和存储(POP 和 IMAP 服务器)、目录服务(LDAP 服务器)和 HTTP 服务器。此实用程序可测定各种服务的响应时间,以及发送和检索邮件所需的总的往返时间。目录服务是通过在目录中查找指定的用户并测定响应时间来监视的。邮件传送是通过发送邮件 (SMTP) 来监视的,而邮件访问和存储是通过检索邮件来监视的。对 HTTP 服务器的监视限于查看它是否已启动并正在运行。
有关完整的说明,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“immonitor-access”。
stored 实用程序执行服务器上的维护任务,也可以执行监视任务。但是,现在 msprobe 能更好地处理处理监视任务。请参见使用 msprobe 和 watcher 功能进行监视。
此实用程序提供了从不同系统计数器获得的统计信息。下面是可用计数器对象的当前列表:
每个条目都表示一个计数器对象,并且为该对象提供了各种有用的计数。在本节中,我们将仅讨论 alarm、diskusage、serverresponse、db_lock、popstat、imapstat 和 httpstat 计数器对象。有关 counterutil 命令的用法的详细信息,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“counterutil”。
counterutil 有多种标志。此实用程序的命令格式可能为:
counterutil -o CounterObject -i 5 -n 10
其中,
-o CounterObject 表示计数器对象 alarm、diskusage、serverresponse、db_lock、popstat、imapstat 和 httpstat。
-i 5 指定时间间隔为 5 秒。
-n 10 表示重复次数(默认值:无穷大)。
以下是 counterutil 的用法示例:
# counterutil -o imapstat -i 5 -n 10 Monitor counteroobject (imapstat) registry /gotmail/iplanet/server5/msg-gotmail/counter/counter opened counterobject imapstat opened count = 1 at 972082466 rh = 0xc0990 oh = 0xc0968 global.currentStartTime [4 bytes]: 17/Oct/2000:12:44:23 -0700 global.lastConnectionTime [4 bytes]: 20/Oct/2000:15:53:37 -0700 global.maxConnections [4 bytes]: 69 global.numConnections [4 bytes]: 12480 global.numCurrentConnections [4 bytes]: 48 global.numFailedConnections [4 bytes]: 0 global.numFailedLogins [4 bytes]: 15 global.numGoodLogins [4 bytes]: 10446 ... |
以下警报统计信息指的是由 stored 发送的警报。警报计数器可以提供以下统计信息:
表 23–1 counterutil alarm 统计信息
后缀 |
说明 |
---|---|
alarm.countoverthreshold |
超出阈值的次数。 |
alarm.countwarningsent |
发送的警告数。 |
alarm.current |
当前监视的值。 |
alarm.high |
所记录的最高值。 |
alarm.low |
所记录的最低值。 |
alarm.timelastset |
上次设置当前值的时间。 |
alarm.timelastwarning |
上次发送警告的时间。 |
alarm.timereset |
上次执行重置的时间。 |
alarm.timestatechanged |
上次更改警报状态的时间。 |
alarm.warningstate |
警告状态(是 [1] 或否 [0])。 |
要获取有关当前 IMAP、POP 和 HTTP 连接数、失败的登录次数、自开始时间以来的总连接数等的信息,可使用命令 counterutil -o CounterObject -i 5 -n 10。其中 CounterObject 代表计数器对象 popstat、imapstat 或 httpstat。imapstat 后缀的含义如表 23–2 中所示。popstat 和 httpstat 对象可以通过同样的格式和结构提供同样的信息。
表 23–2 counterutil imapstat 统计信息
后缀 |
说明 |
---|---|
currentStartTime |
当前 IMAP 服务器进程的开始时间。 |
lastConnectionTime |
上次接受新客户机的时间。 |
maxConnections |
IMAP 服务器处理的最大并行连接数。 |
numConnections |
由当前 IMAP 服务器提供服务的连接总数。 |
numCurrentConnections |
当前的活动连接数。 |
numFailedConnections |
由当前 IMAP 服务器提供服务的失败的连接数。 |
numFailedLogins |
由当前 IMAP 服务器提供服务的失败的登录次数。 |
numGoodLogins |
由当前 IMAP 服务器提供服务的成功的登录次数。 |
命令counterutil -o diskusage 可以生成以下信息:
表 23–3 counterutil diskstat 统计信息
后缀 |
说明 |
---|---|
diskusage.availSpace |
磁盘分区中的总的可用空间。 |
diskusage.lastStatTime |
上次进行统计的时间。 |
diskusage.mailPartitionPath |
邮件分区路径。 |
diskusage.percentAvail |
可用磁盘分区空间的百分比。 |
diskusage.totalSpace |
磁盘分区中的总空间。 |
命令counterutil -o serverresponse 可以生成以下信息。这些信息可用于检查服务器是否正在运行以及它们的响应速度。
表 23–4 counterutil serverresponse 统计信息
后缀 |
说明 |
---|---|
http.laststattime |
上次检查 HTTP 服务器响应的时间。 |
http.responsetime |
HTTP 的响应时间。 |
imap.laststattime |
上次检查 IMAP 服务器响应的时间。 |
imap.responsetime |
IMAP 的响应时间。 |
pop.laststattime |
上次检查 POP 服务器响应的时间。 |
pop.responsetime |
POP 的响应时间。 |
ldap_host1_389.laststattime |
上次检查 ldap_host1_389 服务器响应的时间。 |
ldap_host1_389.responsetime |
ldap_host1_389 的响应时间。 |
ugldap_host2_389.laststattime |
上次检查 ugldap_host2_389 服务器响应的时间。 |
ugldap_host2_389.responsetime |
ugldap_host2_389 的响应时间。 |
Messaging Server 为 SMTP、IMAP、POP 和 HTTP 提供事件记录日志。可以自定义创建和管理 Messaging Server 日志文件的策略。
由于日志记录会影响服务器的性能,因此在向服务器添加这一负担之前应当对日志记录进行慎重考虑。有关更多信息,请参见第 21 章,管理日志记录。
MTA 会为其每个活动通道积累邮件通信流量计数器(基于邮件监视 MIB,RFC 1566)。通道计数器旨在帮助表明电子邮件系统的趋势和运行状况。通道计数器并不用于提供精确的邮件通信流量计数。要获得精确的计数,请查看 MTA 日志记录,如第 21 章,管理日志记录中所述。
MTA 通道计数器是使用可用的最轻量级的机制实现的,以尽可能减小它们对实际操作的影响。通道计数器并不尝试成为强硬功能:如果尝试映射某部分失败,则不会记录任何信息;如果几乎无法立即获得该部分中的其中一个锁定,也不会记录任何信息;当关闭系统时,内存中的部分所包含的信息将永远丢失。
imsimta counters -show 命令可以提供 MTA 通道邮件统计信息(请参见下文)。在一段时间过后需要检查这些计数器并记下所看到的最小值。对于某些通道,最小值实际上可能为负数。负值意味着在某个通道的计数器归零时该通道中有排队的邮件(例如,创建了计数器的群集范围的数据库)。当这些邮件取消排队时,与该通道相关联的计数器便会减少,从而导致出现负的最小值。如果计数器出现这种情况,用当前值减去自计数器初始化以来曾经具有的最小值便可得到正确的“绝对”值。
Channel Messages Recipients Blocks ------- -------- ---------- ------- tcp_local Received 29379 79714 982252 (1) Stored 61 113 -2004 (2) Delivered 29369 79723 983903 (29369 first time) (3) Submitted 13698 13699 18261 (4) Attempted 0 0 0 (5) Rejected 1 10 0 (6) Failed 104 104 4681 (7) Queue time/count 16425/29440 = 0.56 (8) Queue first time/count 16425/29440 = 0.56 (9) Total In Assocs 297637 Total Out Assocs 28306 |
1) Received 是加入到名为 tcp_local 的通道队列中的邮件数。即,由任何其他通道加入到 tcp_local 通道队列中的邮件(mail.log* 文件中的 E 记录)。
2) Stored 是存储在要被传送的通道队列中的邮件数。
3) Delivered 是已经由通道 tcp_local 处理(已取消排队)的邮件数。(即 mail.log* 文件中的 D 记录。)取消排队操作可能是由于传送成功(即,加入到另一个通道队列中),也可能是由于邮件被返回给发件人而进行的取消排队操作。通常此值等于 Received 值与 Stored 值之差。
MTA 还跟踪了首次尝试时被取消排队的邮件数,此数值显示在括号中。
4) Submitted 是由通道 tcp_local 加入到任何其他通道队列中的邮件数(mail.log 文件中的 E 记录)。
5) Attempted 是在排出队列过程中遇到临时问题的邮件数(即 mail.log* 文件中的 Q 记录或 Z 记录。
6) Rejected 是被拒绝的入队尝试次数(即 mail.log* 文件中的 J 记录)。
7) Failed 是失败的取消排队尝试次数(即 mail.log* 文件中的 R 记录)。
8) Queue time/count 是所传送的邮件在队列中花费的平均时间。这包括首次尝试时传送的邮件(请参见 [9])以及需要进行额外传送尝试的邮件(因而通常会在队列中花费很长的闲置等待时间)。
9) Queue first time/count 是首次尝试即传送成功的邮件在队列中所花费的平均时间。
请注意,提交的邮件数可能会大于传送的邮件数。这是一个很常见的情况,因为通道取消排队(传送)的每封邮件都将导致至少一封新邮件加入队列(提交),但可能会多于一封。例如,如果一封邮件具有两个分别经由不同通道到达的收件人,则将需要进行两次加入队列操作。或者,如果邮件退回,则一个副本将返回给发件人,同时另一个副本可能会发送给邮寄主管。通常将有两次提交(除非两者通过同一个通道到达)。
更常见的情况是,Submitted 和 Delivered 之间的连接会根据通道的类型而不同。例如,在转换通道中,邮件将由其他任意通道加入队列,然后,转换通道将处理该邮件并将其加入到第三个通道中的队列,并在该邮件的自身队列中将其标记为已取消排队。每封单独的邮件都将获取一个路径:
elsewhere -> conversion E record Received conversion -> elsewhere E record Submitted conversion D record Delivered
但是,对于 tcp_local 这样的通道(不是“直通式”通道,而是具有两个单独的部分 [从部分和主部分]),在 Submitted 和 Delivered 之间没有连接。Submitted 计数器必须使用 tcp_local 通道的 SMTP 服务器部分,而 Delivered 通道则必须使用 tcp_local 通道的 SMTP 客户机部分。它们是两个完全独立的程序,通过它们传送的邮件也可能是完全独立的。
提交给 SMTP 服务器的邮件:
tcp_local -> elsewhere E record Submitted
通过 SMTP 客户机发送给其他 SMTP 主机的邮件:
elsewhere -> tcp_local E record Received tcp_local D record Delivered
通道的取消排队(传送)操作将导致至少一封新邮件加入队列(提交),但可能会多于一封。例如,如果一封邮件具有两个分别经由不同通道到达的收件人,则将需要进行两次加入队列操作。或者,如果邮件退回,则一个副本将返回给发件人,同时另一个副本可能会发送给邮寄主管。通常将通过同一个通道到达。
由于性能原因,运行 MTA 的节点将使用共享的内存部分(在 UNIX 上)或共享的文件映射对象(在 NT 上)在内存中保留通道计数器的高速缓存。当该节点上的进程将邮件加入队列或取消排队时,将更新此内存中的高速缓存中的计数器。如果通道运行时该内存中的部分不存在,则会自动创建该部分。(如果内存中的部分不存在,imta start 命令也会创建该部分。)
可以使用命令 imta counters -clear 或 imta qm 命令 counters clear 将计数器重置为零。
imsimta qm counters 实用程序可显示 MTA 通道队列邮件计数器。只有 root 或 inetuser 用户才能运行该实用程序。程序的输出字段与imsimta 计数器中所述的字段相同。另请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimta counters”。
示例:
# imsimta counters -create # imsimta qm counters show Channel Messages Recipients Blocks ---------------------- ---------- ---------- ---------- tcp_intranet Received 13077 13859 264616 Stored 92 91 -362 Delivered 12985 13768 264978 Submitted 2594 2594 3641 ... |
每次重新启动 MTA 时,都必须运行:# imsimta counters -create
Messaging Server 支持通过简单网络管理协议 (Simple Network Management Protocol, SNMP) 进行系统监视。使用 SNMP 客户机(有时称为网络管理器),例如 Sun Net Manager 或 HP OpenView(没有随此产品一起提供),可以监视 Messaging Server 的特定部分。有关详细信息,请参见附录 A,SNMP 支持。
您可以使用 imquotacheck 实用程序监视邮箱配额使用情况和限制。imquotacheck 实用程序将生成列出定义的配额和限制的报告,并提供有关配额使用情况的信息。
例如,以下命令将列出所有用户配额信息:
% imquotacheck ------------------------------------------------------------------------- Domain red.siroe.com (diskquota = not set msgquota = not set) quota usage ------------------------------------------------------------------------- diskquota size(K) %use msgquota msgs %use user # of domains = 1 # of users = 705 no quota 50418 no quota 4392 ajonk no quota 5 no quota 2 andrt no quota 355518 no quota 2500 ansri ... |
以下示例显示了用户 sorook 的配额使用情况:
% imquotacheck -u sorook ------------------------------------------------------------------------- quota usage for user sorook ------------------------------------------------------------------------- diskquota size(K) %use msgquota msgs %use user no quota 1487 no quota 305 sorook |
Messaging Server 提供了 watcher 和 msprobe 两个进程来监视各种系统服务。watcher 监视服务器崩溃并根据需要重新启动服务器。msprobe 监视服务器挂起(不响应)。具体来讲,msprobe 可以监视以下内容:
服务器响应时间。msprobe 可以使用已启用服务器的协议命令连接至这些服务器并测定其响应时间。如果服务器响应时间超出报警阈值,系统将向服务器发送报警邮件(请参见警报邮件);如果该响应时间超出指定的超时时长,将重新启动服务器。服务器响应时间同时记录到计数器数据库和默认日志文件中。可以使用 counterutil 来显示服务器响应时间的统计信息(counterutil)。
以下服务器由 msprobe 监视:imap、pop、 http、cert、job_controller、smtp、lmtp、mmp 和 ens。smtp 或 lmtp 未响应时,系统将重新启动分发程序。ens 无法自动重新启动。
磁盘使用量. msprobe 检查每个邮件存储分区的磁盘可用性和使用量。具体来讲,它可以检查邮件存储 mboxlist 数据库目录和 MTA 队列目录。如果磁盘使用量超出了配置的阈值,则发送警报邮件。磁盘大小和使用量被同时记录到计数器数据库和默认日志文件中。管理员可以使用 counterutil 实用程序(请参见counterutil)显示磁盘使用量的统计信息。
邮件存储 mboxlist 数据库日志文件积累。日志文件积累是 mboxlist 数据库错误的迹象。msprobe 计算活动日志文件的数目,如果活动日志文件的数目大于阈值,msprobe 会将紧急错误消息记录到 default 日志文件中,以通知管理员重新启动服务器。如果启用了 autorestart(local.autorestart 为 yes),将重新启动存储守护进程。
watcher 和 msprobe 由 configutil 选项(如表 23–5 所示)控制。有关详细信息,请参见失败的服务或未响应服务的自动重新启动。
表 23–5 msprobe 和 watcher configutil 选项
选项 |
说明 |
---|---|
启用服务器自动重新启动。自动重新启动失败或挂起服务。默认值:否 |
|
失败重试超时。如果服务器在此指定时间内失败超过两次,则系统将停止尝试重新启动服务器。应当将该值(以秒为单位设置)设置为比 msprobe 间隔 (local.schedule.msprobe) 更长的时间段值。默认值:600 秒 |
|
特定服务器在重新启动之前的超时。service 可以是 imap、pop、http、cert、job_controller、smtp、lmtp、mmp 或 ens。 默认值:使用 service.readtimeout |
|
警告消息被记录到 default 日志文件之前的特定服务器无响应秒数。service 可以是 imap、pop、http、cert、job_controller、smtp、lmtp、mmp 或 ens。 默认值:使用 local.probe.warningthreshold |
|
警告消息被记录到 default 日志文件之前的服务器无响应秒数。 默认值:5 秒 |
|
用于检查队列大小是否超过由 alarm.diskavail.msgalarmthreshold 定义的阈值的 MTA 队列目录。 默认值:无 |
|
重新启动该服务器之前的服务器非响应时段。请参见 local.schedule.msprobe。 默认值:10 秒 |
|
msprobe 运行计划。crontab 样式的时间安排字符串(请参见表 18–10) |
|
启用 watcher,用于监视服务失败。IMAP、POP、HTTP、作业控制器、分发程序、邮件存储 (stored)、imsched 和 MMP。(LMTP/SMTP 服务器由分发程序监视,LMTP/SMTP 客户机由 job_controller 监视。)对于特定失败,会将错误消息记录到默认日志文件中。默认值:启用 |
msprobe 可以通过电子邮件向邮寄主管发出报警(请参见监视 imapd、popd 和 httpd),针对指定的情况发出警告。下面显示了当超出特定阈值时发送的一个电子邮件警报样例:
Subject: ALARM: server response time in seconds of “ldap_siroe.com_389” is 10 Date: Tue, 17 Jul 2001 16:37:08 -0700 (PDT) From: postmaster@siroe.com To: postmaster@siroe.com Server instance: /opt/SUNWmsgsr Alarmid: serverresponse Instance: ldap_siroe_europa.com_389 Description: server response time in seconds Current measured value (17/Jul/2001:16:37:08 -0700): 10 Lowest recorded value: 0 Highest recorded value: 10 Monitoring interval: 600 seconds Alarm condition is when over threshold of 10 Number of times over threshold: 1 |
您可以指定 msprobe 监视磁盘和服务器性能的频率,以及在什么情况下发送警报。可以通过使用 configutil 命令设置报警参数完成此操作。表 23–6 显示了有用的报警参数及其默认设置。请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“configutil Parameters”。
表 23–6 有用的报警邮件 configutil 参数
参数 |
说明(括号中为默认设置) |
---|---|
(localhost) 向其发送警告邮件的计算机。 |
|
(25) 发送警报邮件时要连接的 SMTP 端口。 |
|
(Postmaster@localhost) 向其发送警报通知的用户。 |
|
(Postmaster@localhost) 警报发件人的地址。 |
|
(可用邮件分区磁盘空间的百分比。)磁盘可用性警报的说明字段的文本。 |
|
(3600) 磁盘可用性检查之间的时间间隔(秒)。设置为 0 将禁用磁盘使用情况的检查。 |
|
(10) 当磁盘空间的可用性低于此百分比时将发送警报。 |
|
(-1) 指定当磁盘空间的可用性低于阈值 (-1) 或高于阈值 (1) 时是否发出警报。 |
|
(24)后续重复的磁盘可用性警报之间的时间间隔(小时)。 |
|
(以秒为单位的服务器响应时间。)服务器响应警报的说明字段的文本。 |
|
(600) 服务器响应检查之间的时间间隔(秒)。设置为 0 将禁用服务器响应的检查。 |
|
(10) 如果服务器响应时间超过此值(秒),则发出警报。 |
|
(1) 指定当服务器响应时间大于 (1) 或小于 (-1) 阈值时是否发出警报。 |
|
(24) 后续重复的服务器响应警报之间的时间间隔(小时)。 |