你們好,我叫大倪,出來工做快兩年了,如今從事運維工做。我接觸python已經有一年多了(邊上班邊學習),python是門很不錯的語言(我也只接觸過這一門),能夠作不少事情,而我接觸它,是由於想往自動化運維方向發展,學了這麼久,總得有拿的出手的做品才行,那就寫個自動化監控系統吧,不過我沒從事過開發,本身確定搞不定的,這裏我就借鑑(抄)Alex老師的需求分析、架構設計、表結構設計等等,別的本身實現。html
下面這個連接是我買的視頻,用的是Django web框架,python
http://edu.51cto.com/course/course_id-6208.htmlmysql
1、監控的項目
網絡層面:
網絡流量、延遲、基本存活狀態
系統層面:
cpu\disk\ram\load\...
應用層:
mysql、tomcat、nginx、redis、django、ha-proxy、squid。。。cdn。。
業務層面:
pv、uv、訂單總量。。。。。。
硬件層面監控:
磁盤、溫度。。。。。。
2、優劣點:
從服務器的角度來說
主動監控:是監控服務器 器主動向客戶端索取數據
好處:
一、不須要裝客戶端。
二、簡單
壞處:
一、當客戶端過多的時候,就出現了瓶頸(解決方法:經過分佈式,用代理服務器)
二、不易靈活的定製各類監控插件
被動監控:是客戶端主動向服務 器彙報數據
好處:對服務器端的壓力小,
靈活的定製各類監控插件
延遲小
壞處:
一、須要裝客戶端。
3、監控系統需求討論
一、可監控經常使用系統服務、應用、網絡設備等。
二、一臺主機上可監控多個不一樣服務、不一樣服務的監控間隔可不一樣
三、同一個服務在不一樣主機上的監控間隔、報警閥值可不一樣。
四、能夠批量的給一批主機添加、刪除、修改要監控的服務。
五、告警級別:
不一樣的服務 由於業務重要程度不一樣,若是出了問題能夠設置不一樣的報警
能夠指定特定的服務或告警級別的事件通知給特定的用戶
告警級別的升級設定
6.歷史數據 的存儲和優化
● 實現用最少的空間佔用量存儲最多的有效數據
● 如何作到1s中以內取出一臺主機上全部服務的5年的監控數據?
7. 數據可視化,如何作出簡潔美觀的用戶界面?
8.如何實現單機支持5000+機器監控需求?
9.採起何種通訊方式?主動、被動?
10.如何實現監控服務器的水平擴展?
4、採用什麼架構?
•Mysql
•主動通訊? Snmp,wget…
•被動通訊?Agent ---how to communicate with the monitor server
•Socket server –> Sockect client
•可否用現成的c/s架構? Rabbit mq, redis 訂閱發佈, http ?
採用HTTP好處
1.接口設計簡單
2.容易水平擴展作分佈式
3.Socket穩定成熟,省去較多的通訊維護精力
5、設計架構圖: