最近設計了公司監控系統,已向高層匯報;會上溝通還不錯,領導也非常認可
這邊現在來總結分享設計思路及監控方案
背景條件
首先是業務系統多、團隊多,而且還有不少流動的廠商及外包人員
所以這里面就有一個規划的問題,包括監控點、日志格式是否統一
目前上述這些都是單打獨斗,無整體規划的
其次是目前對監控系統的需求性不高,底層有公有雲提供的穩定服務和簡單監控
業務層面有業務人員報障,也有業務運維針對關鍵業務編寫了監控腳本
其余的非關鍵業務,則對服務的可用性沒有那么高要求
最后是已經有部分監控系統在做測試及試用:Grafana/Prometheus/ELK
基於以上背景,和公司提出的一些需求(特別是網絡拓撲圖),在研究了主流的開源產品后
Zabbix/Prometheus/OpenFalcon
數據處理還是使用zabbix吧,開箱即用,web管理界面做的好
架構概要
由grafana負責數據可視化,zabbix系統負責數據的采集和分析處理
當前zabbix版本為4.2,感覺更加開放了,支持數據推送、支持Prometheus
但是仍然有不少缺點,api有點啰嗦(個人覺得),web操作繁瑣
所以我大量使用了zabbix的discovery功能生成監控
管理平台
為了方便(偷懶)監控配置,單獨寫了一個統一管理平台,可以說是一種CMDB
但是不想把話說那么滿,僅是用來維護監控對象的一套系統
同樣是 django + jq 一把梭
把django用成不是django的樣子,改天可以再單獨寫寫這個內容
通過錄入一些業務主機的基本信息,再輔以zabbix的自動發現,可以快速生成監控配置
部分 discovery 腳本:
discovery_app_monitor_script.py
discovery_business_child_node.py
discovery_business.py
discovery_db_backup_ip.py
discovery_host_monitor.py
discovery_jvm_app.py
discovery_wan_ip.py
我覺得挺方便的,各位業務運維同仁可以自己維護信息,我就可以休息了
同時也可以錄入系統間調用關系,達到監控業務A -> B端調用是否正常等等
利用這些信息用來繪制一個系統的拓撲圖,但目前僅監控了由A -> B端端口
更詳細的業務層面探測,還未開始進行
根據信息繪制的關系圖
本來想根據關系直接生成zabbix上的系統拓撲圖,但是內容太多,一時掌握不了
目前還是手動配置中
后續展望
對於整個框架我覺得是沒有什么問題了,當前的能力也就做到這樣了
繼續在細節上完善,引入日志分析,告警聚合等
外部界面再加個殼就可以做成產品出售了,呵呵。