Módulo de monitoramento de processos nodejs
Este pacote é testado apenas com versões Node.js LTS.
Nota: Este módulo atualmente funciona apenas em sistemas operacionais Linux .
Este módulo inicia um encadeamento separado no tempo de execução do NodeJS que monitora e coleta estatísticas sobre o processo NodeJS em execução. Essas estatísticas são enviadas como mensagens JSON via datagramas UDP em um soquete de domínio local.
Aqui está a lista de dados que o módulo relata periodicamente:
{ 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> }
}
}
}
Ele fornece o aplicativo NodeJS em execução com a capacidade de introspectar a atividade de coleta de lixo, criando propriedades somente leitura em process.monitor.gc que relata:
count : Número de vezes GC Stop-the World Os eventos ocorreramelapsed : tempo cumulativo (em milissegundos) gasto no GCCom o npm do:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;Gerar um fio e monitora o processo. Escreve estatísticas de processo a cada segundo no caminho do soquete.
monitor . stop ( ) ;Termina o encadeamento e fecha o soquete.
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;Define o nome do soquete do datagrama para escrever as estatísticas. Padrões para /tmp/nodejs.mon
A Monitr suporta a funcionalidade de saúde personalizada pela qual o aplicativo pode relatar sua própria saúde. Os seguintes métodos são adicionados ao Process.Monitor para definir e obter as informações de saúde.
setHealthStatus ( isDown , statusCode )
isDown ( )
getStatusCode ( )
getStatusTimestamp ( ) - Return seconds when setHealthStatus was last called
getStatusDate ( ) - Return Date objectDepois que o SethealthStatus for invocado, o status JSON, descrito acima, terá os seguintes campos adicionais.
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 um manipulador SIGHUP personalizado que opcionalmente imprimirá um backtrace de nodejs do JavaScript atualmente sendo executado. Isso pode ser útil para depuração onde um processo NodeJS pode estar preso .
Ele procura arquivos para cima /proc /* no sistema para relatar o uso da CPU. Ele procura arquivos para cima/proc/pid/* no sistema para relatar suas próprias estatísticas. process.monitor.* Os métodos são definidos pelo lib/monitor.js .
Ele chama o Process.Monitor.* Métodos para relatar solicitações totais desde o início do monitoramento ( reqstotal ), solicitações atuais no voo ( oreqs ), conexões abertas atuais ( oconns ) e dados totais retornados desde o início do monitoramento ( kb_trans ). NOTA: oreqs pode ser maior que oconns quando o Keepalive está ativado .
Ele se liga aos ganchos de coleta de lixo V8 ao instrumento (para cada tipo de GC) as seguintes estatísticas para cada intervalo de relatório.
count : Número de vezes o tipo GC invocadoelapsed_ms : Total Time Dissed Time Nodejs Thread está bloqueadomax_ms : tempo máximo gasto bloqueado por qualquer evento GCConsulte Exemplos/Readme.md para obter exemplos mostrando o uso dessas funções.