Sun Java System Messaging Server 6.3 管理指南

A.3 配置 Solaris 10 作業系統的 SNMP 支援

SNMP 監視預設會在 Messaging Server 內停用。選擇此預設值是為了減少預設 Messaging Server 配置所提供的服務數。請勿將此預設值解釋成使用 SNMP 監視會對效能造成不良影響。實際上,Messaging Server 的 SNMP 支援所耗用的資源極微小,對 Messaging Server 的影響並不大。總而言之,您僅需要執行配置步驟一次,便可使用 Messaging Server 的 SNMP 支援。此外,平台的 Net-SNMP 主代理程式 snmpd 之預設配置一般需要變更,才能執行 Messaging Server 等子代理程式。下一節的主題旨在說明此變更。

A.3.1 Net-SNMP 配置

Messaging Server 的 Net-SNMP 型 SNMP 子代理程式使用 AgentX 協定與平台的 SNMP 主代理程式 (RFC 2741) 進行通訊。Net-SNMP 主代理程式 snmpd 必須配置為允許使用 AgentX 協定。若要執行這項作業,請確定平台的 snmpd.conf 檔案包含此行:


master agentx

如果沒有,請增加此行再重新啟動 snmpd 常駐程式。請注意,光是傳送 SIGHUP 訊號至常駐程式並不足夠。一旦重新啟動 snmpd 常駐程式,請尋找 snmpd 為 AgentX 通訊所建立的 UNIX 網域通訊端。在 Solaris 和 Linux 系統上,此通訊端預設會顯示為特殊檔案 /var/agentx/master;但是其位置和名稱可能會透過 snmpd.con 檔案而變更。

Solaris 10 作業系統的 snmpd 配置如下所示:


%cp /etc/sma/snmp/snmpd.conf /etc/sma/snmp/snmpd.conf.save
% cat >> /etc/sma/snmp/snmpd.conf
# Messaging Server's subagent requires the AgentX protocol
master agentx
^D
% cat >> /etc/sma/snmp/snmpd.conf
% ls -al /var/agentx/
srwxrwxrwx 1 root root 0 Aug 9 13:58 /var/agentx/master

此外,在 Red Hat Enterprise Linux AS 3 系統上,預設的 snmpd.conf 檔案會限制「公用」SNMP 社群能檢視的資訊。因此,您必須移除或延伸限制,以包含 Messaging Server 的子代理程式實作之 MIB。若是初始測試,建議執行後者。方法是在名為「systemview」的檢視中包含 OID 子樹 mib-2.27 和 mib-2.28,如下所示。若是實際的部署,各個站點必須考量各自的整體安全性策略。請注意,SNMP 子代理程式所提供的資訊為「唯讀」。


% cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.save
% cat >>/etc/snmp/snmpd.conf
# Messaging Server's subagent requires the AgentX protocol
master agentx
# Messaging Server's subagent exports mib-2.27 and .28
# Add the mib-2.27 and .28 OID subtrees to the systemview
view systemview included .1.3.6.1.2.1.27
view systemview included .1.3.6.1.2.1.28
^D
% /sbin/service snmpd restart
% ls -al /var/agentx/master
srwxr-xr-x 1 root root 0 Aug 8 21:20 /var/agentx/master

如果您要使用 SNMP 3 版的內容名稱,區分在相同主機電腦上同步執行的不同 Messaging Server 實例之 MIB,則您至少還需要配置一個 SNMP 3 版的使用者名稱和密碼,以搭配 SNMP 3 版的查詢使用。

A.3.2 Messaging Server 子代理程式配置

如需 Messaging Server 的 SNMP 子代理程式之基本作業,您僅需要啟用此代理程式並發出單次性的手動啟動指令。之後每次啟動或停止 Messaging Server,子代理程式會跟著啟動或停止。以下是使此配置在 Solaris 和 Linux 上生效的必要指令:


% configutil -o local.snmp.enable -v 1
% start-msg snmp

您可以在執行之後,以 snmpwalk 指令從指令行測試子代理程式。請參閱以下螢幕快照中適用於 Solaris 和 Linux 的範例。請注意,rfc2248.txtrfc2249.txt 檔案是網路服務和 MTA MIB 的副本。在 Solaris 系統上,這些檔案也可在 /etc/sma/snmp/mibs/ 目錄中依 NETWORK-SERVICES-MIB.txtMTA-MIB.txt 名稱找到。您不一定要提供這些檔案給 snmpwalk 工具;但是這麼做可讓 snmpwalk 列印每個 MIB 變數的名稱,而不只是數值物件識別碼 (Numeric Object Identifier, OID)。

