Module de surveillance du processus NodeJS
Ce package est testé uniquement avec les versions Node.js LTS.
Remarque: Ce module fonctionne actuellement uniquement sur les systèmes d'exploitation Linux .
Ce module démarre un thread séparé dans l'exécution NodeJS qui surveille et collecte des statistiques sur le processus NodeJS en cours d'exécution. Ces statistiques sont ensuite envoyées sous forme de messages JSON via des datagrammes UDP sur une prise de domaine locale.
Voici la liste des données que le module rapporte périodiquement:
{ 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> }
}
}
}
Il fournit l'application NodeJS en cours d'exécution avec la possibilité d'introspecter l'activité de collecte des ordures en créant des propriétés en lecture seule sur process.monitor.gc qui rapporte:
count : Nombre de fois où les événements GC Stop-the-World se sont produitselapsed : temps cumulatif (en millisecondes) passé en GCAvec npm do:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;Proigne un fil et surveille le processus. Écrit les statistiques de processus à chaque seconde sur le chemin de socket.
monitor . stop ( ) ;Termine le fil et ferme la douille.
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;Définit le nom du socket datagram pour écrire les statistiques. Par défaut à /tmp/nodejs.mon
Monitr prend en charge les fonctionnalités de santé personnalisées par lesquelles l'application peut signaler sa propre santé. Les méthodes suivantes sont ajoutées au processus.Monitor pour définir et obtenir les informations de santé.
setHealthStatus ( isDown , statusCode )
isDown ( )
getStatusCode ( )
getStatusTimestamp ( ) - Return seconds when setHealthStatus was last called
getStatusDate ( ) - Return Date objectUne fois que Sethealthstatus est invoqué, le statut JSON, décrit ci-dessus, aura des champs supplémentaires suivants.
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 installe un gestionnaire SIGHUP personnalisé qui imprimera éventuellement une backtrace de pile NodeJS du JavaScript actuellement exécuté. Cela peut être utile pour déboguer lorsqu'un processus NodeJS peut être bloqué .
Il recherche les fichiers / proc / * sur le système pour signaler l'utilisation du processeur. Il recherche les fichiers / proc / pid / * sur le système pour signaler ses propres statistiques. process.monitor.* Les méthodes sont définies par lib/monitor.js .
Il appelle le processus.Monitor. * Méthodes pour signaler les demandes totales depuis le démarrage du suivi ( reqstotal ), les demandes actuelles en vol ( oreqs ), les connexions ouvertes actuelles ( oconns ) et les données totales renvoyées depuis le démarrage du suivi ( kb_trans ). Remarque: oreqs peuvent être supérieurs aux oconns lorsque Keepalive est activé .
Il se fixe aux crochets de collecte de déchets V8 à l'instrument (pour chaque type GC) les statistiques suivantes pour chaque intervalle de rapport.
count : nombre de fois de type GC invoquéelapsed_ms : le fil de nodejs temporel total écoulé est bloquémax_ms : Temps maximum passé bloqué par un événement GCVeuillez vous référer aux exemples / readme.md pour des exemples montrant l'utilisation de ces fonctions.