Node.js 监控

简介: Node.js 监控

应用程序没有监控,就如同运行在一个黑盒子里一样,我们既不知道它现在的状况,也难免会担心它在未来某个时刻挂掉。本文将会介绍 Node.js 监控的相关内容。



01


监控指标



监控最终一定是落实到一个个具体指标上的,我们需要重点关注哪些指标,这些指标背后又意味着什么呢?


1、CPU Usage


通常情况下,Node.js 消耗的 CPU 资源是很小的,它使用异步非阻塞 IO ,然而 event loop 运行在主线程中,主线程也是可以被阻塞的(比如执行大量 CPU 密集型任务),这会导致 CPU 的使用率及负载过高。(在程序上应该尽量避免 CPU 密集型任务,或者将它们分发到 worker 中去执行)


监控指标:

  • CPU Usage
  • CPU Load



2、Memory Usage and Leaks


在理解内存的使用和泄漏之前,你需要先了解 heap 和 stack 是什么:stack 用来存储函数及其上下文;heap 则是一个更大的区域,用来存储动态分配的 everything 。单个进程可以拥有的最大 heap 是 1.5 GB ,内存泄漏的问题不容忽视,即使 node.js 所基于的 V8 引擎拥有垃圾回收( Garbage Collection )机制。内存泄漏很容易观察到。


监控指标:

  • Released memory between Garbage Collection Cycles
  • Process Heap Size
  • Process Heap Usage



3、Garbage Collection


Garbage collection 有两种类型:一种是 incremental garbage collection cycles 增量垃圾回收周期一次只处理 heap 中的一部分,快速高效;另一种是 full garbage collection cycles 全量垃圾回收周期,这种方式会暂停程序的执行,因此执行频率很低。


通过测量增量或全量垃圾回收周期的执行频率,我们可以看到它们回收内存所需的时间以及释放的内存大小,将释放的内存与 heap 大小进行比较,观察是否存在增长趋势。


监控指标:

  • Time consumed for garbage collection
  • Counters for full garbage collection cycles
  • Counters for incremental garbage collection cycles
  • Released memory after garbage collection



4、Event Loop


Event loop 很特别,它将任务以异步的方式分发到主线程之外去执行,而它本身则需要处理这些事件的响应,也就是异步的回调函数。事件驱动很高效,但是可能会出现 event loop lag(事件驱动滞后),常见的原因是 long-running synchronous processes 和 incremental increase in tasks per loop 。


Long-running synchronous processe : 请注意在应用程序中处理同步执行的方式,毕竟其他操作都需要进行等待。Node.js 著名的规则就是 “Don't block the event loop”,正如上文所述,你可以使用 forks 或者子进程。


Incremental increase in tasks per loop : 事件循环的负载和任务数可能会增加,而 node.js 需要跟踪这些事件循环需要处理的所有异步函数,这可能会导致事件循环的滞后。当然不用过于担心,使用集群模式可以很好的解决这个问题。


监控指标:

  • Slowest Event Handling ( Max Latency )
  • Fastest Event Handling ( Min Latency )
  • Average Event Loop Latency



5、Cluster-Mode and Forking Worker  Processes


集群模式和 worker 进程也是现在用的比较多的地方,同样需要进行关注。


监控指标:

  • Worker count
  • Event loop latency per worker



6、Request/Response Latency


我们的服务最终都是处理请求和响应,监控自然必不可少。


监控指标:

  • Response time
  • Request rate
  • Error rates
  • Request/Response content size




02


开源监控工具



介绍几个开源的监控工具,开箱即用。


1、Prometheus


https://prometheus.io 


普罗米修斯,开源的社区驱动的大名鼎鼎的工具,它可是和 Kubernetes 一样,都是从 Cloud Native Computing Foundation(云原生计算基金会)毕业的项目。这个工具是跨语言的。


2、PM2


https://github.com/Unitech/pm2


大家应该用得挺多。


3、Appmetrics


https://github.com/RuntimeTools/appmetrics-dash 


4、Clinic.js


https://github.com/nearform/node-clinic


5、Express Status Monitor


https://github.com/RafalWilinski/express-status-monitor

