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

如何在Azure WebJob状态中止时获取通知?附相关配置说明

如何在Azure WebJob中止时获取通知

针对你的需求,结合已启用Always Availability、SCM_COMMAND_IDLE_TIMEOUT = 2000和WEBJOBS_IDLE_TIMEOUT = 2000的配置,这里有几个可靠的实现方案:

方案1:Azure Monitor警报(最推荐,开箱即用)

Azure Monitor是最直接的监控方式,能精准捕获WebJob状态变化并触发通知:

  • 登录Azure门户,找到WebJob所属的App Service
  • 导航至「监控」>「警报」>「创建警报规则」
  • 在「信号名称」中选择WebJob 状态,配置触发条件为「状态变为Aborted」
  • 配置动作组:可以选择发送邮件/短信,或者调用Azure Function、Logic Apps执行自定义逻辑
  • 👉 注意:因为你启用了Always Availability,App Service实例不会休眠,监控会持续运行,不会错过任何状态变更

方案2:WebJob代码中添加自定义中止事件处理

如果需要更灵活的通知逻辑,可以在代码里直接捕获中止事件:

  • 对于连续运行的WebJob,注册JobHostStopping事件,在事件回调里发送通知(比如调用邮件API、推送消息到Teams等)
  • C#示例代码:
var config = new JobHostConfiguration();
// 注册中止前的事件
config.JobHostStopping += (sender, args) =>
{
    // 这里替换成你的通知逻辑
    SendAlertNotification("WebJob已中止,触发原因可能是Idle超时或异常");
};

var host = new JobHost(config);
host.RunAndBlock();
  • 这个方案能覆盖Idle超时中止(对应你的WEBJOBS_IDLE_TIMEOUT配置)和意外中止两种场景

方案3:诊断日志+Log Analytics规则

如果需要结合日志上下文分析中止原因,同时触发通知:

  • 先启用App Service的「诊断日志」,将WebJob日志输出到Azure Log Analytics
  • 在Log Analytics中创建查询规则,检测包含中止关键词的日志:
AppServiceConsoleLogs
| where Message contains "Job stopped due to abort" or Message contains "Aborted"
| project TimeGenerated, Message, _ResourceId
  • 配置该查询的警报规则,当匹配到结果时触发通知动作

额外注意事项

  • 你的WEBJOBS_IDLE_TIMEOUT = 2000意味着连续WebJob idle超过2000秒会自动中止,上述所有方案都能捕获这个场景
  • SCM_COMMAND_IDLE_TIMEOUT是针对SCM站点的超时设置,和WebJob的中止通知没有直接关联,但Always Availability确保了监控服务不会因为实例休眠而失效

内容的提问来源于stack exchange,提问作者Sowjanya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:57