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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意