目录
相关文章
|
6月前
|
监控 JavaScript 前端开发
使用Vue.js开发员工上网行为监控的实时数据展示页面
使用Vue.js开发的实时员工上网行为监控页面,展示员工访问的网站、应用和时间等数据。页面响应式设计,适应不同设备。通过Vue组件显示实时数据,如`<li v-for="activity in activities">`循环渲染。数据定时更新,利用Vue的生命周期钩子和axios从服务器获取并自动刷新,确保数据的时效性。该页面有助于管理者即时了解员工网络活动,保障企业网络安全和资源管理。
199 5
|
2月前
|
XML 监控 JavaScript
JavaScript 语言对企业上网监控的技术支持
在数字化企业环境中,上网监控对企业信息安全和提升员工效率至关重要。JavaScript 作为广泛应用的脚本语言,提供了强大的技术支持,包括数据获取与分析、与服务器端交互、监控页面加载时间和网络活动,助力企业有效管理上网行为,保障信息安全。
33 6
|
7月前
|
监控 JavaScript API
局域网监控软件的实时通知系统:利用Node.js和WebSocket实现即时消息推送
本文介绍了如何使用Node.js和WebSocket构建局域网监控软件的实时通知系统。实时通知对于网络安全和家庭监控至关重要,能即时发送监控数据变化的通知,提高响应速度。通过Node.js创建WebSocket服务器,当数据变化时,监控软件发送消息至服务器,服务器随即推送给客户端。此外,还展示了如何利用Node.js编写API,自动将监控数据提交到网站,便于用户查看历史记录,从而提升监控体验。
193 3
|
7月前
|
监控 JavaScript 前端开发
使用JavaScript开发公司电脑监控软件:利用WebSocket实现实时监控
使用JavaScript和WebSocket实现员工电脑监控软件,通过WebSocket服务器实现实时数据传输。监控软件发送数据到服务器,服务器接收到数据后可自动提交至指定网站,提升企业管理效率和保障安全性。
187 2
|
7月前
|
监控 JavaScript 安全
监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
在当今信息技术高度发达的时代,监控内网电脑的需求日益增长。企业需要确保网络安全,个人用户也需要监控家庭网络以保护隐私和安全。本文将介绍一种基于Node.js的服务器端架构,用于设计和实现监控内网电脑软件。
219 0
|
7月前
|
存储 监控 前端开发
JavaScript手册:公司员工电脑监控软件前端交互的代码设计
在当今信息时代,随着公司对员工电脑活动的监控需求不断增加,前端交互的代码设计变得尤为关键。本手册将深入探讨JavaScript编写的公司员工电脑监控软件监控代码,着重介绍如何设计能够在不引起怀疑的情况下,实现对员工电脑活动的细致监控。
268 2
|
监控 前端开发 JavaScript
使用JavaScript实现实时报警功能的办公电脑上网监控软件:前端代码
在今天的数字化时代,监控软件已成为许多组织和企业必不可少的一部分,用于保护数据和确保系统的正常运行。本文将介绍如何使用JavaScript编写前端监控软件,包括实时报警功能的实现。我们将探讨一些关键的代码示例,以展示如何构建这样的系统。最后,我们还会讨论如何自动将监控到的数据提交到一个网站。
306 4
|
7月前
|
监控 JavaScript 前端开发
Vue.js前端开发:为员工计算机监控软件定制动态界面
在当今数字化的工作环境中,员工计算机监控软件的需求日益增加。为了满足不同企业的需求,我们需要一种灵活且高度定制化的监控软件。本文将介绍如何利用Vue.js构建一个动态界面,为员工计算机监控软件提供个性化的前端体验。
250 0
|
7月前
|
JSON 监控 JavaScript
Node.js实战:搭建公司局域网监控软件的实时通知系统
在公司局域网环境中,建立一套实时监控系统对于确保网络安全和维护公司正常运作至关重要。本文将介绍如何利用Node.js搭建一个局域网监控软件,并实现实时通知系统,以便及时响应异常情况。
282 0
|
Prometheus 监控 Cloud Native
【实战】CentOS7 Prometheus+Grafana面板搭建+监控node_exporter+监控mysqld_exporter
有3台主机(CentOS7): 192.168.188.100 服务端 192.168.188.101 客户端 192.168.188.102 客户端 100部署Prometheus(9090)+Grafana(3000) 101部署node_exporter(39100)模块,监控该服务器所用资源情况 102部署mysqld_exporter(39200)模块,监控该服务器上的数据库使用情况
766 0