AI Agent自动处理服务器故障根因分析

场景与价值:为什么要用AI Agent处理服务器故障

服务器故障时,人工翻日志、查监控、定位根因往往耗时且依赖经验。
AI Agent可以自动接收告警、读取系统日志、调用大模型分析根因,并尝试执行预设修复命令,把排查时间从小时级压缩到分钟级。
本文基于开源工具(Prometheus + Alertmanager + LangChain + Ollama)搭建完整链路,零基础也能跟着做完。

准备工作:服务器环境与工具清单

你需要一台Linux服务器(CentOS 7+或Ubuntu 20.04+),并确认已安装Python 3.8+和Docker(可选)。
准备以下工具:

  • Prometheus + Alertmanager:负责采集服务器指标并触发告警。
  • Ollama:本地运行开源大模型(如qwen2:7b),避免数据外泄。
  • LangChain + Python脚本:作为Agent核心,接收告警、查询日志、调用LLM分析。

安装命令示例

# 安装Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2:7b

# 安装LangChain相关库
pip install langchain langchain-community requests pyyaml

如果使用Prometheus,建议用Docker快速部署:

docker run -d --name prometheus -p 9090:9090 prom/prometheus

实战配置:让Agent自动读取告警并调用大模型分析

核心流程:Alertmanager收到告警后,通过webhook转发给Agent脚本;
Agent脚本解析告警内容,拉取关联日志,构造Prompt发给Ollama,得到根因分析;
最后根据分析结果执行修复或发送通知。

1. 配置Alertmanager webhook
修改 alertmanager.yml,添加receivers:

receivers:
- name: 'agent-webhook'
  webhook_configs:
  - url: 'http://localhost:5000/alert'

2. 编写Agent脚本(agent.py)

from flask import Flask, request, jsonify
from langchain_community.llms import Ollama
import subprocess, json

app = Flask(__name__)
llm = Ollama(model="qwen2:7b")

@app.route('/alert', methods=['POST'])
def handle_alert():
    data = request.json
    alert_name = data['alerts'][0]['labels']['alertname']
    # 根据告警名称拉取日志(示例:磁盘使用率告警查看df -h)
    log = subprocess.getoutput("df -h | tail -5")
    prompt = f"服务器告警:{alert_name}。当前磁盘使用情况:{log}。请分析可能的根因并给出修复建议。"
    result = llm.invoke(prompt)
    # 这里可根据result内容自动执行修复(如清理日志),需谨慎
    return jsonify({"analysis": result})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

3. 启动Agent

python agent.py &

当Prometheus触发磁盘告警时,Alertmanager会自动调用此Agent,Agent分析日志后返回根因分析结果。

关键避坑:权限、幻觉与执行安全

  • 权限控制:Agent如果有自动执行修复能力,务必用最小权限用户运行,且只允许执行白名单命令(如清理/tmp下临时文件),绝不能允许rm -rf /这类危险操作。
  • LLM幻觉:大模型可能给出不存在的命令或错误分析。建议对LLM输出做正则或关键词校验,例如只执行匹配“清理日志”格式的指令。
  • 日志拉取范围:不要一次拉取全部系统日志,避免Agent过载。应该只拉取告警对应时间窗口内的日志(使用journalctl --since)。
  • 网络隔离:Agent、Alertmanager和Ollama最好在同一内网,避免API暴露到公网。

验证与排错:从模拟故障到正常应答

  1. 模拟磁盘告警:手动占用磁盘空间 dd if=/dev/zero of=/tmp/test bs=1M count=100。等待Prometheus检测到告警。
  2. 查看Agent日志:检查Agent是否收到webhook请求(Flask控制台输出)。
  3. 确认分析结果:访问Agent返回的analysis内容,看是否准确指出了磁盘满的根因(如/tmp文件占满)。
  4. 常见问题
  • Agent未收到告警:检查Alertmanager webhook配置是否正确,防火墙是否放通5000端口。
  • Ollama响应慢:首次加载模型需时间,确保服务器内存充足(8GB以上)。
  • 分析结果不准:调整Prompt模板,加入更具体的日志上下文,或尝试切换更大模型如qwen2:14b。

如果你正在处理AI Agent自动处理服务器故障根因分析,建议先按本文步骤完整执行,再根据自己的环境微调告警规则和修复脚本;
遇到异常时优先回看避坑和高频问题部分,通常能快速定位问题。

分享到:
上一篇
向量数据库Milvus本地搭建私有问答库:零基础完整教程
下一篇
AIOps2.0全链路自愈运维系统搭建
1
系统公告

机房迁移升级通知

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