Azure App Service上Node.js应用崩溃邮件通知方案咨询
解决方案:Azure App Service Node.js应用崩溃邮件通知
Azure原生简单方案(低成本/免费)
1. Azure Monitor 指标警报
- 进入你的App Service资源,依次点击「监控」→「警报」→「创建警报规则」
- 信号选择:在"信号名称"里选「进程退出」(对应Node.js应用崩溃后的进程终止事件),或者选择「异常率」指标
- 阈值配置:设置触发条件,比如"过去5分钟内进程退出次数 ≥1"
- 动作组:新建动作组,选择「电子邮件/短信/推送/语音」,添加收件邮箱,免费层的Azure Monitor提供一定额度的免费警报通知
2. 健康检查 + 警报
- 先在Node.js应用中添加一个健康检查端点,比如:
app.get('/health', (req, res) => { res.status(200).send('OK'); }); - 进入App Service的「监测」→「健康检查」,启用健康检查并填写刚才的
/health端点 - 创建警报规则,选择信号为「健康检查状态」,设置"失败次数 ≥1"的阈值,关联之前的邮件动作组,当应用崩溃导致健康检查失败时触发通知
3. 日志查询警报(更精准)
- 开启App Service的日志记录:进入「监测」→「诊断设置」,将日志发送到Log Analytics工作区(免费层有额度)
- 在Log Analytics中编写查询规则,比如捕获Node.js未处理异常:
AppServiceConsoleLogs | where Message contains "uncaughtException" or Message contains "fatal error" | where TimeGenerated > ago(5m) - 基于这个查询创建警报,当返回结果数大于0时触发邮件通知
免费第三方方案
1. PM2 + 邮件通知
- 在App Service中用PM2管理Node.js进程:将启动命令改为
pm2 start app.js --no-daemon - 安装PM2通知插件:
npm install pm2-notify - 在PM2配置文件(
ecosystem.config.js)中配置SMTP信息:module.exports = { apps: [{ name: 'your-app', script: 'app.js' }], notify: { email: { from: 'your-alert-email@example.com', to: 'your-receive-email@example.com', service: 'gmail', auth: { user: 'your-alert-email@example.com', pass: 'your-app-password' } } } }; - 当PM2检测到进程崩溃重启时,会自动发送邮件通知
2. Sentry免费版
- 在Sentry官网注册免费账户,创建Node.js项目,获取DSN
- 在Node.js应用中集成Sentry:
const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'your-sentry-dsn', tracesSampleRate: 1.0, }); // 捕获未处理异常 process.on('uncaughtException', (err) => { Sentry.captureException(err); process.exit(1); }); - 在Sentry项目的「Alerts」设置中添加邮件通知规则,当捕获到崩溃异常时自动发送邮件
内容的提问来源于stack exchange,提问作者Jess
相关产品推荐
相关产品推荐

