为何Azure生产环境应用每13秒被/admin/host/ping请求(返回404)?
问题原因
这个/admin/host/ping请求是Azure App Service自动缩放组件的实例健康探测请求——因为仅prod环境启用了自动缩放,所以只有该环境会触发。由于你关闭了Always On,且应用未实现这个指定的探测端点,导致请求返回404状态码并堆积日志。自动缩放的健康检查默认会按固定周期(此处为13秒)发送请求,用于判断实例是否正常运行,以此决定扩容或缩容操作。
解决方法
方法1:实现健康探测端点(推荐)
在你的.NET应用中添加对应端点,返回200 OK状态码,适配自动缩放的健康检查要求。示例代码(Program.cs):
var builder = WebApplication.CreateBuilder(args); // 注册健康检查服务 builder.Services.AddHealthChecks(); var app = builder.Build(); // 将健康检查端点映射到/admin/host/ping app.MapHealthChecks("/admin/host/ping"); // 其他应用配置与中间件... app.Run();
部署后,该探测请求将返回200,不再生成404日志。
方法2:修改自动缩放的健康探测配置
如果不想新增端点,可以调整自动缩放的健康检查路径为应用已有的健康端点(如默认的/healthz),或调整探测频率:
- 登录Azure门户,进入目标App Service Plan或App Service的自动缩放配置页面
- 找到「健康探测」设置项
- 修改探测路径为应用中存在的有效端点,或调整探测间隔时间
- 保存配置生效
方法3:临时过滤日志(治标方案)
若仅需避免日志污染,可在App Insights中添加日志过滤规则,排除/admin/host/ping路径的404请求:
- 进入App Insights的「日志」页面
- 在查询语句中添加过滤条件:
where not (url endswith "/admin/host/ping" and resultCode == "404") - 将该查询保存为常用查询或配置日志导出过滤规则
内容的提问来源于stack exchange,提问作者Elliottgg
相关产品推荐
相关产品推荐

