nodejs流程监视模块
此软件包仅使用Node.js LTS版本测试。
注意:此模块当前仅在Linux操作系统上工作。
该模块在nodejs运行时启动了一个单独的线程,该线程监视并收集有关运行nodejs进程的统计信息。然后,这些统计信息通过局部域套接字通过UDP数据报作为JSON消息发送。
这是模块报告定期报告的数据列表:
{ status:
{ pid: <pid of the node process>,
ts: <current time stamp>,
cluster: <process group id>,
reqstotal: <total requests processed by this node process server>,
utcstart: <when the process was started>,
events: <number of new reports being processed since last stats reporting>,,
cpu: <cpu usage>,
mem: <memory usage>,
cpuperreq: <cpu usage per request>,
oreqs: <current open requests count>,
sys_cpu: <system cpu load>,
oconns: <current open connections count>,
user_cpu: <user cpu load>,
rps: <requests per second>,
kbs_out: <kbs of data transferred since last stats reporting>,
elapsed: <time elapsed since last event>,
kb_trans: <total kbs of data transferred>,
jiffyperreq: <cpu usage in terms of ticks per request>,
gc: {
scavenge: { count: <number>, elapsed_ms: <number>, max_ms: <number> },
marksweep: { count: <number>, elapsed_ms: <number>, max_ms: <number> }
}
}
}
它通过在process.monitor.gc上创建仅阅读的属性来提供运行的nodejs应用程序,以便能够进行内省垃圾收集活动:
count :发生GC停止世界事件的次数elapsed :累积时间(以毫秒为单位)与NPM一起做:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;产生线程并监视过程。每秒写入套接字路径。
monitor . stop ( ) ;终止线程并关闭插座。
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;设置数据报套接字名称以编写统计数据。默认为 /tmp/nodejs.s.mon
Monitr支持自定义健康功能,该应用程序可以报告自己的健康。将以下方法添加到Process.Monitor设置并获取健康信息。
setHealthStatus ( isDown , statusCode )
isDown ( )
getStatusCode ( )
getStatusTimestamp ( ) - Return seconds when setHealthStatus was last called
getStatusDate ( ) - Return Date object一旦调用了Sethealthstatus,上述状态JSON将有其他字段。
health_status_timestamp : < timestamp when the setHealthStatus was invoked , in sec > ,
health_is_down : < app is down or up , boolean > ,
health_status_code: < health status code >Monitr安装了一个自定义的SIGHUP处理程序,该处理程序将可选地打印出当前正在执行的JavaScript的NodeJS堆栈返回。这对于调试NodeJS进程可能卡住可能很有用。
它在系统上查找 /proc /*文件以报告CPU使用情况。它在系统上查找/proc/pid/*文件以报告自己的统计数据。 process.monitor.*方法由lib/monitor.js设置。
它调用process.monitor。*自监视启动以来的总请求的方法( reqstotal ),飞行中的当前请求( oreqs ),当前的开放连接( oconns )(OCONNS)和自监视启动以来返回的总数据( kb_trans )。注意:当启用KeepAlive时, oreqs可能大于oconns 。
它将每个报告间隔的以下统计数据连接到V8垃圾收集钩(对于每种GC类型)上。
count :调用GC类型的次数elapsed_ms :总计时间nodejs线程被阻止max_ms :最大时间被任何一个GC事件阻止请参阅示例/readme.md,以显示这些功能使用的示例。