You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pm2-health进程终止/异常时重复发邮件,求配置优化方案

解决pm2-health重复发送告警邮件的问题

针对你遇到的重复告警邮件问题,可以通过调整以下配置项来实现每次事件仅发送一封对应告警邮件:

核心配置调整思路

  1. 优化批量告警设置,将同一事件周期内的多个通知合并为一封邮件
  2. 避免因PM2自动重启进程导致的多次exit事件告警
  3. 移除可能导致重复监控的配置项

修改后的module_conf.json配置

{
    "pm2-health": {
        "smtp": {
            "host": "smtp.gmail.com",
            "port": 587,
            "user": "sender@gmail.com",
            "password": "pass",
            "disabled": false
        },
        "mailTo": "receiver@gmail.com",
        "replyTo": "",
        "batchPeriodM": 3, // 延长批量周期至3分钟,覆盖PM2默认重启周期
        "batchMaxMessages": 15, // 调整单批最大消息数
        "events": [], // 移除exit事件,改用aliveTimeout监控进程状态
        "exceptions": true,
        "messages": true,
        "messageExcludeExps": [],
        "metric": {},
        "metricIntervalS": 60,
        "aliveTimeoutS": 300, // 进程停止5分钟后发送告警(等待PM2重启尝试结束)
        "addLogs": true,
        "appsExcluded": [],
        "snapshot": {
            "url": "",
            "token": "",
            "auth": {
                "user": "",
                "password": ""
            },
            "disabled": false
        }
    },
    "module-db-v2": {} // 移除pm2-health子配置,避免重复监控
}

配置说明

  • batchPeriodM: 从1分钟延长至3分钟,确保PM2重启进程产生的多次exit/exception事件能被合并到同一批邮件中
  • events: 清空数组,不再监听exit事件。改为依赖aliveTimeoutS,仅当进程停止且超过设定时间(未恢复)时发送一次告警
  • module-db-v2: 移除其中的pm2-health配置,防止启动多个监控实例导致重复发送邮件
  • aliveTimeoutS: 保持5分钟,等待PM2完成默认的重启尝试(最多10次)后,确认进程无法恢复再发送告警

可选调整(需即时告警的场景)

如果需要在手动停止进程时立即收到告警,可保留events: ["exit"],但需添加过滤规则排除PM2重启相关的exit事件:

"messageExcludeExps": [
    /PM2 restart/ // 根据实际日志内容调整正则,过滤重启触发的exit事件
]

这种方式需要你根据PM2重启时的日志内容编写匹配规则,确保仅保留真正的进程终止事件。

内容的提问来源于stack exchange,提问作者Phạm Tiến Hải

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:45:01