Sun Java System Messaging Server 6 2005Q4 管理指南

用于监视的实用程序和工具

以下工具可用于进行监视:

immonitor-access

immonitor-access 监视以下 Messaging Server 组件/进程的状态:邮件传送(SMTP 服务器)、邮件访问和存储(POP 和 IMAP 服务器)、目录服务(LDAP 服务器)和 HTTP 服务器。此实用程序可测定各种服务的响应时间,以及发送和检索邮件所需的总的往返时间。目录服务是通过在目录中查找指定的用户并测定响应时间来监视的。邮件传送是通过发送邮件 (SMTP) 来监视的,而邮件访问和存储是通过检索邮件来监视的。对 HTTP 服务器的监视限于查看它是否已启动并正在运行。

有关完整的说明,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“immonitor-access”

stored

stored 实用程序执行服务器上的维护任务,也可以执行监视任务。但是,现在 msprobe 能更好地处理处理监视任务。请参见使用 msprobe 和 watcher 功能进行监视

counterutil

此实用程序提供了从不同系统计数器获得的统计信息。下面是可用计数器对象的当前列表:


# /opt/SUNWmsgsr/sbin/counterutil -l
Listing registry (/opt/SUNWmsgsr/data/counter/counter)
numobjects = 11
refcount = 1
created = 25/Sep/2003:02:04:55 -0700
modified = 02/Oct/2003:22:48:55 -0700
     entry = alarm 
     entry = diskusage
     entry = serverresponse
     entry = db_lock 
     entry = db_log
     entry = db_mpool
     entry = db_txn
     entry = imapstat
     entry = httpstat
     entry = popstat
     entry = cgimsg

每个条目都表示一个计数器对象,并且为该对象提供了各种有用的计数。在本节中,我们将仅讨论 alarmdiskusageserverresponsedb_lockpopstatimapstathttpstat 计数器对象。有关 counterutil 命令的用法的详细信息,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“counterutil”

counterutil 输出

counterutil 有多种标志。此实用程序的命令格式可能为:

counterutil -o CounterObject -i 5 -n 10

其中,

-o CounterObject 表示计数器对象 alarmdiskusageserverresponsedb_lockpopstatimapstathttpstat

-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 
...

使用 counterutil 的警报统计信息

以下警报统计信息指的是由 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])。 

使用 counterutil 的 IMAP、POP 和 HTTP 连接统计信息

要获取有关当前 IMAP、POP 和 HTTP 连接数、失败的登录次数、自开始时间以来的总连接数等的信息,可使用命令 counterutil -o CounterObject -i 5 -n 10。其中 CounterObject 代表计数器对象 popstatimapstathttpstatimapstat 后缀的含义如表 23–2 中所示。popstathttpstat 对象可以通过同样的格式和结构提供同样的信息。

表 23–2 counterutil imapstat 统计信息

后缀 

说明 

currentStartTime

当前 IMAP 服务器进程的开始时间。 

lastConnectionTime

上次接受新客户机的时间。 

maxConnections

IMAP 服务器处理的最大并行连接数。 

numConnections

由当前 IMAP 服务器提供服务的连接总数。 

numCurrentConnections

当前的活动连接数。 

numFailedConnections

由当前 IMAP 服务器提供服务的失败的连接数。 

numFailedLogins

由当前 IMAP 服务器提供服务的失败的登录次数。 

numGoodLogins

由当前 IMAP 服务器提供服务的成功的登录次数。 

使用 counterutil 的磁盘使用情况统计信息

命令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 章,管理日志记录

imsimta 计数器

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 是首次尝试即传送成功的邮件在队列中所花费的平均时间。

请注意,提交的邮件数可能会大于传送的邮件数。这是一个很常见的情况,因为通道取消排队(传送)的每封邮件都将导致至少一封新邮件加入队列(提交),但可能会多于一封。例如,如果一封邮件具有两个分别经由不同通道到达的收件人,则将需要进行两次加入队列操作。或者,如果邮件退回,则一个副本将返回给发件人,同时另一个副本可能会发送给邮寄主管。通常将有两次提交(除非两者通过同一个通道到达)。

更常见的情况是,SubmittedDelivered 之间的连接会根据通道的类型而不同。例如,在转换通道中,邮件将由其他任意通道加入队列,然后,转换通道将处理该邮件并将其加入到第三个通道中的队列,并在该邮件的自身队列中将其标记为已取消排队。每封单独的邮件都将获取一个路径:

elsewhere -> conversion E record Received
conversion -> elsewhere E record Submitted
conversion              D record Delivered

但是,对于 tcp_local 这样的通道(不是“直通式”通道,而是具有两个单独的部分 [从部分和主部分]),在 SubmittedDelivered 之间没有连接。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

通道的取消排队(传送)操作将导致至少一封新邮件加入队列(提交),但可能会多于一封。例如,如果一封邮件具有两个分别经由不同通道到达的收件人,则将需要进行两次加入队列操作。或者,如果邮件退回,则一个副本将返回给发件人,同时另一个副本可能会发送给邮寄主管。通常将通过同一个通道到达。

