前一篇文章聊到了小型電商網站的系統架構,然后有朋友問我,里面的日志與監控指的是啥,所以,今天就來聊聊這個問題。
監控系統主要用於服務器集群的資源和性能監控以及應用異常和性能監控,日志管理等多維度的性能監控分析。一個完善的監控系統和日志系統對於一個系統的重要性不必我多說,總而言之就一句話,只有實時了解各系統的狀態,才能保證各系統的穩定。

如上圖所示,監控平台監控的范圍很廣,服務器性能及資源,還有應用系統的監控。每個公司都有特定的平台統一監控的需求及解決方案,但是監控平台的任務和作用基本是一致的。
一,日志
日志是監視程序運行的一種重要的方式,主要有兩個目的:1.bug的及時發現和定位,2.顯示程序運行狀態。正確詳細的日志記錄能夠快速的定位問題。同樣,通過查看日志,可以看出程序正在做什么,是不是按預期的設計在執行,所以記錄下程序的運行狀態是必要的。這里將日志分為兩種:1.異常日志,2.運行日志。
我們主要是使用log4net,將各個系統的日志,持久化記錄到數據庫或者文件中,以方便后續的系統異常監控和性能分析。如何集成log4net,這里不再說明。
日志記錄的幾個原則:
1. 區分日志級別一定要區分清楚,哪些屬於error,warning,info,等,
2. 記錄錯誤的位置,如果是分層系統,一定要在某個層統一處理,例如,我們的mvc架構,都是在各個action中catch異常,並處理,業務層和數據庫層這些地方的異常,都是catch到異常后,往上一層拋。
3. 日志信息清晰准確有意義,日志盡量詳細點,以方便處理。應該記錄相關系統,模塊,時間,操作人,堆棧信息等。方便后續處理。
二,監控
監控系統是一個復雜的系統平台,目前有很多的開源產品和平台。不過我們平台小,監控任務和需求少,所以基本都是自己開發,主要有這五個方面:1.系統資源,2.服務器,3.服務,4.應用異常,5.應用性能。
具體的架構圖如下:

1,系統資源監控
監控各種網絡參數和各服務器相關資源(cpu,內存,磁盤讀寫,網絡,訪問請求等),保證服務器系統的安全運營;並提供異常通知機制以讓系統管理員快速定位/解決存在的各種問題。目前比較流行的應該是zabbix。
2,服務器監控
服務器的監控,主要是監控各個服務器,網絡節點,網關,等網絡設備,的請求響應是否正常。
通過定時服務,定時去ping各個網絡節點設備,以確認各網絡設備是否正常,,如果哪個網絡設備出現異常,則發出消息提醒。
3,服務監控
服務監控,指的是各個web服務,圖片服務,搜索引擎服務,緩存服務等平台系統的各項服務是否正常運行,
可以通過定時服務,每隔一段時間,就去請求相關的服務,確保平台的各項服務正常運行。
4,應用異常監控
目前我們平台的所有系統的異常記錄,都記錄在數據庫中。通過定時服務,統計分析一段時間之內的異常記錄。如果發現有相關重要的模塊的系統異常,比如支付,下單模塊,頻繁發生異常,則立即通知相關人員處理,確保服務正常運行。
5,應用性能監控
在api接口和各應用的相關位置進行攔截和記錄下程序性能(sql性能,或是 程序執行效率)。相關重要模塊提供性能預警,提前發現問題。 同時統計相關監控信息並顯示給開發的人員,以方便后續的性能分析。
