首页/系统与基础设施/自动化运维速查/自愈动作的触发与边界
巡检与自助运维60 条

自愈动作的触发与边界

自愈适合可预期、可重复、可回退的故障,例如重启进程、摘除实例、清理可重建的临时数据;不可逆动作如删除数据、缩容、改权限必须走人工审批。护栏包括动作限流、时间窗限制、最小实例数保护与失败转人工,并完整记录每次执行前后的状态。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌​‌‌​​​‌‌​​‌‌​​​‌​‌‌​‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

自愈的边界在哪

自愈的价值是把可预期的重复故障从人工流程中移除,边界在于三个前提:自动动作必须可回退、影响面可估算、失败能交回人工。安全的自愈动作通常是重启进程、摘除实例、清理可重建的临时数据;数据删除、缩容、权限与网络变更则不应进入自动路径。

基本信息

可自愈范围重启进程、摘除流量、重建无状态实例
必须人工数据删除、缩容、权限与网络变更
前置条件判定信号明确且故障可复现
保护措施动作限流、时间窗限制、失败转人工
回退要求每个自动动作都有对应回退路径

典型使用场景

  • 进程无响应:重启或拉起实例,前提是不依赖本地持久化状态
  • 实例级故障:从负载均衡摘除并重建,避免影响同组其他实例
  • 缓存与临时目录异常:清理可重建的临时数据,不触碰业务数据
  • 反复重启无效:达到尝试上限即停止并升级人工,避免重启循环
  • 演练验证:先在预演环境验证自愈逻辑与回退路径,再开放生产权限

动作风险分级

动作风险处理方式
重启进程低,短暂中断可直接自动执行
摘除实例中,容量下降需配合最小实例数保护
重建实例中,本地数据可能丢失需确认无本地状态
删除或缩容高且不可逆必须人工审批

自愈动作的护栏写法

自愈动作的护栏写法
# 护栏一:动作限流,避免短时间内反复重启
if [ $retry_count -ge 3 ]; then
  echo give-up-escalate-to-human >> selfheal.log   # 达到上限转人工
  exit 0
fi
# 护栏二:只在允许窗口内执行,避开业务高峰
hour=$(date +%H)
[ $hour -ge 2 ] && [ $hour -le 5 ] || exit 0
# 护栏三:最小实例数保护,摘除前确认同组仍有可用实例
running=$(curl -fsS http://lb/status | grep -c up)
[ $running -gt 2 ] || echo keep-instance >> selfheal.log
自愈动作要有次数与时间窗限制,并记录每次执行前后的状态。缺少记录时,反复重启会被当成稳定的自愈成功,从而掩盖进程正在反复崩溃这一事实。
任何不可逆动作都不应自动执行。删除数据、缩容、修改权限与网络配置一旦被误触发,恢复成本远高于节省的时间,这类动作必须保留人工审批与二次确认。

易错点

  • 自愈没有次数上限:陷入重启循环,故障被掩盖到彻底不可用才被发现
  • 自动执行不可逆动作:一次误判直接造成数据丢失或容量不足
  • 缺少回退路径:自愈后环境处于中间状态,人工接手时不知如何恢复
  • 未确认本地状态:重建实例导致本地持久化数据丢失

数据来源与参考

  • Google SRE 系列:自动化与减少琐碎工作
  • Kubernetes 官方文档:控制器与自愈机制
  • ITIL 4 服务管理实践:事件管理

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/self-healing-trigger-boundary.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌​‌‌​​​‌‌​​‌‌​​​‌​‌‌​‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​