在 UNIX 和 NT 上的实现

由于性能原因,运行 MTA 的节点将使用共享的内存部分(在 UNIX 上)或共享的文件映射对象(在 NT 上)在内存中保留通道计数器的高速缓存。当该节点上的进程将邮件加入队列或取消排队时,将更新此内存中的高速缓存中的计数器。如果通道运行时该内存中的部分不存在,则会自动创建该部分。(如果内存中的部分不存在,imta start 命令也会创建该部分。)

可以使用命令 imta counters -clearimta qm 命令 counters clear 将计数器重置为零。

imsimta qm counters

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

使用 SNMP 的 MTA 监视

Messaging Server 支持通过简单网络管理协议 (Simple Network Management Protocol, SNMP) 进行系统监视。使用 SNMP 客户机(有时称为网络管理器),例如 Sun Net Manager 或 HP OpenView(没有随此产品一起提供),可以监视 Messaging Server 的特定部分。有关详细信息,请参见附录 A,SNMP 支持

用于邮箱配额检查的 imquotacheck

您可以使用 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

使用 msprobe 和 watcher 功能进行监视

Messaging Server 提供了 watchermsprobe 两个进程来监视各种系统服务。watcher 监视服务器崩溃并根据需要重新启动服务器。msprobe 监视服务器挂起(不响应)。具体来讲,msprobe 可以监视以下内容:

watchermsprobeconfigutil 选项(如表 23–5 所示)控制。有关详细信息,请参见失败的服务或未响应服务的自动重新启动

表 23–5 msprobewatcher configutil 选项

选项 

说明 

local.autorestart

启用服务器自动重新启动。自动重新启动失败或挂起服务。默认值:否 

local.autorestart.timeout

失败重试超时。如果服务器在此指定时间内失败超过两次,则系统将停止尝试重新启动服务器。应当将该值(以秒为单位设置)设置为比 msprobe 间隔 (local.schedule.msprobe) 更长的时间段值。默认值:600 秒

local.probe.service.timeout

特定服务器在重新启动之前的超时。service 可以是 imap、pop、http、cert、job_controller、smtp、lmtp、mmp 或 ens。

默认值:使用 service.readtimeout

local.probe.service.warningthreshold

警告消息被记录到 default 日志文件之前的特定服务器无响应秒数。service 可以是 imap、pop、http、cert、job_controller、smtp、lmtp、mmp 或 ens。

默认值:使用 local.probe.warningthreshold 

local.probe.warningthreshold

警告消息被记录到 default 日志文件之前的服务器无响应秒数。

默认值:5 秒 

local.queuedir

用于检查队列大小是否超过由 alarm.diskavail.msgalarmthreshold 定义的阈值的 MTA 队列目录。 

默认值:无 

service.readtimeout

重新启动该服务器之前的服务器非响应时段。请参见 local.schedule.msprobe。 

默认值:10 秒 

local.schedule.msprobe

msprobe 运行计划。crontab 样式的时间安排字符串(请参见表 18–10

local.watcher.启用

启用 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 参数

参数 

说明(括号中为默认设置) 

alarm.msgalarmnoticehost

(localhost) 向其发送警告邮件的计算机。 

alarm.msgalarmnoticeport

(25) 发送警报邮件时要连接的 SMTP 端口。 

alarm.msgalarmnoticercpt

(Postmaster@localhost) 向其发送警报通知的用户。 

alarm.msgalarmnoticesender

(Postmaster@localhost) 警报发件人的地址。 

alarm.diskavail.msgalarmdescription

(可用邮件分区磁盘空间的百分比。)磁盘可用性警报的说明字段的文本。 

alarm.diskavail.msgalarmstatinterval

(3600) 磁盘可用性检查之间的时间间隔(秒)。设置为 0 将禁用磁盘使用情况的检查。 

alarm.diskavail.msgalarmthreshold

(10) 当磁盘空间的可用性低于此百分比时将发送警报。 

alarm.diskavail.msgalarmthresholddirection

(-1) 指定当磁盘空间的可用性低于阈值 (-1) 或高于阈值 (1) 时是否发出警报。 

alarm.diskavail.msgalarmwarninginterval

(24)后续重复的磁盘可用性警报之间的时间间隔(小时)。 

alarm.serverresponse.msgalarmdescription

(以秒为单位的服务器响应时间。)服务器响应警报的说明字段的文本。 

alarm.serverresponse.msgalarmstatinterval

(600) 服务器响应检查之间的时间间隔(秒)。设置为 0 将禁用服务器响应的检查。 

alarm.serverresponse.msgalarmthreshold

(10) 如果服务器响应时间超过此值(秒),则发出警报。 

alarm.serverresponse.msgalarmthresholddirection

(1) 指定当服务器响应时间大于 (1) 或小于 (-1) 阈值时是否发出警报。 

alarm.serverresponse.msgalarmwarninginterval

(24) 后续重复的服务器响应警报之间的时间间隔(小时)。