数据监测的分为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.云控制系统节点控制的实现
控制远程节点计算机的启动,停止,节点计算机收到命令后,启动相关命令实现管理。