AWS Elastic Beanstalk环境严重完整性告警、ELB健康检查404如何修复?
问题根因
从日志可以明确看到,Elastic Load Balancer(ELB)的健康检查服务默认向你的Express应用根路径/发起GET请求,而你的应用没有配置根路径对应的路由,返回了404状态码,不符合健康检查的200状态码要求,因此Elastic Beanstalk判定环境完整性异常。
以下是两种无需关闭监控的修复方案:
方案1:修改ELB健康检查配置
如果你不想修改应用代码,可直接调整健康检查的目标路径,适配你现有正常返回的接口:
- 进入Elastic Beanstalk控制台,打开对应环境的「配置」页面
- 找到「负载均衡」分类,点击编辑按钮
- 在「进程」板块找到你的Node.js应用对应的进程,将「健康检查路径」修改为你应用中已存在、可正常返回200状态码的接口路径(比如
/api/ping等) - 保存配置后等待环境更新完成即可
方案2:在Express应用中新增健康检查路由
更规范的做法是主动新增专门的健康检查接口适配监控规则,操作如下:
在你的Express应用路由代码中新增以下逻辑:
// 适配ELB默认根路径健康检查的路由 app.get('/', (req, res) => { // 可在此处扩展健康检查逻辑,比如校验数据库连接、依赖服务状态等 res.status(200).send('healthy'); });
如果你不想占用根路径,也可以新增专用健康接口:
app.get('/health', (req, res) => { res.status(200).send('ok'); });
新增代码后,重新打包应用上传到Elastic Beanstalk部署,同时将ELB健康检查路径修改为/health即可。
部署完成后,健康检查请求会正常拿到200返回值,环境状态会自动恢复为正常。
内容的提问来源于stack exchange,提问作者Leonardo Gusmão
相关产品推荐
相关产品推荐

