使用spring boot+nacos+gateway方式开发系统,新系统上线后出现过多次故障,每次故障都是用户反馈到甲方,甲方再联系我们,导致出现故障时间长,故障后无法快速定位,甲方和用户对系统印象不好。
值班人员不能每时每刻都盯着所有微服务状态看,微服务单个节点挂了后,有时候会引起其它节点异常。
在上述的背景下,尝试使用监控手段监控微服务运行状态,以及时获取故障信息,快速定位故障原因。
通过nacos提供的原生API进行接口层进行操作,动态获取微服务节点,每分钟请求微服务接口,以获取服务状态,并与本地数据库登记在册的微服务数量,进行对比,达到预警的效果。
对于访问可能出现的问题进行预判,如果程序无法判断异常原因,会直接将出现的异常信息发送预警(包括程序自身可能出现的问题)
根据现有业务,例如定时任务执行情况,对未及时处理或处理异常的数据进行预警。
将预警信息进行编号,并存储到数据库,使用报表系统或大数据平台GCPASS进行数据展示。
通过API接口,将预警信息发送到终端(短信、邮件、微信小程序等)。
本程序也可监控非nacos服务,但原理还是请求服务的某一个接口,来判断服务状态。
为了保证程序的正常运行,程序也会1小时发送一条状态正常的信息。
1. 监控节点是否掉线,如果有节点掉线,无法及时发现(可保证至少有节点提供服务);
2. 监控节点是否假死,解决节点已无法正常工作,但Nacos未发现,所有流量依然通过gateway进行数据传输,进而导致偶然性故障发生(不做监控手段得话,这种故障最难解决,也很难定位);
3. 监测节点不正常服务的原因,包括节点禁止访问、节点丢失但nacos未释放、服务器不接受请求、端口不通、服务器宕机、节点处理超时,nacos状态监控等;
4. 节点健康度检查(健康度由nacos评估),对健康度较差的微服务告警通知;
5. 监控程序的自我报告;