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

如何为Azure Web App配置秒级健康检查及异常通知?

为ASP.NET Core Azure Web App配置秒级健康检查及异常通知

一、先确认ASP.NET Core健康检查端点有效性

确保你的/healthcheck端点已正确配置数据库连通性检测,示例配置代码如下(Program.cs):

builder.Services.AddHealthChecks()
    .AddSqlServer(builder.Configuration.GetConnectionString("YourDbConnection"));

app.MapHealthChecks("/healthcheck", new HealthCheckOptions
{
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});

部署后访问https://<your-app-name>.azurewebsites.net/healthcheck验证:数据库正常时返回200状态码,异常时返回5xx状态码。

二、实现秒级健康检查+异常通知

Azure原生健康检查最小间隔为1分钟,无法满足秒级需求,以下是两种可行的自定义实现方案:

方案1:Azure Functions定时触发+端点调用+邮件通知

通过定时触发的Azure Functions实现秒级频率的端点检测,异常时发送邮件:

  1. 创建定时触发的Azure Function
    • 选择定时器触发类型,设置CRON表达式为*/10 * * * * *(每10秒执行一次,可根据需求调整)
    • 编写Function代码调用健康检查端点并判断状态:
      public static async Task Run([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer, ILogger log)
      {
          using var httpClient = new HttpClient();
          var response = await httpClient.GetAsync("https://<your-app-name>.azurewebsites.net/healthcheck");
          if (!response.IsSuccessStatusCode)
          {
              await SendAlertEmail();
          }
      }
      
      private static async Task SendAlertEmail()
      {
          // 使用Azure SendGrid发送邮件(需先配置SendGrid API密钥)
          var client = new SendGridClient("<your-sendgrid-api-key>");
          var msg = new SendGridMessage()
          {
              From = new EmailAddress("alerts@yourdomain.com", "Web App健康警报"),
              Subject = "Web App数据库健康检查失败",
              PlainTextContent = "/healthcheck端点返回错误,数据库连通性可能中断,请及时排查。"
          };
          msg.AddTo(new EmailAddress("your-email@domain.com"));
          await client.SendEmailAsync(msg);
      }
      
  2. 配置通知服务
    • 启用Azure SendGrid服务,获取API密钥后替换代码中的占位符,也可改用自定义SMTP服务器实现邮件发送。

方案2:Azure Monitor自定义日志警报(准秒级)

利用Web App请求日志结合Azure Monitor实现接近秒级的异常检测:

  1. 开启Web App日志记录
    • 在Azure Web App的「监控→日志」中,开启应用日志与HTTP日志,确保/healthcheck的请求日志被同步到Azure Monitor日志。
  2. 创建自定义警报规则
    • 进入Azure Monitor→「警报→创建警报规则」,选择目标Web App作为资源
    • 条件选择「自定义日志搜索」,编写Kusto查询筛选失败请求:
      AppRequests
      | where Uri contains "/healthcheck"
      | where ResultCode startswith "5"
      | count
      
    • 设置触发条件为「计数大于0」,检测间隔设为1分钟(Azure Monitor最小间隔)
    • 在「操作组」中添加邮件通知,配置收件邮箱,触发时自动发送警报邮件。

三、Azure原生健康检查(分钟级场景适用)

若可接受分钟级检测频率(最小1分钟),可直接使用Azure自带功能:

  • 在Web App的「监控→健康检查」中开启服务,输入/healthcheck作为检查路径
  • 配置失败阈值(如连续3次失败触发),再创建基于健康检查状态的警报规则,添加邮件通知操作组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:10:12