首页/系统与基础设施/自动化运维速查/巡检脚本的只读与幂等原则
巡检与自助运维60 条

巡检脚本的只读与幂等原则

巡检脚本必须只读、幂等、无状态,并对采集失败明确报错。只读保证巡检不成为未评审的变更,幂等与无状态保证重试与补跑结论一致,修复逻辑应独立于巡检。

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

巡检脚本的只读与幂等原则是什么

巡检脚本必须只读:只采集与判断,不修改被检对象。直接原因是巡检通常以高权限、批量、周期性的方式运行,一旦带副作用,就会在无人评审的情况下反复改变系统状态。幂等是第二条约束:脚本被重复执行(重试、补跑、并发)时结论一致且不产生累积副作用。此外脚本应无状态(不依赖上次运行的残留文件)、可重复(同一输入同一结果),并对异常输入给出明确失败而非静默跳过。

基本信息

只读要求不修改配置、不重启服务、不清理文件
幂等要求重复执行结论一致,无累积副作用
无状态要求不依赖上次运行留下的临时文件
异常处理采集失败明确报错,不作静默跳过
权限要求尽可能使用只读权限账号执行

典型使用场景

  • 采集配置与状态用于与基线比对
  • 检查服务与端口可用性
  • 读取日志做关键字与错误率统计
  • 检查磁盘与资源使用率
  • 对证书与备份做只读可用性校验

巡检脚本自检清单

巡检脚本自检清单
# [ ] 是否修改了被检对象(配置、服务、文件、参数)
# [ ] 是否创建临时文件未清理,或依赖上次运行的残留
# [ ] 重复执行两次结论是否一致
# [ ] 采集失败是否明确报错,而不是当作通过
# [ ] 是否可用只读权限账号执行
# [ ] 是否有超时与并发上限,避免压垮被检目标

原则与违反后果

原则具体要求违反后果
只读不改动配置与服务巡检成为未经评审的变更
幂等重复执行结论一致重试产生累积副作用
无状态不依赖残留文件并发或补跑时结果互相污染
异常明确失败即报错失败被当成通过,形成假全绿
只读原则有一个容易忽略的边界:巡检生成的分析结果应写入巡检自身的工作目录,而不是被检目标的目录,否则会在对方文件系统上留下未受管内容。
需要写操作的修复不应塞进巡检脚本。巡检与纠偏应分离为两个阶段:巡检只出结论,纠偏单独走变更或自动纠偏流程,各自有记录与权限边界。

易错点

  • 巡检脚本带清理或重启动作,周期性在无人评审的情况下改变系统状态
  • 脚本依赖上次运行的残留文件,并发或补跑时结论互相污染
  • 采集失败被当作通过,报告显示正常而目标实际未被检查
  • 脚本使用高权限账号且无并发上限,巡检本身成为负载与故障来源
  • 把修复逻辑写进巡检脚本,绕过变更流程与审计留痕

数据来源与参考

  • Google SRE Book:监控采集实践
  • NIST SP 800-137:持续监控指南
  • POSIX 规范:退出状态与错误处理

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/inspection-script-idempotent-readonly-principle.html

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