服务端监控多个客户端进程是否僵死,具体怎么实现?

有多个已上线的系统,部署在不同的服务器上,现在要开发一个监控系统,用来监控这些系统的运行状态,其中一项是进程是否僵死的监控,想通过socket心跳包的形式来实现。开发语言用的是java。
我的思路是:
给每个客户端设置一个唯一的AppNode,客户端每隔一段时间按照规定协议发送对应的
xml心跳包给服务端。
服务端接收各个客户端发送过来的心跳包,如果超过一定时间收不到某个客户端的心跳包,则记录一条异常信息到日志表里,然后发短信通知相关人员去处理。
服务器端具体怎么做,我思路还不是很清楚,有做过类似功能的吗,想请教一下。

服务端开多个线程,每个线程跟一个客户端交互i 心跳包。