Módulo de monitoreo de procesos de NodeJS
Este paquete se prueba solo con versiones Node.js LTS.
Nota: Este módulo actualmente funciona solo en los sistemas operativos de Linux .
Este módulo inicia un hilo separado dentro del tiempo de ejecución de NodeJS que monitorea y recopila estadísticas sobre el proceso NodeJS en ejecución. Estas estadísticas se envían como mensajes JSON a través de datagramas UDP a través de un socket de dominio local.
Aquí está la lista de datos que el módulo informa periódicamente:
{ 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> }
}
}
}
Proporciona la aplicación NodeJS en ejecución con la capacidad de introspectar la actividad de recolección de basura mediante la creación de propiedades de solo lectura en process.monitor.gc que informa:
count : Número de veces ocurrieron los eventos GC Stop-the-Worldelapsed : tiempo acumulativo (en milisegundos) que pasó en GCCon npm do:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;Genera un hilo y monitorea el proceso. Escribe estadísticas de proceso cada segundo a la ruta del socket.
monitor . stop ( ) ;Termina el hilo y cierra el enchufe.
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;Establece el nombre del socket de datagrama para escribir las estadísticas. Predeterminado se /tmp/nodejs.mon
Monitr es compatible con la funcionalidad de salud personalizada por la cual la aplicación puede informar su propia salud. Los siguientes métodos se agregan a Process.monitor para establecer y obtener la información de salud.
setHealthStatus ( isDown , statusCode )
isDown ( )
getStatusCode ( )
getStatusTimestamp ( ) - Return seconds when setHealthStatus was last called
getStatusDate ( ) - Return Date objectUna vez que se invoca SethealthStatus, el estado JSON, descrito anteriormente, tendrá después de campos adicionales.
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 instala un controlador SIGHUP personalizado que opcionalmente imprimirá un NodeJS Stack Backtrace del JavaScript que se está ejecutando actualmente. Esto puede ser útil para la depuración donde un proceso NodeJS puede estar atascado .
Busca archivos /proc /* en el sistema para informar el uso de la CPU. Busca archivos/PROC/PID/* en el sistema para informar sus propias estadísticas. process.monitor.* Los métodos se establecen mediante lib/monitor.js .
Llama al proceso. Monitor.* Métodos para informar solicitudes totales desde que se inició el monitoreo ( reqstotal ), las solicitudes actuales en vuelo ( oreqs ), las conexiones abiertas actuales ( oconns ) y los datos totales devueltos desde que se inició el monitoreo ( kb_trans ). NOTA: oreqs puede ser mayor que oconns cuando KeepAlive está habilitado .
Se adhiere a los ganchos de recolección de basura V8 al instrumento (para cada tipo de GC) las siguientes estadísticas para cada intervalo de informes.
count : Número de veces Tipo GC invocadoelapsed_ms : el hilo de nodejs de tiempo total transcurrido está bloqueadomax_ms : tiempo máximo que pasa bloqueado por cualquier evento GCConsulte Ejemplos/ReadMe.md para ver ejemplos que muestren el uso de estas funciones.