技術分享
Informatica Ultra Messaging產品監控機制設計
作者/王宜倫
前言Informatica Ultra Messaging(UM)產品(原29West LBM產品)為一高處理容量、低延遲時間的訊息交換軟體產品,應用程式使用此訊息導向中介軟體透過簡單的API,即可處理所有複雜的訊息路由與訊息交換;UM的解決方案可簡化IT基礎架構,消除應用程式間不必要的中繼節點,降低訊息延遲時間,訊息的topic定址,可以不透過常駐程式或伺服器,並可利用網路硬體負責訊息路由、過濾和複製;面對不同的網路和應用環境,可利用參數設定來最佳化傳輸性能。
Informatica UM監看方式說明
UM執行時會自動收集和統計目前執行狀況,但不會主動將此統計數據送出,需透過下列兩種方式將統計數據送出以進行監看。
一、LBM Monitoring API
程式中使用Monitoring API設定要監控的項目與interval,即會將要監控的特定event回傳給程式本身,並將監控的statistics數據送給監控程式(lbmmon)或是SNMP agent,以及再將statistics送給監控軟體整合。
二、Automatic Monitoring
於configuration檔案中設定要監控的項目與interval,即會將要監控的特定event回傳給程式本身,並將監控的statistics數據送給監控程式(lbmmon)或是SNMP agent,以及再將statistics送給監控軟體整合。(本文將以此方式說明)
UM提供兩種方式可讓UM監控與其它監控產品進行整合。
一、SNMP
透過UM SNMP模組,可直接將UM event直接送給監控軟體(例如Prognosis、NNM)進行整合,此為最佳的整合方式,只要監控軟體支援SNMP,即可直接接收UM傳送過來的監控訊息。但目前UM SNMP模組不支援NonStop系統。
二、lbmmon
lbmmon可將監控訊息寫log檔,監控軟體讀取log進行整合,此方式需要另外轉寫程式進行客製化,且改版時若output格式有異動,程式需要重新調整。目前NonStop支援此方式。(本文將以此方式說明)
監看項目說明
此監看機制規劃以協助UM問題解決為方向,主要監看項目包含process運作狀態、資源使用狀況、UM傳輸狀態等功能為主。在production環境的監看的最佳實務(best practice)包含下列兩個監看標的:
一、監看UM程式的Unrecoverable loss與Recoverable loss
監看是否有Unrecoverable loss與Recoverable loss發生可由UM程式是否發生NAKs來判斷。當偵測到UM程式發生NAKs時,再去檢查系統與網路是否有異常狀況。
二、監看UM程式處理訊息速度是否與接收訊息速度取得平衡
監看UM程式的Event Queue長度可判斷程式處理訊息的速度是否大於接收訊息的速度,若source端程式傳送訊息的速度,高於receiver端程式處理速度,receiver端程式Event Queue長度會持續增加,若高於監看門檻值,需要去檢查系統與網路是否有異常狀況。此部分與應用系統架構有關,若設計上為讓訊息暫存在Event Queue中,程式再依序處理,則此Queue長度會很長。
監看規劃說明
一、UM程式提供監看資訊(statistics)
UM程式透過automatic monitoring功能將監看標的資訊送給lbmmon,方式說明如下:
- 1.於程式啟動obey file (script)中設定下列環境變數
- 此環境變數會讓UM程式每隔30秒送出目前的狀態,線上環境建議的間隔時間為30秒~60秒。
- 若有UM程式不需要即時監控,只需要知道該UM程式自開始到結束前的執行狀況,可設定一較大的數值,讓程式在結束前將狀態送出,例如:若程式在8:00啟動,於13:40結束所有訊息處理工作,並於13:50結束,可設定INTERVAL為20700,程式會在13:45將處理狀態送出,但要注意程式啟動時間可能之誤差,若太晚啟動可能尚未將處理狀態送出即結束。
- 指定程式名稱,讓Prognosis ADI可辨識該資訊為哪一支UM程式所送出。
- 指定UM程式執行monitor所使用的configuration file。範例如下:
#monitoring topic is /29west/statistics (default)
#setup monitoring interface
#monitoring subnet is different than data subnet
context resolver_multicast_interface 11.1.2.11
#setup monitoring transport, default is LBTRM
source transport LBTRM - 計算訊息在Event Queue中停留的時間。
- 計算Event Queue中有多少筆訊息。
- 計算Event Queue中每個訊息被服務的時間。
# export LBM_MONITOR_INTERVAL=30
# export LBM_MONITOR_APPID=”ProcessID ”
# export LBM_MONITOR_TRANSPORT_OPT=” config=ProcessID-monitor.cfg”
2.於UM程式configuration file中設定下列參數(Event Queue only)
event_queue queue_age_enabled 1
event_queue queue_count_enabled 1
event_queue queue_service_time_enabled 1
二、收集監看資訊(statistics)
lbmmon接收UM程式的資訊後寫log檔,後續可透過其它工具讀取log檔:
- 1.啟動lbmmon監看process
- 啟動lbmmon並指定UM程式執行monitor所使用的configuration file。範例如下:
#monitoring topic is /29west/statistics (default)
#setup monitoring interface
#monitoring subnet is different than data subnet
context resolver_multicast_interface 11.1.2.10
#setup monitoring transport, default is LBTRM
#source transport LBTRM
lbmmon --transport-opts="config=lbmmon.cfg"
三、監看資訊(statistics)規劃
- 1.Source端process建議的監看statistic
- 依據receiver端process每秒鐘可處理的最大訊息數量設定門檻值:假設receiver端設計每秒鐘處理訊息數量最大為30,000,考量瞬間爆量狀況,可設定監看門檻值為最大處理容量的2倍,設定為60,000。
- 依據source端retransmission window可存放的訊息數量:source端retransmission window size預設為24MB(最大值),考量若event queue中的event有loss需要重傳的狀況,假設最壞狀況為讀取event queue中最老的(old)的訊息發現前一筆訊息loss,因此,需要自retransmission window重傳前第60001筆訊息(單筆);假設每筆訊息長度為200 Bytes,retransmission window中可存放約120,000筆訊息,所以門檻值設為60,000仍在安全範圍內。
- NAKs統計值為累計的,建議監控告警機制為當連續兩次監控interval所偵測到的NAKs均增加,Prongosis需產生alarm,值班人員再檢查系統或網路狀態是否有異常。
- -Event Queue指標為當時的值,可設定門檻值,若指標超過門檻值,Prognosis產生alarm,值班人員再檢查系統或網路狀態是否有異常。
(1-1) Source statistics
LBT-RM datagrams in transmission window : 17645
LBT-RM datagram bytes in transmission window : 25161770
此兩個指標顯示目前source端的transmission window大小與使用狀況,若要調整transmission window大小時,需要觀察datagrams in transmission window的大小。
LBT-RM NAK packets received : 0
LBT-RM NAKs received : 0
LBT-RM NAKs ignored : 0
LBT-RM NAKs shed : 0
LBT-RM NAKs ignored (retransmit delay) : 0
上述指標顯示該source收到NAKs的情形。預期source端收到的NAKs應該等於receiver端送出的NAKs,若有差異(receiver > source),則表示有loss的問題,若持續發生,則會造成unrecoverable loss。
LBT-RM datagrams sent : 35045
LBT-RM retransmission datagrams sent : 0
上述兩指標可顯示source端重送多少筆訊息與所佔比例。
(1-2) Context statistics (Source)
Topics in source topic map : 1
Topics in receiver topic map : 1
Unresolved topics in receiver topic map : 0
檢查Topic in receiver topic map可了解source端與receiver端是否已完成Topic Resolution。
2.Receiver端process建議的監看statistic
(2-1) Receiver statistics
LBT-RM NAK packets sent : 0
LBT-RM NAKs sent : 0
此兩個指標顯示是否有recoverable loss,UM source端收到NAKs後會自動重傳,若有短暫的NAKs發生並不會造成問題,但是會影響latency。
NCFs received (ignored) : 0
NCFs received (shed) : 0
NCFs received (retransmit delay) : 0
NCFs received (unknown) : 0
此四個指標表示是否有unrecoverable loss,發生NAKs後,UM source端拒絕重傳,source拒絕重傳原因可能為retransmission window中已無此筆message,或是無法辨識的NAK。Ignored表示unrecoverable loss;shed/retransmit delay表示造成額外的loss,且可能會造成大量的unrecoverable loss;unknow表示source端收到無法辨識的NAK,此也會有unrecoverable loss的問題。
LBT-RM datagrams unrecoverable (window advance) : 0
LBT-RM datagrams unrecoverable (NAK generation expiration) : 0
此兩個指標為unrecoverable loss。Window advance表示receiver端要重傳的packet已不再source端的retransmission window中;NAK generation expiration表示receiver放棄要求source端重送loss的packet。若此兩個指標值持續增加,須注意該receiver可能為”crybaby receivers”或是會造成nak storm問題,要特別注意。
(2-2) Event Queue statistics
Data messages currently enqueued : 0
Total data messages enqueued : 600001
Data message service mean time : 1us
Data message service maximum time : 7909us
上述指標顯示目前event queue的狀況,若處理訊息的速度慢於接收訊息的速度,currently enqueued長度會持續增加,若高於監看門檻值,需要去檢查系統與網路是否有異常狀況。此部分與應用系統架構有關,若設計上為讓訊息暫存在Event Queue中,程式再依序處理,則此Queue長度會很長,最常可達21億或是受限於記憶體大小。
Event Queue門檻值建議設定方式說明:
(2-3) Context statistics (Receiver)
Topics in receiver topic map : 1
Unresolved topics in receiver topic map : 0
檢查是否有unresolved topics可了解receiver與source是否已完成Topic Resolution。
3.告警機制:
結論
- 針對UM傳輸最重要的監看項目為recoverable loss與unrecoverable loss,可藉由statistics的NAKs與NCF來判斷,其餘statistics可做為系統使用趨勢規劃使用。
- 較簡單的監控方式為使用Automatic Monitoring方式,程式可完全不需要修改,只須設定configuration file與啟動環境變數。
- 若已有SNMP監控機制,可透過UM SNMP agent將statistics送給集中監看console,另一簡單的方式為lbmmon,lbmmon可將收到的statistics寫log,可監看此log;或是透過程式處理此log,顯示重要statistics狀況。
- 使用SNMP或是lbmmon監看方式都可將UM監控與既有單一介面集中監看console整合,無須額外增加監看介面。
參考資料
- UM參考手冊:29West Ultra Messaging® Concepts
- UM參考手冊:29West Configuration Guide