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

发布于 2022-09-05 19:55:44 字数 221 浏览 10 评论 0

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拍不死你 2022-09-12 19:55:44

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

掌心的温暖 2022-09-12 19:55:44

通过监听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);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文