用pm2守护node应用,能否有某种方式在app进程出现异常、退出进行告警呢

我这边可以在程序中新增一个告警逻辑,初步是发邮件通知我自己,后续可以加上短信通知。

但是我想知道能否在pm2的脚本中,增加这么一段逻辑,监听process.on('exit')等异常情况,去访问我的告警逻辑呢?

看过PM2官网的相关api,发现更多的pm2对运行中的process发消息,而不是我想要的这种情况。当然ali-node有成熟的方案,但是我这边由于主机网络、环境的限制并不能用这个方案

阅读 4.7k
2 个回答

那就自己写一个发短信或邮件的程序,见听到异常的时候就调用就好.

通过监听process.on('exit')来实现楼主的需求的话,存在潜在的问题,如果存在异步逻辑(比如发邮件、短信)的话,那异步逻辑是不会被执行的。

楼主可以对比下面两段代码,通过pm2先后启动、重启应用,同时通过pm2 logs查看实时日志,你会发现

  1. process.on('exit')版本:程序猿小卡:after 1 second没有被打印出来。
  2. SIGINT版本:程序猿小卡:after 1 second被打印出来。

process.on('exit')版本

var http = require('http');
http.createServer(function (req, res) {
    res.end('hello');
}).listen(3000);

process.on('exit', function () {
    console.log('程序猿小卡:before exit');

    setTimeout(function () {
        console.log('程序猿小卡:after 1 second');
    }, 1000);
});

SIGINT版本

var http = require('http');
http.createServer(function (req, res) {
    res.end('hello');
}).listen(3000);


process.on('SIGINT', function() {
    console.log('程序猿小卡:before exit');
       setTimeout(function () {
        console.log('程序猿小卡:after 1 second');
        process.exit();
    }, 1000);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题