项目以后可能有这么一个需求:管理系统将会监管所有被管理的设备的状态。所谓的状态包括:每台设备的运行状态(CPU/内存/网络/磁盘空间等参数)和在线状态。
因为管理系统是一个BS架构的应用,所以我想在每台被管理的客户端都运行一个Java的小程序,该程序实现的功能:
1. 开机自动启动 【linux下通过写入/etc/init.d即可】
2. 程序一旦启动,将执行一个定时任务 【考虑使用Quartz】
3. 该定时任务就是每隔3分钟向管理系统上报系统的运行状态。
3.1 系统状态参数的获取我打算使用Sigar
3.2 上报我打算使用HttpURLConnection,直接走HTTP协议,将获取到的参数以post方式提交给服务端
在服务端,需要准备的是:
1. 服务端此时需要对外公布一个接口,供客户端调用。服务端将接收的数据存入数据库。【与处理前台请求无异】
2. 如果客户端连续3次没有上报系统状态,服务端就认为该客户端处于离线状态。【心跳机制】
3. 如果检测到设备离线,则产生一条告警信息。
以上是我的一个想法,可行性还有待确认,我感觉这种方式支持客户端比较少的情况应该没有什么问题。如果需要监控的设备较多,我想尝试使用Socket来完成这一切功能,包括服务端,可能需要使用多线程进行接收处理。