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

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