Nodejs做服务器实时监控,有什么好的解决方案?

想要基于nodejs实现服务器cpu使用状态、内存状态、日志等服务器信息的实时监控。有什么好的方法吗?

有成熟的监控系统可以使用为什么要自己去实现,推荐你使用开源的蓝鲸监控平台,服务器基础监控和日志都可以监控起来,支持接入第三方的Exporter或者脚本,如果系统采集的指标不满足你的需求,可以根据自己的需求简单制作插件并接入进来。

img

仪表板

img

服务拨测

img

从提问来看,因为描述不是很具体,另外服务器的资源监控和日志监控是比较不同的两块,所以按这个维度区分,我自行拆解和建议如下:
资源监控:
情景1:实现一个服务器资源的实时监控服务(就是独立的系统资源监控服务);
建议:首先抛开node.js开发独立监控服务是否合适这点,基础的监控服务应该包含监控数据采集、数据计算以及数据展示模块,然后根据监控对象的差异,监控数据的采集还要进一步细分,然后与监控配套的,还有告警通知机制,就是能设置监控阈值,超过阈值的监控项可以进行主动告警,告警要支持主流通知方式(短信、语音、邮件,微信等及时通讯工具),数据展示就是个展示管理面板这些,就是独立监控服务的话,基本要包含这些模块。
情景2:实现对node.js本身服务资源占用的实时监控(就是只监控自身资源使用的服务)。
建议:如果只是针对监控node服务本身,这个选择就比较多了
① 监控组件(相对简单,适合小规模应用):如Express(node开发首选框架),Appmetrics等,开源,可直接使用npm install方式进行安装,自带仪表盘,也可接入Flame Graphs进行展示,轻便简洁;
② 主流监控工具prometheus(使用go开发,运行快):目前最流行的开源监控工具,尤其适合云原生应用生态,一般搭配consule,grafana等组建起监控体系,对人员能力要求较高;
③ 配套监控平台:比起前面两种,市面上也有提供功能更加全面,近乎开箱即用的集成监控平台,比如腾讯蓝鲸监控平台,只需要在服务器上安装下对应代理,监控平台就会自动采集到监控数据,用户也可以根据自己公司业务进行监控面板、各种监控指标定制等,且高度兼容prometheus。
日志监控:
情景1:服务器日志产生体积的监控;
建议:前面举例的prometheus和蓝鲸监控均能设置;
情景2:基于日志搜集解析的内容监控。
建议:日志内容收集解析,目前主要有像splunk,elk stack等工具支持,其中elk在国内相对热度会更高,但同样有一定的人员能力要求,当然想开箱即用的话,蓝鲸日志平台也同样支持。