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_lockpopstatimapstat 以及 httpstat 計數器物件。如需有關 counterutil 指令用法的詳細資訊,請參閱 「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「counterutil」

counterutil 輸出

counterutil 擁有多種旗標。此公用程式的指令格式可能如下所示:

counterutil -o CounterObject -i 5 -n 10

其中

-o CounterObject 表示計數器物件 alarmdiskusageserverresponsedb_lockpopstatimapstat 以及 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 
...

使用 counterutil 提供警報統計資料

這些 alarm 統計參照由 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

警告狀態 (yes[1] 或 no[0])。 

使用 counterutil 提供 IMAP、POP 和 HTTP 連線統計

可以使用指令 counterutil -oCounterObject -i 5 -n 10 取得目前 IMAP、POP 以及 HTTP 連線數、失敗登入數、自啟動時間以來的總連線數等的資訊。其中,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 的回應時間。 

記錄檔

郵件傳送伺服器記錄 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 是初次嘗試時傳送的郵件在佇列中花費的平均時間。

請注意,所提交的郵件數目可能大於遞送的郵件數目。這是通常情況,因為由通道移出佇列 (遞送) 的每個郵件將導致至少一個新郵件形成佇列 (提交),但也可能是多個。例如,如果郵件有兩個分別經由不同通道到達的收件者,則將需要形成兩個佇列。或者,如果郵件被退回,系統會將一個副本傳回給寄件者,將另一個副本傳送給 Postmaster。通常,這將是兩次提交 (除非兩者都透過同一個通道到達)。

一般來說,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

通道移出佇列 (遞送) 將導致至少一個新郵件形成佇列 (提交),但也可能是多個。例如,如果郵件有兩個分別經由不同通道到達的收件者,則將需要形成兩個佇列。或者,如果郵件被退回,系統會將一個副本傳回給寄件者,將另一個副本傳送給 Postmaster。通常將透過同一個通道到達。

在 UNIX 和 NT 上實作

由於效能原因,執行 MTA 的節點使用共用記憶體區段 (UNIX) 或共用檔案對映物件 (NT) 將通道計數器的快取保留在記憶體中。當節點上的程序將郵件形成佇列和移出佇列時,它們將更新此內部記憶體快取中的計數器。如果在通道執行時內部記憶體區段不存在,則系統將自動建立此區段。(如果內部記憶體區段不存在,imta start 指令亦可建立此區段)。

指令 imta counters -clearimta qm 指令 counters clear 可用於將計數器重設為零。

imsimta qm 計數器

imsimta qm counters 公用程式顯示 MTA 通道佇列郵件計數器。必須是超級使用者或 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 支援透過簡易網路管理協定 (SNMP) 進行系統監視。使用 SNMP 用戶端 (有時稱為網路管理員),例如 Sun Net Manager 或 HP OpenView (未隨附此產品提供),可以監視 Messaging Server 的某些部分。請參閱附錄 ASNMP 支援,以取得詳細資訊。

用於電子信箱配額檢查的 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
 ...

以下範例將顯示使用者的配額使用率:


% 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

啟用伺服器自動重新啟動。自動重新啟動失敗或掛機的服務。預設:no 

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

MTA 佇列目錄,用於檢查佇列大小是否超出 alarm.diskavail.msgalarmthreshold 定義的臨界值。 

預設:無 

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 可以採用電子郵件形式向 Postmaster (請參閱監視 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) 後來重複發出伺服器回應警報的間隔時間 (以小時為單位)。