LangGraph搭建AI运维智能体自动排查故障
LangGraph实战:搭建AI运维智能体自动排查故障
服务器故障排查常常依赖人工经验,费时又容易遗漏。
借助LangGraph这个基于图结构的AI框架,我们可以构建一个智能体,让它按顺序执行收集信息、分析原因、建议操作等步骤,自动完成常见故障排查。
本文面向零基础读者,从环境准备到运行验证,一步步带你实现这个智能体。
准备工作:安装依赖与获取API密钥
首先确保你的服务器或开发机上已有Python 3.10以上版本。
然后安装以下Python包:
pip install langgraph langchain langchain-openai
如果你使用其他LLM(如本地模型),可替换为对应provider。
另外需要获取一个OpenAI API密钥(或其他兼容API),用于调用语言模型。
在环境变量中设置:
export OPENAI_API_KEY="你的密钥"
定义故障排查节点
LangGraph的核心是节点(node)和边(edge)。
每个节点对应一个处理步骤。
这里我们定义三个核心节点:
- 收集系统信息:调用系统命令(如
df -h,free -m,systemctl status)获取当前服务器状态。 - 分析故障原因:将上一步信息送入LLM,要求它分析是否存在异常。
- 生成修复建议:根据分析结果,让LLM输出可执行的修复命令或步骤。
示例代码片段(部分):
import subprocess
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
# 定义一个状态类型
class AgentState(dict):
system_info: str = ""
analysis: str = ""
suggestion: str = ""
# 节点1: 收集系统信息
def collect_info(state: AgentState):
result = subprocess.run(["bash", "-c", "df -h && echo '---' && free -m"], capture_output=True, text=True)
return {"system_info": result.stdout}
# 节点2: 分析故障
llm = ChatOpenAI(model="gpt-4", temperature=0)
def analyze_fault(state: AgentState):
prompt = f"以下是一台服务器的当前状态信息,请分析是否存在异常并指出可能原因:\n{state['system_info']}"
response = llm.invoke(prompt)
return {"analysis": response.content}
# 节点3: 生成建议
def suggest_fix(state: AgentState):
prompt = f"基于以下分析结果,给出具体的修复步骤:\n{state['analysis']}"
response = llm.invoke(prompt)
return {"suggestion": response.content}
构建并运行图
现在用LangGraph把这些节点连成线性的图:
workflow = StateGraph(AgentState)
workflow.add_node("collect", collect_info)
workflow.add_node("analyze", analyze_fault)
workflow.add_node("suggest", suggest_fix)
workflow.set_entry_point("collect")
workflow.add_edge("collect", "analyze")
workflow.add_edge("analyze", "suggest")
workflow.add_edge("suggest", END)
app = workflow.compile()
# 运行智能体
initial_state = AgentState()
result = app.invoke(initial_state)
print("系统信息:\n", result["system_info"])
print("分析结果:\n", result["analysis"])
print("修复建议:\n", result["suggestion"])
避坑指南:常见问题与注意事项
- API密钥安全:不要将密钥硬编码在代码中,使用环境变量或密钥管理服务。
- 节点超时:如果系统命令执行时间较长(如大数据盘
df),建议设置超时参数。 - LLM幻觉:生成的修复命令可能不可执行,务必加上人工确认步骤,或将智能体输出作为建议而非自动执行。
- 状态累积:StateGraph的共享状态会随节点累加,注意不要重用过大字段。
效果验证:模拟一个磁盘空间故障
在测试服务器上故意创建一个大文件占满磁盘,然后运行智能体。
理想情况下,智能体应能:
- 输出
df -h结果,显示使用率超过90%。 - 分析指出“磁盘空间即将用尽”。
- 建议清理日志或删除临时文件。
# 模拟磁盘满
dd if=/dev/zero of=/tmp/bigfile bs=1M count=2000
运行后检查输出是否符合预期。
如果LLM分析正确,说明你的AI运维智能体基本可用。
高频问题解答
Q:必须使用OpenAI吗?能用其他模型吗?
A:可以。只要支持LangChain的ChatModel接口即可,例如通过 langchain-ollama 使用本地模型。
Q:智能体能不能自动执行修复命令?
A:当前示例只生成建议。若要自动执行,可以在节点中增加 subprocess.run(suggestion),但强烈建议先人工审核,避免误操作。
Q:报错 'module langgraph has no attribute StateGraph'?
A:检查LangGraph版本,确保 pip install langgraph>=0.0.20。
如果你正在处理服务器故障,可以先用本文步骤搭建一个基础版,再根据自己的环境加入更多节点(如日志分析、网络检测)。
遇到异常时,优先回看避坑和高频问题部分。