找回密码
立即注册
搜索
发回帖 发新帖

6633

积分

0

好友

810

主题
发表于 7 小时前 | 查看: 2| 回复: 0

一、为什么需要运维 Agent?

运维的本质矛盾从未改变:系统复杂度持续增长,而人的处理能力是恒定的。

平均每名值班工程师每周收到约 50 条告警,其中仅 2-5% 真正需要人为干预。70% 的 SRE 团队将告警疲劳列为前三运营问题。(数据来源:PagerDuty)

以最常见的“用户反馈支付卡顿”为例,运维的排查流程是固定的:

用户报事支付卡顿的故障排查流程:Prometheus 查 P99 延迟、SkyWalking 查调用链路、SLS 按 traceId 查日志、定位根因、修复上线

这个流程里每一步都是确定性操作——查指标、查链路、查日志、对比基准值。人类运维做的是“串联工具 + 模式匹配”,这正是 Agent 的强项。

二、全网谁在生产跑?

经过对 2024-2026 年公开资料的全面梳理,已确认 10 个方案处于生产验证状态:

生产环境运维 Agent 方案对比表:微软 Azure SRE Agent、阿里云 UModel+AIOps Agent、华为云确定性运维 Multi-Agent、腾讯 AI 自动化运维等 10 个方案的核心亮点与关键效果

行业共识:10 条铁律

从这些案例中提炼出的共同原则:

  • Prompt 负责理解,代码负责执行 — LLM 不直接操作生产系统
  • 所有写操作必须幂等 — 用幂等键防重复执行
  • 分级安全控制 — 读自动 / 可逆写自动 / 不可逆需确认 / 关键需审批
  • 从 1 个场景开始 — 别想一步到位做全能 Agent
  • 能力边界要明确 — 超边界优雅转人工
  • 全链路监控 — 每个工具调用必须可审计
  • 工具层隔离 — LLM 请求工具 → Agent 安全执行
  • 向量知识库 — 历史案例 RAG 检索
  • 长期 Agent 通用化 — 微软从 50+ 专用收敛到通用验证了这点
  • 数据飞轮 — 采集 Trace 反哺模型进化

三、两大架构路线深度对比

3.1 MCP 直连方案

LLM (Claude/GPT/Qwen)
   │  Function Calling 决定调哪个工具
   ├── MCP: Prometheus (PromQL查询)
   ├── MCP: SkyWalking (GraphQL查询)
   ├── MCP: SLS (日志检索)
   └── MCP: GitLab (代码搜索)
   │
   ▼ LLM直接消费原始返回数据,逐步推理

特点:每个 MCP Server 独立封装一个运维系统的 API。LLM 通过 Function Calling 决定调用哪个、传什么参数,拿到原始结果后自行推理。

3.2 UModel 语义层方案

LLM (Claude/GPT/Qwen)
   │ 语义查询(自然语言 or 结构化查询)
   ▼
UModel 统一语义层 (Node+Link有向图)
   │ 算子下推:聚合/异常检测在数据端执行
   ├── Prometheus
   ├── SkyWalking
   ├── SLS
   └── 变更系统
   │
   ▼
LLM拿到结构化摘要,直接推理

特点:UModel 是所有运维数据的统一建模层。Agent 不需要逐个系统查询——UModel 内部已经做了预聚合和跨系统关联,LLM 只需要问一次就能拿到结论。

3.3 核心差异

MCP 直连与 UModel 语义层八维对比表:数据抽象层级、LLM 轮次、跨系统关联、拓扑维护、大小模型分流、开源、上手成本、适用阶段

为什么会有 UModel?不是 MCP 方案做不到,而是当系统规模变大后(50+ 服务,10+ 运维系统),MCP 直连的 Token 消耗和多轮推理成本会急剧上升。UModel 通过“数据预聚合 + 大小模型分流”把综合成本压到原来的 10%。

四、ReAct 的正确用法:诊断用循环,执行有边界

运维场景里,ReAct 不能到处用。调查阶段可以用循环,执行阶段只能走一次且必须人工审批。

基于 ReAct 的运维 Agent 诊断与修复流程:诊断阶段 ReAct 只读循环 → Human-in-the-Loop 安全边界 → 人工确认 → 执行阶段单次写操作 → 事后验证 P99 恢复

不存在“执行完再去看指标不对再调整”,那是生产事故的配方。ReAct 循环只发生在调查阶段,一到执行写操作就必须人工卡点。

LangGraph 实现关键点

workflow = StateGraph(InvestigationState)

# 调查节点内部跑 ReAct,所有工具调用只读
workflow.add_node("investigate", investigate)

# 人工审批节点:LangGraph中断点,等人工确认
workflow.add_node("human_approval", human_approval)

# 执行节点:只有人工确认后才走到这里
workflow.add_conditional_edges(
    "human_approval",
    lambda s: "execute" if s["human_approved"] else END
)

五、记忆管理:Markdown vs 向量数据库,不是二选一

5.1 Claude Code 的启示

Claude Code 的记忆系统完全基于 Markdown 文件:

~/.claude/projects/<project>/memory/
├── MEMORY.md          # 索引,每次会话加载前200行
├── debugging.md       # 主题文件,按需读取
└── api-conventions.md

项目目录:
├── CLAUDE.md          # 项目指令,每次会话完整加载
└── .claude/skills/    # Skill文件夹

为什么不用向量数据库?因为它面向代码项目,知识规模可控(几十个文件)。全量加载索引也就几千 Token。

