需求背景
目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作。不同于个人开发的简单服务器,企业级的node服务要求更为苛刻:
高稳定性、高可靠性、鲁棒性以及直观的监控和报警
想象下一个存在安全隐患且没有监控预警系统的node服务在生产环境下运行的场景,当某个node实例挂掉的情况下,运维人员或者对应开发维护人员无法立即知晓,直到客户或者测试人员报告bugs才开始解决问题。在这段无人处理的时间内,损失的订单数和用户的忠诚度和信任度将是以后无法弥补的,因此对于node程序的业务开发者而言,这就要求代码严谨、异常处理完备;对于node框架的维护者而言,则需要提供完善的监控预警系统。
功能
当一个服务进程在后端运行时(daemon),作为开发者我们关注的信息主要有以下几点:
服务进程是否正在运行,isalive
服务进程的内存使用率,是否存在未回收(释放)的内存
服务进程的cpu使用率,在计算量大的情况下是否需要分片处理、延时处理
服务进程的实时响应时间和吞吐量
而作为一个运维人员,关注的不仅仅是node服务进程的相关信息,还包括物理主机的使用状况:
物理硬盘所剩存储空间
内存、cpu使用率
网络接入是否正常
可以看出,不管是针对主机还是进程进行监控,我们的关注点大多数是资源使用率和业务量处理能力,因此我们的监控预警系统也着重实现这些功能。
系统简易架构