在 Solaris 上的基本測試:


% D=/opt/SUNWmsgsr/examples/mibs /usr/sfw/bin/snmpwalk -v 1 -c public \
    -m +$D/rfc2248.txt:$D/rfc2249.txt 127.0.0.1 mib-2.27
NETWORK-SERVICES-MIB::applName.1 = STRING: /opt/SUNWmsgsr MTA on mail.siroe.com
...
% D=/opt/SUNWmsgsr/examples/mibs /usr/sfw/bin/snmpwalk -v 1 -c public \
     -m +$D/rfc2248.txt:$D/rfc2249.txt 127.0.0.1 mib-2.28
MTA-MIB::mtaReceivedMessages.1 = Counter32: 1452
MTA-MIB::mtaStoredMessages.1 = Gauge32: 21
...

在 Linux 上的基本測試:


% export D=/opt/sun/messaging/examples/mibs
% /usr/bin/snmpwalk -v 1 -c public \
     -m +$D/rfc2248.txt:$D/rfc2249.txt 127.0.0.1 mib-2.27
NETWORK-SERVICES-MIB::applName.1 = STRING: /opt/sun/messaging MTA on mail.siroe.com
...
% /usr/bin/snmpwalk -v 1 -c public \
     -m +$D/rfc2248.txt:$D/rfc2249.txt 127.0.0.1 mib-2.28
MTA-MIB::mtaReceivedMessages.1 = Counter32: 21278
MTA-MIB::mtaStoredMessages.1 = Gauge32: 7
...

A.3.3 以獨立 SNMP 代理程式執行

在配置 Messaging Server 的 SNMP 子代理程式以獨立的 SNMP 代理程式執行之前,必須先決定子代理程式在其上偵聽 SNMP 請求的乙太網路介面和 UDP 連接埠。子代理程式預設會在使用 UDP 連接埠 161 的所有可用乙太網路介面上偵聽。在大部分的情況下,會需要變更此連接埠號以避免干擾平台的 SNMP 主代理程式 snmpd。在 HA 容錯移轉等部分情況下,還需要將乙太網路介面從所有可用的介面 INADDR_ANY 變更為由其 IP 位址識別的特定介面。乙太網路介面和 UDP 連接埠這兩個概念透過 local.snmp.listenaddrlocal.snmp.port 選項所控制。

一旦決定要使用的乙太網路介面和 UPD 連接埠,即應將 local.snmp.standalone 選項的值設定為 1,並接著重新啟動子代理程式。重新啟動之後,子代理程式會以獨立於 snmpd 和任何子代理程式的 SNMP 代理程式運作。

例如,若要以在具有 IP 位址 10.53.1.37 的乙太網路介面之 UDP 連接埠 9161 上偵聽的獨立代理程式執行,請輸入以下指令。

配置為以獨立代理程式執行:


% configutil -o local.snmp.port -v 9161
% configutil -o local.snmp.listenaddr -v 10.53.1.37
% configutil -o local.snmp.standalone -v 1
% stop-msg snmp
% start-msg snmp
% snmpwalk -v 1 -c public 10.53.1.37:9161 .
SNMPv2-SMI::mib-2.27.1.1.2.1 = STRING: "/opt/SUNWmsgsr MTA on mail.siroe.com"
...

A.3.4 監視多個 Messaging Server 實例

此處討論兩種用於監視相同主機電腦上執行的多個 Messaging Server 實例之技術。第一種技術是以獨立模式執行子代理程式,適用於高可用性容錯移轉 (HA) 配置,其中個別的 Messaging Server 實例可能會在主機電腦之間動態移動。第二種技術使用 SNMP 3 版的內容名稱,在單一系統上有多個 Messaging Server 實例且需要限制 SNMP 監視軟體輪詢的 IP 位址數目之情況下 (例如,當監視軟體的授權需要為每個元件各指定一個 IP 位址時),提供有限的優點。此技術也可能用在 HA 的容錯移轉設定中,但輪詢所需的 IP 位址數目會與獨立模式技術所需的數目一樣多。

