运维日常工作标准化流程总结:从零搭建可落地的巡检与备份体系
为什么你的日常工作需要标准化流程
很多新手运维每天靠手动执行命令检查服务器,今天漏了磁盘就明天补,忘记备份就等出问题再后悔。
真正的运维日常工作标准化流程总结,核心是把重复操作变成可复用的脚本、计划任务和检查清单。
这样无论谁值班,执行同一套流程都能得到一致结果,也能用自动告警代替人工盯屏。
落地前需要准备的工具和环境
- SSH 客户端:推荐 Termius 或 Xshell,所有操作都通过 SSH 远程执行。
- 一台 Linux 服务器(以 CentOS 7/8、Ubuntu 20.04 为例),确保你能使用 root 或 sudo 权限。
- 文本编辑器:vim 或 nano。
- 邮件发送能力(可选):用于告警通知,可使用
mailx或配置 SMTP。
确认环境已安装基本工具:
# CentOS
sudo yum install -y cronie mailx curl
# Ubuntu/Debian
sudo apt install -y cron mailutils curl
标准化流程第一步:每日系统巡检脚本
编写一个 /usr/local/bin/daily_check.sh,自动收集 CPU、内存、磁盘、进程数、最近登录记录。
#!/bin/bash
# 运维标准化巡检脚本
echo "===== 系统巡检报告: $(date) ====="
echo ""
echo "# 磁盘使用率"
df -h | awk '$NF=="/"{print $5}'
echo ""
echo "# 内存使用"
free -h | grep Mem
echo ""
echo "# CPU 负载(1min/5min/15min)"
uptime | awk -F'load average:' '{print $2}'
echo ""
echo "# 最近5次登录"
last -5 2>/dev/null || echo "无记录"
echo ""
echo "# 正在监听端口"
ss -tlnp 2>/dev/null || netstat -tlnp
echo ""
echo "# 系统更新数量(CentOS)"
sudo yum check-update --quiet 2>/dev/null | wc -l
赋予执行权限并加入 crontab:
chmod +x /usr/local/bin/daily_check.sh
# 每天 8:00 执行,结果追加到日志
crontab -e
0 8 * * * /usr/local/bin/daily_check.sh >> /var/log/daily_check.log 2>&1
第二步:自动化日志审查与告警
单看日志太耗时,可以用 fail2ban 自动屏蔽暴力破解,再用 logwatch 生成摘要。
sudo yum install -y fail2ban logwatch
sudo systemctl enable fail2ban --now
配置 fail2ban 保护 SSH:
# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
每天自动邮件发送日志摘要:
# 添加到 crontab
0 9 * * * /usr/sbin/logwatch --output mail --mailto admin@example.com --detail high --service All
第三步:定期备份与恢复验证
备份是运维的底线。
写一个网站数据库备份脚本 /usr/local/bin/backup.sh:
#!/bin/bash
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 备份 MySQL 数据库(示例)
mysqldump -u root -p'yourpassword' --all-databases | gzip > $BACKUP_DIR/db_all.sql.gz
# 备份网站目录
zip -r $BACKUP_DIR/www.zip /var/www/html
# 保留最近7天,删除更早的
find /backup -type d -mtime +7 -exec rm -rf {} \;
每天凌晨执行并测试恢复可行性:
0 2 * * * /usr/local/bin/backup.sh
# 每月1号自动恢复测试(仅还原到一个测试库)
0 3 1 * * /usr/local/bin/test_restore.sh
test_restore.sh 示例:
# 创建临时库
mysql -u root -p'pass' -e "CREATE DATABASE IF NOT EXISTS test_restore;"
# 恢复最近备份
gunzip < /backup/$(date +%Y%m01)/db_all.sql.gz | mysql -u root -p'pass' test_restore
# 检查是否有表
echo "恢复成功,表数量:"
mysql -u root -p'pass' -e "use test_restore; show tables;" | wc -l
第四步:安全更新与补丁管理
自动安装安全更新并重启服务(小心动态内核模块):
sudo yum update --security -y # 仅安全更新
sudo reboot # 如果需要重启,尽量在非业务时段
加入计划任务每周一次:
0 4 * * 0 sudo yum update --security -y >> /var/log/security_update.log 2>&1
避坑指南:新手最容易踩的几个深坑
- 脚本路径写死:不同环境权限不同,建议用
$HOME或$(dirname $0)。 - crontab 环境变量:cron 执行时不会加载
~/.bashrc,建议在脚本内部source /etc/profile再执行复杂命令。 - 备份不验证:文件存在不等于可用,一定要定期尝试恢复。
- 忘记关注日志增长:
/var/log可能占满磁盘,可配置logrotate自动轮转。
如何验证流程是否跑通
- 查看 crontab 是否生效:
crontab -l并确认服务运行systemctl status crond。 - 手动执行巡检脚本:
bash /usr/local/bin/daily_check.sh,观察输出是否正常。 - 检查日志文件:
cat /var/log/daily_check.log,看是否有内容。 - 测试备份恢复:手动跑一次
test_restore.sh,确认能成功还原。 - 模拟告警:故意输错几次 SSH 密码,查看 fail2ban 是否封锁 IP。
高频问题解答
Q:每天的巡检报告能直接发到微信或钉钉吗?
A:可以。通过 webhook 配合 curl 发送,例如钉钉机器人:curl -X POST -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"巡检报告详情"}}' https://oapi.dingtalk.com/robot/send?access_token=xxx。
Q:备份脚本报错 mysqldump not found 怎么办?
A:确认 MySQL 客户端已安装,或使用 which mysqldump 检查路径,在脚本开头加 export PATH=$PATH:/usr/local/mysql/bin。
Q:如何确保标准化流程不会被人为跳过?
A:引入版本控制,把脚本放进 Git 仓库,每次修改都记录。同时加一个全网 ping 监控,如果长时间未收到巡检报告就告警。
如果你正在处理运维日常工作标准化流程总结,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
标准化不是一次性工作,需要持续优化,但迈出第一步后你会发现运维效率显著提升。