《走近云计算》阅读笔记16--.基于Linux的云监控系统的数据监测的实现

来源:互联网 发布:大型网络手游 编辑:程序博客网 时间:2024/06/11 20:00

数据监测的分为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.云控制系统节点控制的实现

控制远程节点计算机的启动,停止,节点计算机收到命令后,启动相关命令实现管理。

 

原创粉丝点击