首页/系统与基础设施/自动化运维速查/健康检查脚本化的设计模式
巡检与自助运维60 条

健康检查脚本化的设计模式

检查脚本要把人的判定经验固化为可重复逻辑:统一退出码语义、输出短且可机读、自带超时、保持只读。常见模式有存活探测、语义探测、阈值判定与依赖连通性探测四类,准确性与开销逐级上升,应按层组合而不是全部拉满。

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

脚本化的意义

把健康检查写成脚本,目的是把判定标准从人的经验固化为可重复执行的逻辑。合格脚本有三个特征:退出码语义明确、输出可机读、失败原因可区分。设计上常见四类模式:存活探测、语义探测、阈值判定、依赖连通性探测,复杂度与开销逐级上升,应按层组合使用。

基本信息

退出码约定0 健康、1 不健康,其他值视为脚本执行异常
输出约定短结论加关键数值,便于日志检索与阈值比对
超时控制脚本自身必须设超时,防止挂起被误判为健康
幂等要求只读探测,重复执行不产生副作用
依赖最小化只使用目标机上稳定存在的基础命令

典型使用场景

  • 存活探测:只判断进程与端口是否存在,用于最外层快速判定
  • 语义探测:请求业务接口并校验返回内容,覆盖依赖与配置错误
  • 阈值判定:读取磁盘、内存、连接数等指标并按水位分级
  • 依赖连通性:探测数据库、缓存、消息队列的连通与响应时间
  • 编排集成:把脚本接入调度或编排平台的探针机制,用退出码驱动动作

四类探测模式对照

模式判定依据代价与局限
存活探测进程或端口存在开销极低但误判率高
语义探测接口返回内容正确能覆盖依赖,成本中等
阈值判定指标超过设定水位开销可控,需维护阈值
连通性探测依赖可连且响应及时能提前暴露依赖故障

检查脚本的骨架约定

检查脚本的骨架约定
# 统一约定:0 健康、1 不健康、其他为执行异常
set -u                        # 未定义变量即刻失败,避免静默误判
TMO=${TMO:-5}                 # 超时可外部注入,便于按环境调整
# 探测动作必须带超时,防止挂死被当作健康
timeout $TMO curl -fsS -o /dev/null -w %{http_code} http://127.0.0.1:8080/healthz || exit 1
# 结论行保持短且字段稳定,便于检索与比对
df -hP / | awk 'NR==2 {print disk_used_pct=$5}'
# 退出码表达明确结论,让调用方无需解析文本
exit 0
退出码语义要统一:0 健康、1 不健康,其他值视为脚本自身异常。三者混在一起时,脚本缺陷会被当成服务故障触发处置,或者相反,真实故障被当成采集错误被忽略。
检查脚本不得包含写操作。清理临时文件、重启服务、扩容这类动作看似无害,但在高频调用下会变成新的故障源;确需修复应交由独立的处置流程承担。

易错点

  • 脚本自身无超时:被检端无响应时长期挂起,探针只看到超时而得不到明确结论
  • 退出码语义混乱:执行异常与业务不健康无法区分,处置动作可能被错误触发
  • 输出只有一句健康:失败时缺少关键数值,排查必须重新手工执行一次
  • 依赖目标机上非必备命令:在精简镜像中直接报命令不存在,检查项永久误报

数据来源与参考

  • Kubernetes 官方文档:探针的退出码与判定语义
  • RFC 9110 HTTP 语义:状态码判定
  • systemd 手册 systemd.service(5):进程退出与服务状态判定

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/health-check-scripting-design-patterns.html

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