A.3.5 針對高可用性容錯移轉使用獨立代理程式

在高可用性容錯移轉的設定中,需要有 Messaging Server 的 SNMP 監視,建議您如A.3.3 以獨立 SNMP 代理程式執行中所述,以獨立代理程式執行 Messaging Server 的 SNMP 子代理程式。以獨立模式執行子代理程式時,Messaging Server 的每個 HA 實例應將其 local.snmp.listenaddr 選項設定為該實例的容錯移轉 IP 位址之值。為了簡化管理,每個實例應使用相同的 UDP 連接埠,但該連接埠應與每個實體叢集主機上所執行的 snmpd 常駐程式使用之連接埠不同。這些常駐程式一般會使用 UDP 連接埠 161,因此請使用 local.snmp.port 選項明確指定不同的連接埠號。

若是如此處所建議配置 Messaging Server 的 SNMP 支援,則不管 Messaging Server 實例執行所在的實體叢集主機,監視工作站皆可透過其容錯移轉 IP 位址或主機名稱監視每個實例。此外,還確保 Messaging Server 的獨立 SNMP 代理程式不會彼此衝突,因為這些代理程式僅會在由實例的唯一容錯移轉 IP 位址識別之各自的虛擬乙太網路介面上偵聽。(這些虛擬乙太網路介面會自動由 HA 容錯移轉架構建立。)由於謹慎選取 UDP 連接埠,代理程式不會與叢集內多部系統上所執行的 snmpd 常駐程式衝突。

A.3.6 透過 SNMP 3 版的內容名稱區分多個實例

雖然如A.3.3 以獨立 SNMP 代理程式執行中所述,以獨立模式使用 Messaging Server 的 SNMP 支援並無不利之處,但是還是有些站台偏好使用較傳統的子代理程式模式,同時仍然保留監視相同系統上同步執行的多個 Messaging Server 實例之功能。例如,SNMP 監視系統的授權模式會限制輪詢的 IP 位址數目。若要達到此目的,請繼續執行 Messaging Server 的 SNMP 子代理程式,並將 local.snmp.standalone 設定為零。此外,為 local.snmp.enablecontextname 選項指定非零值,會配置每個 Messaging Server 實例使用明確的 SNMP 3 版內容名稱。如果需要內容名稱不同於 service.defaultdomain 的值,則請使用 local.snmp.contextname 選項設定所需的名稱。一旦重新啟動每個 Messaging Server 實例的 SNMP 子代理程式,便能接著透過包含適當內容名稱的 SNMP 3 版查詢進行監視。在相同系統上執行的兩個 Messaging Server 實例之 MIB 會由實例的 SNMP 3 版內容名稱區分,因此 MIB 物件識別碼 (OID) 不會產生衝突。

A.3.7 Messaging Server 的 Net-SNMP 型 SNMP 子代理程式選項

以下選項僅會套用到 Messaging Server 的 Net-SNMP 型 SNMP 子代理程式。此子代理程式可在執行 Solaris 10 和更新版本的 Solaris 平台以及 Linux 平台上使用。以下說明的選項不會套用到為執行 Solaris 9 和舊版作業系統的 Solaris 平台所提供之舊版 SNMP 子代理程式。

以下說明的選項是 configutil 選項。因此,其值可使用以下格式的指令進行檢查:


% configutil -o option-name

其中 option-name 是顯示其值的選項名稱。若要設定或變更選項值,請使用以下格式的指令:


% configutil -o option-name -v option-value

其中 option-value 是要設定的值。這些選項的變更需要重新啟動才會生效:


% stop-msg snmp
% start-msg snmp

之後是每個選項的說明及其預設值。

表 A–1 SNMP 子代理程式選項

選項 (預設值) 

說明 

local.snmp.enable (0)

只有當指定此選項 1true 值時,才會執行 Messaging Server SNMP 子代理程式,不管指定何值,Messaging Server 皆會自動停止和啟動子代理程式,以做為正常啟動與關閉程序的一部分。依預設,此選項設定為零,表示停用子代理程式的作業。啟用子代理程式之前,請確定已如A.3.3 以獨立 SNMP 代理程式執行中所述,正確配置了平台的主代理程式。

local.snmp.standalone (0)

