Модуль мониторинга процесса Nodejs
Этот пакет тестируется только с версиями Node.js LTS.
Примечание. Этот модуль в настоящее время работает только в операционных системах Linux .
Этот модуль запускает отдельный поток во время выполнения Nodejs, который контролирует и собирает статистику о процессе работы Nodejs. Затем эти статистические данные отправляются в виде сообщений JSON через DADP Datagrams через локальный домен.
Вот список данных, о которых периодически сообщает модуль:
{ 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> }
}
}
}
Он обеспечивает приложение Nodejs с возможностью интроспективной деятельности по сбору мусора, создавая свойства только для чтения в process.monitor.gc , в котором сообщается:
count : количество событий GC Stop-The World произошлоelapsed : кумулятивное время (в миллисекундах), проведенное в GCС NPM DO:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;Порождает нить и контролирует процесс. Записывает статистику процессов каждую секунду на путь розетки.
monitor . stop ( ) ;Заканчивает резьбу и закрывает гнездо.
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;Устанавливает имя сокета Datagram для написания статистики. По умолчанию к /tmp/nodejs.mon
Monitr поддерживает пользовательские функции здоровья, в которой приложение может сообщить о своем собственном здоровье. Следующие методы добавляются в процесс. Монитор для установки и получения медицинской информации.
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 , который при желании будет распечатать обратный удар Nodejs Stack, который в настоящее время выполняется JavaScript. Это может быть полезно для отладки, когда процесс Nodejs может быть застрял .
Он поиск файлов /proc /* в системе, чтобы сообщить об использовании процессора. Он ищет файлы/proc/pid/* в системе, чтобы сообщить о своей статистике. process.monitor.* Методы устанавливаются lib/monitor.js .
Он вызывает процесс. Monitor.* Методы сообщать об общих запросах с момента начала мониторинга ( reqstotal ), текущих запросов в полете ( oreqs ), текущих открытых соединений ( oconns ) и общих данных, возвращаемых с момента начала мониторинга ( kb_trans ). Примечание: oreqs могут быть больше, чем oconns , когда включена KeepAlive .
Он прикрепляется к крючкам сбора мусора V8 к инструменту (для каждого типа GC) следующие статистики для каждого интервала отчетности.
count : Количество раз, когда используется тип GCelapsed_ms : Поток общего времени nodejs блокируетсяmax_ms : максимальное время, проведенное заблокированным любым событием GCПожалуйста, обратитесь к примерам/readme.md для примеров, показывающих использование этих функций.