數據監測的分爲3個部分:
1.數據採集:DataCollection數據採集器
(1)CPU數據採集:通過讀取/proc目錄下的stat文件內容。
需要以cpu開頭的第一行的數據。
fileCPU = new FileInputStream("/proc/stat");
DataInputStream dataCPU = new DataInputStream(fileCPU);
CPURate = dataCPU.readLine();
String[] CPUString = CPURate.replaceAll(" "," ").split("\\s");
String user = CPUString[2];
String nice = CPUString[3];
String system = CPUString[4];
String idle = CPUString[5];
//再用這些數據計算成CPU的使用率
(2)內存數據的採集:/proc/meminfo
需要第四行和第五行數據
FileInputStream fileMem;
fileMem = new FileInputStream("/proc/meminfo");
DataInputStream dataMem = new DataInputStream(fileMem);
for(int i =0;i<3;i++){
dataMem.readLine();}
memTotal= dataMem.readLine().replaceAll("[^0-9]","");
memFree = dataMem.readLine().replaceAll("[^0-9]","");
(3)由於CPU利用率和內存利用率的數據是實時變化的,還可以定時地採集數據,通過訓話,設置該線程的睡眠時間。
2.數據傳輸
(1)各個節點服務器將採集的的數據傳輸給SocketClient對象
new SocketClient(CPURate+" "+memRate).send();
用send()函數將數據發送到服務器端
(2)服務器端等待節點計算機的連接,如果獲得連接,創建新的線程接收數據
new ServerThread(Socket sock)
(3)調用SaveData類的save()將數據保存到數據庫
(4)由於節點信息是定時採集和發送的,因此數據庫中的數據也是動態變化的
3.數據實時顯示
利用ExtJs技術來實現數據的實時顯示。
(1)通過設置監控系統的閾值,如果超過閾值會顯示節點的CPU使用率,監測界面上就會出現警告信息。
(2)動態刷新數據,用ExtJs提供了定時器setInterval(loaddata,'2000‘)。
loaddata是一個函數名,2000是時間間隔,2s
function loaddata(){ form.getForm().load({url:'datacollection.jsp?noden='+nodenum'});}
4.雲監控系統設備參數採集的實現
集羣中的節點計算機數量是不固定的,如果業務量較大,需要增加節點。這時,就要在設備配置功能上進行結點的配置。
設備參數採集的方法:
(1)根據節點機的具體情況動態配置
(2)通過人工的方法,在掛載該節點之前,手工配置到系統中。
當監控的集羣數量較少時,採用手工的配置方法,將參數錄入數據庫中。
點擊save保存入庫,點擊Activate將設備激活。
5.雲控制系統節點控制的實現
控制遠程節點計算機的啓動,停止,節點計算機收到命令後,啓動相關命令實現管理。