AI驱动故障自愈实战:零基础搭建自动修复系统

什么是AI驱动故障自愈?

简单说,就是让服务器自己发现异常、自己修好。
不需要你半夜爬起来敲命令。
常见的场景包括:检测到Nginx挂掉立刻重启、磁盘快满了自动清理日志、CPU load过高自动降级服务。
真正的AI可能会用机器学习预测故障,但零基础入门可以先从规则化自愈开始——用脚本模拟“小脑反射”,也算迈进AI驱动故障自愈的第一步。

准备条件

  • 一台Linux服务器(本文以Ubuntu 20.04为例)
  • Python 3环境(系统自带)
  • 一个正在运行的服务(比如Nginx,apt install nginx -y
  • 明白crontab基本用法(后面直接给命令)

第一步:写一个“发现异常”的脚本

AI驱动的核心是“感知”。
我们写一个最简单的CPU负载检测脚本:

#!/usr/bin/env python3
import psutil
import sys

# 获取最近1分钟CPU平均负载
load = psutil.getloadavg()[0]
threshold = 2.0  # 阈值根据自己的核数调整,单核建议1.0

if load > threshold:
    # 输出告警,后续由定时任务捕获
    print("CRITICAL: CPU load too high: {}".format(load))
    sys.exit(1)
else:
    print("OK: CPU load {}".format(load))
    sys.exit(0)

将脚本保存为 /usr/local/bin/cpu_check.py,并赋予执行权限:

chmod +x /usr/local/bin/cpu_check.py

这个脚本返回非0时表示异常,后面就靠它触发自愈。

第二步:写一个自动修复脚本

发现异常后,怎么修?
我们简单重启Nginx并清理日志。

#!/bin/bash
# /usr/local/bin/self_heal.sh

DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Starting self-heal..."

# 重启Nginx
systemctl restart nginx
if [ $? -eq 0 ]; then
    echo "[$DATE] Nginx restarted successfully."
else
    echo "[$DATE] Failed to restart Nginx."
fi

# 清理超过7天的Nginx日志
find /var/log/nginx -name "*.log" -mtime +7 -delete
echo "[$DATE] Old Nginx logs cleaned."

同样赋予执行权限:

chmod +x /usr/local/bin/self_heal.sh

给root添加这两个脚本的执行权限(注意所有权)。

第三步:用crontab定时驱动“AI”

设置定时任务,每1分钟运行检测脚本,如果检测到异常则触发自愈。

crontab -e

添加以下行:

* * * * * /usr/local/bin/cpu_check.py || /usr/local/bin/self_heal.sh >> /var/log/self_heal.log 2>&1

解释:/usr/local/bin/cpu_check.py 被crontab执行,如果返回值不为0(即 || 后面的命令被执行),则运行 self_heal.sh
所有输出记入日志。

第四步:验证效果

故意制造CPU高负载,看看系统是否自动恢复。

# 制造CPU压力(运行5分钟)
stress --cpu 1 --timeout 300

如果没有 stress 工具,先安装:

apt install stress -y

执行后,观察 /var/log/self_heal.log

tail -f /var/log/self_heal.log

大约1分钟内就会看到类似:

[2025-03-28 15:10:01] Starting self-heal...
[2025-03-28 15:10:01] Nginx restarted successfully.
[2025-03-28 15:10:01] Old Nginx logs cleaned.

同时用 systemctl status nginx 确认Nginx已重启(Restart计数增加)。

高频问题解答

Q:这个脚本算AI驱动吗?
A:这是基于规则的自愈,属于AI驱动故障自愈的初级阶段。真正AI需要异常检测模型,你可以后续用历史数据训练一个简单的孤立森林模型替换阈值判断。

Q:CPU负载阈值设多少合适?
A:取决于CPU核心数。单核系统建议1.0,四核可以设3.5。先用 uptime 观察正常负载,再设定阈值。

Q:自愈脚本如果误修复怎么办?
A:建议先加入确认逻辑,比如连续3次异常才修复。也可以利用 flock 避免并行执行。

避坑指南

  • 脚本路径尽量使用绝对路径,crontab的环境变量有限。
  • 日志文件要配置logrotate,防止撑满磁盘。
  • 不要同时检测多个指标,逐步增加复杂度。
  • 生产环境建议先用非核心服务测试。

总结

从零搭建一个简易的AI驱动故障自愈系统并不神秘:一个检测脚本、一个修复脚本、一行crontab。
当你把这个最小闭环跑通后,可以再引入 Prometheus + Alertmanager 做更专业的告警触发,甚至用 Python 的 scikit-learn 做异常预测。
记住,故障自愈的核心是“快速发现 + 安全修复”,别让脚本本身变成新麻烦。
如果你在实践过程中遇到问题,欢迎在评论区留言交流。

分享到:
上一篇
零基础搭建服务器AI监控系统:用Netdata实现智能异常告
下一篇
服务器装AI大脑:零基础给服务器装个AI大脑
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意