NodeJS -Prozessüberwachungsmodul
Dieses Paket wird nur mit Node.js LTS -Versionen getestet.
Hinweis: Dieses Modul funktioniert derzeit nur auf Linux -Betriebssystemen .
Dieses Modul startet einen separaten Thread innerhalb der NodeJS -Laufzeit, die Statistiken über den laufenden NodeJS -Prozess überwacht und sammelt. Diese Statistiken werden dann als JSON -Nachrichten über UDP -Datagramme über einen lokalen Domain -Socket gesendet.
Hier ist die Liste der Daten, die das Modul regelmäßig berichtet:
{ 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> }
}
}
}
Es bietet die laufende NodeJS-Anwendung mit der Möglichkeit, die Aktivität der Müllabfuhr zu intastrospektieren, indem sie bei process.monitor.gc schreibgeschützte Eigenschaften erstellen, die berichtet:
count : Häufigkeit, mit der GC-Stop-the-World-Ereignisse aufgetreten sindelapsed : Kumulative Zeit (in Millisekunden) in GC verbrachtMit npm tun:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;Erzeugt einen Faden und überwacht den Prozess. Schreibt Prozessstatistiken jede Sekunde in den Socket -Pfad.
monitor . stop ( ) ;Beendet den Faden und schließt den Sockel.
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;Legt den Datentagram -Socket -Namen so fest, dass die Statistiken geschrieben werden. Standardeinstellungen zu /tmp/nodejs.mon
Monitr unterstützt benutzerdefinierte Gesundheitsfunktionen, wobei die App ihre eigene Gesundheit melden kann. Die folgenden Methoden werden zu Process.Monitor hinzugefügt, um die Gesundheitsinformationen festzulegen und zu erhalten.
setHealthStatus ( isDown , statusCode )
isDown ( )
getStatusCode ( )
getStatusTimestamp ( ) - Return seconds when setHealthStatus was last called
getStatusDate ( ) - Return Date objectSobald SethealthStatus aufgerufen wurde, wird der oben beschriebene Status JSON nach zusätzlichen Feldern aufweisen.
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 installiert einen benutzerdefinierten SIGHUP -Handler, der optional einen NodeJS -Stapel -Backtrace des derzeit ausgeführten JavaScript ausdruiert. Dies kann zum Debuggen nützlich sein, wenn ein NodeJS -Prozess stecken bleibt.
Es schaut /proc /* -Dateien im System nach, um die CPU -Nutzung zu melden. Es schaut auf/proc/pid/* -Dateien auf dem System, um seine eigenen Statistiken zu melden. process.monitor.* Methoden werden von lib/monitor.js festgelegt.
Es oconns kb_trans reqstotal oreqs . HINWEIS: oreqs können größer sein als oconns , wenn Keepalive aktiviert ist .
Es wird an den V8 -Müllsammlungshaken an das Instrument (für jeden GC -Typ) den folgenden Statistiken für jedes Berichtsintervall angebracht.
count : Häufigkeit mit GC -Typ aufgerufenelapsed_ms : Die Gesamtzeit verstrichene Zeitknotenjs -Thread ist blockiertmax_ms : Maximale Zeit, die von einem GC -Ereignis blockiert wirdBeispiele finden Sie unter Beispiele/Readme.md, um Beispiele für die Verwendung dieser Funktionen zu erhalten.