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

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意