Linux服务器巡检与维护教程_批量检查与自动化处理

9次阅读

Linux 服务器巡检需系统覆盖资源、服务、安全、日志四大维度,通过脚本批量采集 6 项关键指标,分级自动响应异常,并工程化分层管理脚本,同时规避时间不同步、权限硬编码等常见坑。

Linux 服务器巡检与维护教程_批量检查与自动化处理

Linux 服务器巡检不是“看看有没有报错”就完事,而是要系统性地覆盖资源、服务、安全、日志四大维度,并通过脚本批量执行、定时固化,才能真正防患于未然。核心在于:可重复、可验证、可追溯。

一、关键指标批量采集:5 分钟跑完一台,100 台也能一键拉取

shell 脚本 +SSH 免密 +for 循环 实现多机并行检查,避免逐台登录。重点采集以下 6 项(每项一行,便于后续 grep 或导入表格):

  • CPU 负载:uptime | awk ‘{print $10,$11,$12}’ —— 关注 15 分钟负载是否持续>CPU 核数×0.7
  • 内存使用率:free -m | awk ‘/Mem:/ {printf “%.1f%%”, $3/$2*100}’ —— 超 90% 需查进程或 swap 是否启用
  • 根分区使用率:df -h / | awk ‘NR==2 {print $5}’ —— 超 85% 触发告警,注意 /var/log、/tmp 是否异常膨胀
  • 关键服务状态:systemctl is-active sshd nginx mysql 2>/dev/null | paste -s -d’ ‘ —— 返回“active active active”才正常
  • 最近失败登录:lastb -n 10 2>/dev/null | wc -l —— 非零值需立即查 /var/log/secure
  • 内核日志错误:dmesg -T | tail -20 | grep -i “error|fail|warn” | wc -l —— 不为 0 时提取完整日志段落

二、自动化处理:发现异常后不只“发邮件”,而是分级响应

巡检结果不能只堆在 邮箱 里。建议按严重程度自动执行动作:

  • 中低风险(如磁盘 86%、某服务重启成功):自动清理临时文件(find /tmp -mtime +7 -delete)、重启对应服务(systemctl restart nginx),并记录到巡检日志
  • 高风险(如 root 用户被暴力破解、OOM killer 触发、/var/log 满):立即封禁可疑 IP(iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP)、压缩归档日志(tar -czf /backup/logs_$(date +%F).tar.gz /var/log/*.log)、发送企业 微信 / 钉钉 告警(用 curl 调用 webhook)
  • 所有操作必须留痕:每条自动命令前加 echo “$(date): [ACTION] 重启 nginx” >> /var/log/auto-maintain.log

三、巡检脚本工程化:从“能跑”到“好维护”

别把所有逻辑写在一个。sh 里。推荐分层结构:

  • config.conf:定义目标主机列表、阈值(DISK_WARN=85)、通知方式、保留日志天数
  • check_lib.sh:封装通用函数,如 get_cpu_load()、is_service_up()、send_alert()
  • main.sh:读配置、遍历主机、调用函数、汇总输出 HTML 报告(可用 echo+cat 生成简易表格)
  • crontab -e 添加:0 3 * * * /opt/check/main.sh >> /var/log/check_daily.log 2>&1 —— 每天凌晨 3 点执行

四、避坑指南:这些细节决定巡检是否真有用

很多团队脚本写了却失效,问题常出在:

  • 时间同步没做:多台服务器时间差>5 分钟,日志分析会错乱 —— 用 chronyd 统一 NTP 源
  • 权限硬 编码:脚本里写 root 密码或 sudo 免密,违反最小权限原则 —— 改用专用运维账号 +ssh key+sudoers 白名单授权特定命令
  • 没验证修复效果:自动重启 nginx 后不 curl -I http://localhost 检查返回码 —— 加上 if ! curl -s -o /dev/null -w “%{http_code}” http://localhost | grep -q “200”; then echo “Restart failed”; fi
  • 忽略历史趋势:只看当前值,不存历史数据 —— 每次巡检结果追加到 CSV,用 gnuplot 或 Grafana 画趋势图,早发现缓慢恶化
text=ZqhQzanResources