那运维场景能用吗?初期也能用。场景少的时候,Markdown 文件简单直接、人类可维护、不需要额外基础设施。

5.2 运维 Agent 的三层记忆架构

随着场景增多,推荐混合方案:

┌────────────────────────────────────────────┐
│  L1: 短期记忆 (Working Memory)              │
│  当前诊断会话内的上下文                        │
│  存储:LangGraph State / 内存               │
├────────────────────────────────────────────┤
│  L2: 长期记忆 (Episodic Memory)             │
│  历史诊断案例:当时怎么解决的?                 │
│  存储:向量数据库(语义检索Top3相似案例)        │
├────────────────────────────────────────────┤
│  L3: 知识库 (Semantic Memory / Runbook)     │
│  标准化排查流程:支付超时怎么办?              │
│  存储:Markdown文件(结构化、可读、可维护)    │
└────────────────────────────────────────────┘

5.3 演进路径

运维知识库存储方案演进表:MVP 阶段纯 Markdown 文件、成长期 Markdown+目录索引、规模化阶段向量库粗筛+Markdown 精读

5.4 标准化流程即 Skill

参考 Claude Code 的 Skill 机制,运维 Agent 的排查流程完全可以按同样方式组织:

knowledge/runbooks/
  ├── payment-timeout.md      # 支付超时排查手册
  ├── oom-kill.md             # OOM Kill排查手册
  ├── deploy-rollback.md      # 部署回滚流程
  └── ...

每个Runbook的结构:
   1. YAML元数据(触发条件、适用服务、风险等级)
   2. Markdown正文(分步骤,每步关联具体Tool Call)

LLM 先看到所有 Runbook 的元数据(触发条件 + 描述),语义匹配最合适的那个,再加载完整文件指导工具调用——与 Claude Code Skill 的运作方式完全一致。

六、算子下推:计算在数据端,LLM 只拿结论

“算子下推”这个概念来自数据库领域,在 UModel 中借用到可观测场景。

不下推的做法

Agent需要判断"订单服务是否异常"
   → 查Prometheus,返回过去1小时所有订单服务的10000条指标
   → 传到Agent本地
   → Agent用Python计算P99聚合
   → LLM判断是否超过阈值

本质:把计算推到数据所在的地方执行,只传结果回来。

用采矿类比:

不下推:把10吨矿石运到冶炼厂 → 冶炼 → 得到1克金
下推:  在矿场就地冶炼 → 只运1克金到冶炼厂

UModel 中的三层分流

这才是“Token 消耗降 90%”的真正来源——不是单次上下文变短了,而是综合轮次减少 + 确定性任务由小模型处理 + LLM 只做复杂推理。

七、从零落地的技术选型

7.1 推荐技术栈

运维 Agent 架构技术选型表:Agent 框架、LLM、工具集成、记忆、知识库、安全控制、监控等维度的 MVP 与规模化选型对比

7.2 MCP Server 封装示例

# mcp-server-prometheus/server.py
from mcp.server import Server
from mcp.types import Tool

server = Server("prometheus-mcp")

@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="prometheus_query",
            description="执行PromQL即时查询。用于获取服务当前性能指标如P99延迟、QPS、错误率等",
            inputSchema={
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "PromQL查询语句"}
                }
            }
        ),
        Tool(
            name="prometheus_range_query",
            description="执行PromQL范围查询。用于获取过去一段时间内的时序数据,帮助判断异常何时开始",
            inputSchema={
                "type": "object",
                "properties": {
                    "query": {"type": "string"},
                    "start": {"type": "string"},
                    "end": {"type": "string"},
                    "step": {"type": "string"}
                }
            }
        )
    ]

@server.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "prometheus_query":
        response = requests.get(
            f"{PROMETHEUS_URL}/api/v1/query",
            params={"query": arguments["query"]}
        )
        return response.json()

7.3 Runbook Markdown 示例

---
trigger: "用户报事支付卡顿"
services: ["order-service", "payment-service"]
risk_level: "MEDIUM"
tools: ["prometheus_query", "skywalking_trace", "sls_search"]
---
# 支付超时排查手册

## Step 1: 确认异常范围
**工具**: `prometheus_query`
**查询**: `histogram_quantile(0.99, rate(http_request_duration_seconds_bucket{service="order-service"}[5m]))`
**判断标准**: P99 > 2s → 继续 Step 2

## Step 2: 定位慢调用环节
**工具**: `skywalking_trace`
**操作**: 获取 order-service 的慢调用 Trace
**判断标准**: 哪个 span 耗时 > 2s → 记录其 traceId → 继续 Step 3

## Step 3: 深入排查日志
**工具**: `sls_search`
**查询**: `traceId: {上一步获取} AND level: ERROR`
**判断标准**:
- 发现超时日志 → 下游服务问题 → 查下游服务最近部署
- 无超时日志 → 检查代码逻辑 → 继续 Step 4

## 常见根因速查
| 根因 | 出现频率 | 修复动作 | 预计恢复 |
|------|---------|---------|---------|
| 银行接口超时 | 40% | 启用熔断 + 通知对方 | 10min |
| 数据库慢查询 | 30% | 索引优化 | 30min |
| 网关超时配置 | 15% | 调整参数 | 5min |



上一篇:携程酒店多模态平台:单点模型如何走向内容资产可治理
下一篇:为什么不让程序员直接对接客户?产品经理这个“翻译官”到底做了什么
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-11 17:00 , Processed in 0.088004 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表