資料倉儲監控平臺

miguelmin發表於2009-01-17

2008年初,我在itpub論壇上提出了怎麼做資料倉儲監控平臺的帖子,得到了很多網友的建議,時過一年,我的監控平臺的執行已經取得了很好的效果,作為回報,我對監控平臺的思想做個總結,獻給大家。

對於大型的資料庫應用系統(如BI系統),都包括很多服務和應用,我們沒法實時知道系統執行是否正常,特別是晚上的時候,如果伺服器當機了、應用服務死掉了、資料庫空間不足了、ETL伺服器磁碟滿了、關鍵作業鏈上的某個作業失敗等等中的任何一個環節出現問題,都會嚴重影響客戶體驗,甚至帶來不可預料的麻煩,這時候就必須有一套對系統進行監控的措施。目前有很多軟體應的監控通知和報警服務,有收費的也有免費的,大家都可以選擇。

我嘗試自己來實現一個服務監控和報警通知的程式,在服務或者應用出現故障的時候,採取兩種處理方式:自動恢復或通知維護人員。這樣以很小的代價,提升我們的服務支撐能力。

[@more@]

【監控原理】

遠端服務監控(portal伺服器)
對於遠端機器來說,我們可以有一臺監控伺服器,或者隨便找一臺比較不容當機的伺服器來作為監控伺服器,那麼就能夠監控其他的服務機上的服務了,遠端監控是比較大家需要的方式了。一般遠端監控就監控伺服器和埠是否開放,比如說,我們的 Web 服務 Apache 一般都會開放 80 埠,那麼我們就可以透過訪問這臺伺服器的 80 埠來確定 Apache 是否在正常工作,如果無法連線上,那麼說明該服務就停止了。

本地服務監控(ETL伺服器)
對於本機來說,監控程式和日誌檔案都是可行的,一般來說,automation七個服務正常執行時會有相應的日誌資訊,如果這些日誌檔案長時間沒有更新,就可以肯定該服務已經停止了。另外對於程式來說,本機是很容易檢視到程式情況的,對於 MySQL 等伺服器來說,守護程式都是長期開放的,如果發現當前系統中沒有了 MySQL 守護程式,那麼也可以確認 MySQL 服務已經停止了。

資料庫空間監控
資料庫空間不足的話,日常作業將全部失敗,資料庫空間的監控也很重要,同其他監控相比,資料庫空間的監控相對簡單。

ETL磁碟空間監控
同資料庫空間一樣,ETL磁碟空間不足的話,系統也無法運轉,監控相對簡單。

流程監控:
整個etl過程中,作業可能會由於前一次的錯誤狀態導致此次不能正常執行。比如teradata automation中,前一次作業異常終止,可能導致作業鎖(lock目錄下的鎖檔案)沒有正常清除,這時就需要監控鎖產生的時間,一般來說,只有當天的鎖才是正常的,非當天的,我們完全可以將其清理掉,從而保證當天的作業正常執行。

負載監控
對於資料倉儲來說,正確分配資源,讓跑批儘量少在白天佔用資源是必須的。負載監控實現很簡單,但監控結果可以作為我們分配資源的重要依據。

應用監控
對於資料倉儲專案,監控點可能涉及到整個ETL過程,甚至可以延伸到資料質量的控制。依據需要,可以建立上游系統送數情況進行監控、關鍵作業監控、資料質量監控等。

報警通知
服務停止了,自然需要通知系統維護人員,那麼一般就是透過郵件或者簡訊的方式。工作時間最好是郵件,維護人員要合理配置郵件的接收頻次,以在發現問題時及時處理。非工作時間,簡訊自然是最好的了,但是頻繁簡訊同樣讓維護人員很鬱悶,這個叫做簡訊炸彈(Message Bomb),所以定義出什麼時候傳送簡訊是非常重要的,只在非發不可的時候才傳送簡訊,要不惰性驅使,運維人員仍舊不能及時處理問題。

監控展示
對於每次異常,監控程式在處理問題(修復或通知)的同時,需要做相關記錄。監控平臺上可以看見這些資訊,以便做後續處理。如服務經常死肯定是不行的,維護人員可以做排查工作,讓系統恢復正常狀態;再者,記錄日誌對後續責任認定具有指導意義。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16723161/viewspace-1016237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章