首页/系统与基础设施/自动化运维速查/自动化前置检查与后置校验
自动化基础与选型50 条

自动化前置检查与后置校验

前置检查在变更动手前确认环境与权限满足条件,后置校验在变更完成后确认结果真正生效;两者把「任务返回成功」与「业务实际可用」区分开来。检查项应可自动判定、失败即停,校验项要覆盖服务状态、端口监听、日志关键字与自身观测,缺一就会把故障留给业务方先发现。

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

为什么两端都要做

任务返回成功只说明命令执行完毕,不说明目标状态正确:配置写入了但服务没重载、进程起来了但端口没监听、端口在监听但上游连接被拒绝。前置检查解决「在不该动手的时候动手」,例如目标磁盘已满、依赖服务未就绪、当前处于变更禁期;后置校验解决「改完了其实没生效」。两者都要能自动判定,否则等于没有。

基本信息

前置检查环境、权限、依赖、变更窗口是否满足
后置校验服务状态、端口、日志、业务探活是否正常
失败处理前置失败不执行变更,后置失败触发回退或告警
判定要求输出明确成功或失败,不依赖人工看图

常用检查项

  • 前置:目标磁盘剩余空间与内存余量是否足够。
  • 前置:依赖服务与数据库是否可达、有无正在进行的变更。
  • 前置:执行账号权限与提权配置是否可用。
  • 后置:服务进程与单元状态是否为运行中。
  • 后置:端口是否处于监听且连接可用。
  • 后置:日志中是否出现启动完成关键字,或是否出现错误关键字。

两端检查的写法

两端检查的写法
# 前置:空间不足直接退出,不进入变更
avail=$(df -Pm /var | awk 'NR==2 {print $4}')
if [ "${avail}" -lt 2048 ]; then
  echo '前置检查失败:/var 可用空间不足 2GB'; exit 1   # 失败即停
fi

systemctl restart app
sleep 3

# 后置:三重校验,任一不通过就算变更失败
systemctl is-active --quiet app || { echo '服务未运行'; exit 1; }
ss -lntp | grep -q ':8080 ' || { echo '端口未监听'; exit 1; }
tail -n 50 /var/log/app/app.log | grep -q 'started' || { echo '未见启动完成日志'; exit 1; }
echo 'OK: 变更已生效'

检查项与判读

阶段检查项不通过的表现
前置磁盘与内存余量变更中途写入失败
前置依赖服务可达配置写入成功但业务仍不可用
前置账号与提权任务中途权限拒绝而中断
后置服务状态进程未起或反复重启
后置端口监听服务在跑但未监听预期端口
后置日志关键字存在错误堆栈或未完成初始化
校验要覆盖「使用者视角」:自家健康检查通过不代表业务可用,关键链路最好由业务方提供一条可调用的探活接口,自动化直接调用它判断。
校验也要有时间概念:服务刚重启时接口可能暂时不可用,需设置合理的重试与等待窗口,避免把正常启动过程判为失败。

易错点

  • 只靠任务返回码判断成功:命令执行完了但服务没重载,问题留给业务方先发现
  • 没有前置检查:在磁盘已满或依赖未就绪时动手,变更中途失败并留下半成品状态
  • 后置校验项与实际目标不一致:只检查进程存在,不检查端口与业务探活,故障仍会透出
  • 校验没有等待窗口:服务正常启动需要十几秒,立即判定失败并触发回退,造成反复重启

数据来源与参考

  • Google SRE 工作手册(变更验证与服务水平指标章节)
  • Kubernetes 官方文档(就绪探针与存活探针)
  • Red Hat《Ansible 官方文档:assert 与 check mode》

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/pre-check-post-verify-automation.html

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