本節內容
- 為什么要做監控??
- 常用監控系統設計討論
- 監控需求討論
- 如何實現監控服務器的水平擴展?
- 監控系統架構設計
一、為什么要做監控??
- 熟悉IT監控系統的設計原理
- 開發一個簡版的類Zabbix監控系統
- 掌握自動化開發項目的程序設計思路及架構解藕原則
二、常用監控系統設計討論
成熟的監控
- Zabbix
- Nagios/cacti
- ganglia
- openfalcon go
三、監控系統需求討論
1.可監控常用系統服務、應用、網絡設備等
網絡層
- 網絡質量
- 流量,丟包率、帶寬
系統層
- cpu
- disk
- ram
- load
- port
應用層
- mysql 連接數
- nginx 并發數
- cdn 命中率
- 頁面是否被篡改
業務邏輯層
- 每小時訂單數
- 當前在線用戶
2.一臺主機上可監控多個不同服務、不同服務的監控間隔可不同
服務A:
- cpu 30
- disk 90
- load 120
服務B:
- cpu 45
- ram 60
- mysql 20
3.同一個服務在不同主機上的監控間隔、報警閾值可不同
報警閥值:
- 重要的服務 cpu使用率超過80%就報警,要抄送給CTO
- 不重要重要的服務 cpu使用率超過100%報警,給運維工程師
4.可以批量的給一批主機添加、刪除、修改要監控的服務
監控模板
linuxservices
- cpu
- disk
- memory
5.告警級別:
-
不同的服務 因為業務重要程度不同,如果出了問題可以設置不同的報警級別
- 重要的服務,cup使用率打到80%,就報警
- 普通的服務,cup使用百分之98%,報警
-
可以指定特定的服務或告警級別的事件通知給特定的用戶
- 重要的服務,抄送給CTO
- 不重要的只發送給運維工程師
-
告警的升級設定
- 發送給底層運維工程師沒處理,就發送給運維經理
- 再過半個小時沒處理,就發送給cto
-
報警合并
? ? ? ? ? ? ? ? ? ?有一個報警池,有一個腳本對池的分析
6.歷史數據 的存儲和優化
- 實現用最少的空間占用量存儲最多的有效數據
- 如何做到1s中之內取出一臺主機上所有服務的5年的監控數據?
監控數據的處理
1、存下來,趨勢圖
大數據分析 ,視角越大,越失真
?
?
時間越長,越失真
2、報警處理
7. 數據可視化,如何做出簡潔美觀的用戶界面?
8.如何實現單機支持5000+機器監控需求?
- 列式存儲
- redis 支持集群,數據量大加機器就可以
9.采取何種通信方式?主動、被動?
1、server 主動 監控 客戶端
- 好處:不用裝客戶端,使用所有的網絡設備,snmp,配置簡單
- 壞處:服務器壓力大,不適合大型網絡環境,不能監控復雜的指標
2、server 被動 接收 客戶端
- 好處:大型網絡環境、監控復雜的指標、擴展能力強
- 壞處:裝客戶端、網絡設備不適用、維護起來相對復雜一點
3、主流的:混合式
1、客戶端知道監控什么指標?
客戶端主動去問服務器我要監控什么
2、客戶端掃描本地所有服務,全部匯報給服務器
openfalcon把機器上所有能檢測到的都抓上[2014年自動檢測到(支持一千多項)]
四、如何實現監控服務器的水平擴展?
1、采用什么架構?
?Mysql
- 數據量太大,mysql超過1千萬條查詢起來就特別慢,
- 我在看趨勢圖時前端要查好幾分鐘,為什么zabbix的那么快?
- 他們是怎么做的?zabbix優秀是在2000-3000臺還可以,要是上萬臺就會太慢
- 不要把你的監控數據存到mysql,因為會存在很多的問題
?主動通信? Snmp,wget…
server 主動 監控 客戶端
- 好處:不用裝客戶端,使用所有的網絡設備,snmp,配置簡單
- 壞處:服務器壓力大,不適合大型網絡環境,不能監控復雜的指標
?被動通信?Agent ---how to communicate with the monitor server
server 被動 接收 客戶端
- 好處:大型網絡環境、監控復雜的指標、擴展能力強
- 壞處:裝客戶端、網絡設備不適用、維護起來相對復雜一點
總結:主流的的還是混合模式好
?Socket server –>? Sockect client
不可以,很多坑
?能否用現成的c/s架構? Rabbit mq, redis 訂閱發布, http ?
2、采用HTTP好處
1.接口設計簡單
2.容易水平擴展做分布式
3.Socket穩定成熟,省去較多的通信維護精力
3、Http特性:
1.短連接
2.無狀態
3.安全認證
4.被動通信
五、監控系統架構設計
?