Messaging Server 的 SNMP 支援一般會以 SNMP 子代理程式執行,並透過平台的 SNMP 主代理程式 snmpd 接收 SNMP 請求。此為預設作業模式,並可透過指定此選項 0 或 false 值加以選取。但是,如A.3.3 以獨立 SNMP 代理程式執行中所述,此子代理程式可能以「獨立」模式執行,並以獨立於 snmpd 的 SNMP 代理程式運作。以獨立模式執行時,子代理程式 (現在為 SNMP 代理程式) 會在由 local.snmp.listenaddrlocal.snmp.port 選項分別指定的乙太網路介面和 UDP 連接埠上直接偵聽 SNMP 請求。若要以獨立模式執行,請為此選項指定 1 或 TRUE 值。

以獨立模式執行不會干擾系統上執行的其他 SNMP 主代理程式或子代理程式。 

local.snmp.listenaddr (INADDR_ANY)

以獨立模式執行時,偵聽 SNMP 請求所在的乙太網路介面之主機名稱或 IP 位址。預設會在所有可用的介面上進行偵聽。此對應到指定值 INADDR_ANY。指定與該介面相關的 IP 位址或主機名稱可選取特定的介面。此介面可能是實體介面或虛擬介面。

local.snmp.standalone 設定為 0 或 FALSE 時,會忽略此選項。

local.snmp.cachettl (30)

快取的監視資料之存留時間 (TTL),以秒為單位。此選項控制子代理程式以從 Messaging Server 取得的新資訊重新整理資料之前,會報告相同監視資料的時間長度。除了郵件迴圈資訊之外,快取的資料預設不得超過 30 秒。經由掃描 .HELD 檔案判定的迴圈資訊,僅會每 10 分鐘更新一次。這是因為此資源需要掃描所有磁碟上的郵件佇列。

請注意,子代理程式不會持續更新其監視資料:僅會在接收 SNMP 請求及快取的資料過期 (亦即超過其 TTL) 時更新。如果 TTL 設定為 30 秒且僅每 5 分鐘提出 SNMP 請求,則每則 SNMP 請求會導致子代理程式從 Messaging Server 取得更新的資料。亦即,資料僅會每 5 分鐘從 Messaging Server 取得一次。另一方面,如果每 10 秒提出 SNMP 請求,則子代理程式會以 29 秒前快取的資料來回應部分請求;僅會每 30 秒輪詢 Messaging Server 一次。 

local.snmp.servertimeout (5)

子代理程式會實際開啟每個服務的 TCP 連線並進行協定交換,以判定每個受監視的服務之作業狀態。此逾時值 (以秒為單位) 控制子代理程式等候協定交換中各步驟的回應之時間長度。預設會使用 5 秒的逾時值。 

local.snmp.directoryscan (1)

使用此選項以控制子代理程式是否掃描磁碟上的郵件佇列,尋找 .HELD 郵件檔案及最舊的郵件檔案。此資訊對應 mtaGroupLoopsDetectedmtaGroupOldestMessageStoredmtaGroupOldestMessageId MIB 變數。當此選項的值為 1 或 true 時,則會視需要維護與更新此資訊的快取記憶體。具有上千封排入佇列的郵件之站台若是對這些特定的 MIB 變數不感興趣,應考慮將此選項值設定為 0 或 false

local.snmp.enablecontextname (0)

這些子代理程式能將其 MIB 註冊在 SNMP 3 版的內容名稱下。完成時,這些 MIB 僅能由在其 SNMP 請求中指定內容名稱的 SNMP 3 版用戶端請求。使用內容名稱允許多個獨立的子代理程式在相同的 OID 樹狀結構下 (亦即在相同的 SNMP 主代理程式下) 註冊網路服務和 MTA MIB。如需進一步資訊,請參閱A.3.4 監視多個 Messaging Server 實例

若要使用 SNMP 3 版的內容名稱,請為此選項指定值 1 或 true。完成時,子代理程式預設會為其內容名稱使用 service.defaultdomain 選項的值。若要為內容名稱使用不同的值,請使用 local.snmp.contextname 選項。

local.snmp.contextname (service.defaultdomain)

local.snmp.enablecontextname 啟用 SNMP 3 版內容名稱的使用時,可能使用此選項明確設定其 MIB 的子代理程式所使用的內容名稱。為此選項提供的值是字串值,且必須適合用做 SNMP 3 版的內容名稱。當 local.snmp.enablecontextname 有 0 或 false 值時,會忽略此選項。