本文要点
- 应用状态检查补足应用层,不替代 EC2 既有的系统状态与实例状态检查。
- 创建检查时要明确协议、端口、路径和哪些 HTTP 响应码算健康,再按实例 ID 或标签关联。
- EC2 每 60 秒发起一次 HTTP 或 HTTPS 请求;检查通过只证明该探测路径满足条件,不等于全部业务正常。
- Auto Scaling group 可以根据应用状态发起恢复并替换不健康实例,但启用自动动作前必须验证启动、排空和预热流程。
- 功能发布时覆盖所有商业 AWS Regions 与 AWS GovCloud (US) Regions;价格应在启用前按 EC2 User Guide 现行说明复核。
为什么旧的两层状态都绿,用户仍可能报错
系统状态检查关注承载实例的 AWS 基础设施,实例状态检查关注实例操作系统与网络可达性。Web 进程退出、Docker daemon 停止、应用端口未监听、错误路由或业务健康端点失败时,这两层仍可能通过。
应用状态检查增加第三层主动探测。它适合需要在 EC2 控制面统一观察应用可达性,并希望 Auto Scaling 能对应用故障采取动作的团队;它不替代端到端交易、数据库语义或用户地区体验监控。
协议、端口、路径和状态码分别决定什么
协议决定 HTTP 或 HTTPS,端口决定目标监听点,路径决定实际探测的应用接口,响应码集合决定 EC2 如何判断健康。四项共同构成检查合同,任何一项过宽都会产生假绿。
不要只探测返回固定 200 的静态页。健康端点至少应确认进程能处理请求;是否检查关键依赖则按恢复策略决定,避免一个共享下游故障导致整个实例池同时被替换。
按实例 ID 还是标签关联
实例 ID 适合小规模、固定对象和试点;标签适合动态扩缩容和统一策略,但标签变更会改变检查覆盖面。上线前要定义标签 owner、允许值、变更审计和未匹配实例告警。
蓝绿或多版本环境应把版本、服务和环境标签分开,先验证新组再扩大关联。不要用一个过宽标签把开发、预发布与生产纳入同一健康合同。
从观察到自动恢复的七步上线
第一步记录当前系统、实例和应用监控基线;第二步选择代表性但不破坏业务的健康路径;第三步固定协议、端口、路径和健康码;第四步先关联少量实例;第五步验证正常、进程停止、端口关闭、错误状态码和网络配置错误;第六步接入告警并观察误报;第七步再让 Auto Scaling 根据应用状态替换实例。
自动替换前必须验证连接排空、生命周期钩子、启动脚本、配置拉取、容量余量和预热时间。否则探测能发现故障,却可能通过替换风暴扩大故障。
每 60 秒检查意味着什么
AWS 公告说明 EC2 每 60 秒请求一次检查目标。这个频率适合实例级状态发现,不应被写成 60 秒内一定恢复,也不代表告警和 Auto Scaling 动作没有额外判定时间。
短暂抖动、部署重启与冷启动可能跨过探测边界。应在非生产演练里测量从故障发生、状态变化、告警到替换完成的实际时间,并据此设置发布保护和容量。
限制、风险与常见误区
检查路径通过不等于登录、支付、消息队列或数据库事务都正常;HTTPS 成功也不等于证书生命周期无需单独监控。应用状态异常也不一定说明应替换实例,共享依赖、配置中心或网络策略故障可能影响整个组。
常见误区包括用 / 返回 200 冒充业务健康、把应用检查替代外部合成监控、按标签误关联生产实例、未经演练直接启用 ASG 替换,以及把所有不健康都归因于代理。
三层故障怎么排,何时查代理
系统状态失败先看 AWS 基础设施;实例状态失败先看操作系统、启动与实例网络;只有前两层通过而应用检查失败时,再按进程、端口、路径、状态码、TLS 和安全组顺序排查。对共享依赖故障应先阻止大规模自动替换。
若检查目标或运维 API 明确出现 DNS、TLS、连接超时或代理认证证据,可参考<a href="/resources/proxy-connection-troubleshooting-checklist">代理连接失败排查清单</a>。固定出口可用于稳定访问云控制面,可 <a href="/" target="_blank" rel="noopener noreferrer">访问 PuppyIP 官网</a>了解相关服务;它不能让失败应用恢复,也不能替代健康检查设计。
资料来源
常见问题
EC2 应用状态检查会替代系统和实例状态检查吗?
不会。它是应用层的第三层信号,应与系统状态、实例状态和外部监控一起使用。
应用状态检查多久执行一次?
AWS 公告说明 EC2 每 60 秒按配置的 HTTP 或 HTTPS 目标发起请求。
可以检查哪些内容?
创建检查时指定协议、端口、路径和健康响应码,可用于发现 Web 服务、Docker daemon、网络配置或接口不可用等问题。
怎么把检查关联到实例?
可以按实例 ID 或标签关联;动态环境更适合标签,但必须治理标签范围和变更。
应用检查失败后 Auto Scaling 一定会替换实例吗?
只有完成相应关联和恢复配置后,Auto Scaling group 才会依据应用状态采取替换动作;上线前应演练排空、预热和容量。
检查失败应该先换代理吗?
不应该。先区分系统、实例与应用层,再查进程、端口、路径、状态码、TLS 和网络策略;有明确代理错误时才处理代理。