服務器監控系統

前言

最近需要開發一個監控項目,主要用於監控服務器的各項硬件指標,以及應用的狀態(只需要確認應用是否存活),到了這個階段也希望自己能靜下心來總結一下。

需求

服務器監控

服務器監控目前只需要監控起CPU、DISK和RAM的使用情況,本可以java編程解決,
但是考慮到程序的擴展(後續可能新增指標),所以使用了java+shell的方式,
即shell腳本獲取指標、打印,java控制shell腳本的執行,並獲取返回值。在經
由java後臺解析入庫。

應用監控

應用監控在此處就比較簡單,只考慮應用的存活情況即可。那麼考慮到通過端口的
狀態來確認應用的狀態(在部分情況下端口狀態並不能反映應用本身的狀態,但此
處暫不考慮)。

管理員維護

由於涉及到預警告知的概念,那便引入了管理員的概念,與服務器綁定,做通知用。

設計

系統架構

採用 單獨jar + 管理平臺的方式
1、單獨jar: 運行於服務器上,用於根據管理平臺下發的端口判斷應用狀態、定
	期執行Shell腳本、解析返回值、推送結果至管理平臺。
2、管理平臺: 用於服務器、應用等的維護,針對服務器應用集端口的下發,接收
	狀態報文,解析入縱表庫。並提供數據組裝、展示的功能。

設計重點

端口下發

1、由於應用監控的徐奧,要對每個服務器下發對於的應用端口集合,集合主要維護
	在管理平臺;
2、管理平臺初始化時全量下發,每個服務器下發對應端口集,該過程需要在數據
	源實例化之後、項目啓動前。
3、管理平臺在對服務器新增、修改應用數據後,只針對該服務器重新下發端口集以
	及時更新。

服務器監控指標可配置

1、服務器監控指標需可配置,即可實現對A服務器只監控CPU,而對B服務器可監控
	CPU、DISK、RAM和新增其他指標,並且不同服務器指標的閾值也可配置。
2、Shell腳本編輯擴展,送至單獨jar的數據集時一致的,而監控平臺拿到的數據
	集也是一致的,但針對各個服務器監控指標集,需做篩選。

Shell執行及數據解析

1、理論上,新增指標只需更改Shell腳本即可實現。
2、Shell腳本的執行,由單獨Jar的定時任務控制。

數據推送及接收

1、數據經單獨Jar推送至監控平臺,考慮併發,先將接收的數據入隊列,另起線程
	對隊列做處理,保證線程安全。

解析入庫

1、僅需注意數據表使用縱表即可(爲搭配參數可擴展設計)

歷史數據備份

1、根據監控頻率的不同和監控參數數量的差異,數據量不可控,所以需要做備份處
	理。
2、新數據正常入數據表,定時任務控制每個週期的第一天凌晨(例如:每個月的一
	號凌晨00:00:00)執行數據庫操作。
3、主要操作爲更改數據表名爲歷史表(帶上日期),並新建數據表作爲數據存儲用,
	這樣設計省去了數據遷移的消耗。

總結

需求至此基本滿足,實現了服務器和應用的監控,此外,結合VUE+ECharts還能實現數據展示和圖表展示,使結果更爲直觀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章