从哪一步开始自动化
自动化的收益与风险并不对称:采集与报表类脚本几乎只有收益,而自动处置类脚本一旦逻辑出错,破坏力可能超过人工操作。因此合理的推进顺序是先让「看得见」自动化——采集、归档、异常标记、报表生成,再在充分验证与人工确认机制就位后,才考虑自动处置。
基本信息
| 适合自动化 | 指标采集与归档、巡检项执行、趋势报表生成、版本与台账盘点 |
|---|---|
| 不适合自动化 | 换盘、固件升级、阵列配置变更、删卷、数据擦除等高不可逆动作 |
| 脚本要求 | 幂等、带超时、作用域明确、参数校验、退出码语义清晰 |
| 失败处理 | 必须能被感知:失败要告警,禁止静默退出后无人知晓 |
| 维护要求 | 纳入版本管理、经过评审、变更留记录、配套使用说明 |
| 能力边界 | 脚本替代重复劳动,不替代判断与责任 |
典型使用场景
- 日常巡检项自动采集,把人力从重复劳动中解放出来
- 容量与性能报表自动生成,取代手工整理数据
- 批量设备版本盘点,快速找出与基线不一致的节点
- 变更前后的基线采集与对比,固化流程减少遗漏
- 告警触发前的前置检查脚本,缩短排障准备时间
脚本骨架要点
脚本骨架要点
#!/bin/bash
# 幂等、可重复执行;失败必须能被发现
set -euo pipefail
# 作用域明确:只处理显式指定的目标
TARGET=${1:?用法: collect.sh <device>}
OUT=/var/log/collect/$(date +%F)/$TARGET
mkdir -p "$OUT"
# 所有外部命令加超时,避免脚本卡死无人知晓
timeout 20 smartctl -A "/dev/$TARGET" > "$OUT/smart.txt" \
|| echo "smartctl 失败 设备=$TARGET" >&2
# 采集结果落盘并打时间戳,便于后续对比
date '+%F %T' > "$OUT/ts.txt"
echo "采集完成: $OUT"任务类型与自动化建议
| 任务类型 | 是否适合 | 理由 |
|---|---|---|
| 采集与归档 | 适合 | 只读、可重复、失败影响小 |
| 报表与盘点 | 适合 | 规则明确,结果可人工复核 |
| 告警自愈类动作 | 谨慎 | 需熔断与人工确认入口 |
| 配置与数据变更 | 不适合 | 不可逆风险高,需人工判断与授权 |
脚本的第一条验收标准不是效率提升,而是失败时有人知道。带超时、带退出码、带告警通道,比代码优雅重要得多。
自动处置类脚本必须在未验证前只做演练模式;直接在生产上首次运行未经评审的处置脚本,是自动化引入重大事故的典型路径。