process-watcher
It is responsible for:
-
Listen to all the nodejs processes.
-
Send SIGHUP to the process, which didn't have any throughput of events within 30 seconds.
-
Send SIGKILL to the process, which didn't die after getting SIGHUP withing 30 seconds.
-
Send SIGKILL to the process, which stopped sending status updates for 60 seconds.
-
Write following metrics for respective events described above.
- watcher.proc.died: Incremented when process has died for any reason, potentially caused by SIGKILL or other means.
- watcher.proc.graceful: Incremented if SIGHUP was sent to process.
- watcher.proc.killed: Incremented when watcher sends the SIGKILL to the process.
- watcher.reqcpu: Metric demonstrating an average of how many CPU jiffies per request process consumes.
Note: process-watcher depends on monitr to provide status of worker process. For every worker, monitr needs to be started. For more details on monitr, please refer - https://github.com/yahoo/monitr/blob/master/README.md and for code example refer to https://github.com/yahoo/monitr/blob/master/examples/monitor_me.js.
install
With npm do:
npm install process-watcher
usage
var watcher = ;var watcher_instance = metric : watcher_metric config : watcher_config ;
example
var watcher = ; /* * Dummy metric monitoring object. */var watcher_metric = /** * Increments metric */ { // Add implementation as necessary } /** * Set the metric or multiple metrics at the same time. * */ { // Add implementation as necessary }; var dgpath = '/tmp/watcher_test_dgram' statusPath = '/tmp/watcher_status_path_test' watcher_config = max_inactive : 0001 monitor : 0001 monPath: dgpath timeout : 30 timeout_start : 60 ; //Instantiate watchervar watcher_instance = metric : watcher_metric config : watcher_config ;