news 2026/7/22 10:38:50

运维转大模型:把脚本换成 Agent,我踩过的坑都在权限和日志里

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维转大模型:把脚本换成 Agent,我踩过的坑都在权限和日志里

聊《我用运维经验做了次 AI 项目,最先失效的是旧方法》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。

摘要

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。

摘要:很多 SRE 转型做 AIOps 时,习惯把旧版 Shell 脚本直接扔给大模型重写,结果上线即崩。本文复盘一次从自动化脚本转向 Agent 的实际过程,重点拆解日志预处理、告警归因的边界、执行权限隔离以及回滚兜底策略。不讲概念,只讲生产环境里真正能跑通的工程取舍。

目录

  • 运维能力的迁移:从确定性脚本到概率型决策
  • 日志分析:大模型不是预言机,需要结构化投喂
  • 告警归因:RAG 接历史工单,别让它靠直觉猜
  • 自动处置 Agent:工具定义里的权限硬约束
  • 安全与审批:上线前的回滚、监控与异常兜底
  • 总结:给运维工程师的几条实在建议

---

运维能力的迁移:从确定性脚本到概率型决策

以前做自动化,逻辑是树状的:如果 CPU > 85%,重启 Nginx;如果磁盘满,清理/var/log。写 Bash 或 Python 脚本时,每一步都确定,出错直接抛异常,回滚靠 Git 或版本控制。

换成大模型后,逻辑变成了图。Agent 不再按固定分支走,而是基于观察、推理、调用工具、再观察的循环。我第一次把旧版巡检脚本改造成 ReAct 模式时,以为只要把命令列表喂给模型就行。结果测试环境跑得很顺,一上预发环境就开始“自由发挥”:该查端口时去查了内存,该拉取配置时发了个ping

这不是模型蠢,是执行范式变了。确定性脚本追求的是“不犯错”,概率型 Agent 追求的是“在噪声中找最优路径”。转型第一步不是学 Prompt,而是重新设计状态机:明确哪些动作必须人工确认,哪些可以自动重试,哪些失败后直接熔断。把模糊的“智能”拆成可度量的阈值,Agent 才能进生产。

日志分析:大模型不是预言机,需要结构化投喂

线上出问题时,老运维第一反应是拉 Nginx access_log 或应用 error.log。直接把这些几十 MB 的文本丢进上下文窗口,是大模型最容易翻车的地方。模型会迷失在无关请求里,要么抓不住重点,要么编造根本不存在的错误栈。

我的做法是前置清洗层。日志还没进 Agent,先过一遍正则提取和关键词过滤。保留时间戳、模块名、错误码、堆栈片段,剔除心跳包、健康检查、重复刷新的行。处理后的 JSON 结构直接作为 Tool Input,模型只需要做语义匹配和关联分析。

下面是一个我在实际项目中用的日志预处理片段,配合 LangChain 的工具调用:

import re import json from datetime import datetime def parse_and_filter_logs(raw_log_line: str) -> dict | None: pattern = r"(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) \[(\w+)\] (\w+) (.+)" match = re.match(pattern, raw_log_line) if not match: return None timestamp, level, component, message = match.groups() # 只保留 ERROR/WARN 级别,且排除已知误报关键字 if level.upper() not in ("ERROR", "WARN"): return None if any(kw in message.lower() for kw in ["healthcheck", "heartbeat", "retry"]): return None return { "ts": timestamp, "level": level, "component": component, "message": message.strip() }

把脏数据挡在模型外面,你的 Agent 推理延迟能降一半,幻觉率也会明显下降。运维转大模型,第一步其实是补齐数据工程的基本功。

告警归因:RAG 接历史工单,别让它靠直觉猜

Prometheus 报警响了,Agent 怎么知道是不是最近那次灰度发布导致的?纯靠 Prompt 写规则太脆弱,换个依赖关系就失效。我引入了向量检索接历史故障复盘文档和临时工单,但很快发现一个问题:相似度匹配出来的文档往往包含大量无效信息,模型注意力被分散,归因结论越来越飘。

后来加了置信度校验和路由层。向量库返回 Top-5 相关文档后,先让一个轻量级分类器判断“是否强相关”。如果相关性得分低于阈值,或者触发时间离现在超过 30 天,直接降级为“未知原因,转人工”。同时,归因结果必须附带证据链:哪条告警对应哪个变更记录,哪个指标曲线出现了跳变。没有证据的结论,运维不敢用。

RAG 在运维场景里不是用来替代排查经验的,它是记忆外挂。别指望它一次猜中根因,它能做的是把散落各处的线索拼成一张可验证的网。

自动处置 Agent:工具定义里的权限硬约束

Demo 阶段最舒服,跑在本地容器里,权限随便开,随便删文件随便重启服务。一上生产,权限黑洞就会让你付出代价。大模型天生倾向于“用最少的话完成任务”,如果你给它留了 sudo 或者全量读写权限,它大概率会踩线。

我现在的规范是:所有 Action 必须通过严格的 Schema 定义,工具调用前强制 Dry-Run 校验。下面是我在实际架构里定义执行工具的约束写法:

from pydantic import BaseModel, Field from typing import Literal class ExecuteCommandInput(BaseModel): command: str = Field(..., description="待执行的运维命令") run_as: Literal["svc_user", "root"] = Field("svc_user", description="执行身份,生产环境默认非特权用户") timeout_sec: int = Field(30, le=60, ge=5, description="命令超时上限") dry_run: bool = Field(True, description="是否仅预览不实际执行") def validate_command(cmd: str, user: str) -> bool: whitelist = ["systemctl", "journalctl", "kubectl", "curl", "grep", "awk"] cmd_name = cmd.split()[0] if cmd else "" if cmd_name not in whitelist: return False if user == "svc_user" and any(bad in cmd for bad in ["rm -rf", "dd ", "chmod 777"]): return False return True

工具入口只做白名单放行和参数越界拦截。模型可以生成复杂命令,但底层执行器负责把关。权限隔离不是限制 AI 的能力,是保护基础设施不被随机应变的逻辑拖垮。

安全与审批:上线前的回滚、监控与异常兜底

Agent 上线前,我最先砍掉的是“全自动”的幻想。任何涉及写操作的流程,默认必须经过二次确认或审批流。对于低风险操作(比如拉取日志、查询 Pod 状态),可以配置免审通道,但依然要记录完整审计轨迹。

兜底方案我做了三层:
1. 状态快照:执行变更动作前,自动保存当前配置或数据副本。一旦后续步骤报错,立即触发回滚脚本。
2. 熔断器:连续两次调用同一工具失败,或 Token 消耗超出预期预算,直接切断该 Agent 的执行权,推送告警到钉钉/企业微信。
3. 可观测性埋点:每个 Step 的输入输出、耗时、模型版本、Prompt 指纹全部入库。不是为了解决当前问题,是为了下次迭代时能精准定位是逻辑错了、参数偏了还是数据脏了。

运维的老本行是求稳,AIOps 的核心竞争力也是稳。能把不稳定因素关在笼子里,Agent 才有进生产的机会。

总结:给运维工程师的几条实在建议

从传统自动化转到 AIOps,技术栈的跨度其实没那么大。你熟悉的服务治理、指标监控、故障演练、权限管控,都是搭建可靠 Agent 的基石。真正拉开差距的是思维模式:从“我要让机器按我的指令走”变成“我要给机器划定边界,让它自己找路”。

如果你正在准备转型或面试,简历里少写“精通 Prompt 调优”,多写你如何设计工具契约、如何做权限分级、如何搭建日志清洗管道、如何配置熔断与回滚策略。企业现在不缺能跑通 Demo 的人,缺的是能把概率型系统塞进确定性基建里的工程师。

大模型应用早就过了拼跑分的热潮期。回到权限、日志和可观测这三个词,把基本功打扎实,你的运维经验不仅不会过时,反而会成为 AGI 时代最硬的护城河。

资料展示

下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。

如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 10:36:17

Python+Open3D点云处理:从原理到工业实践

1. 项目概述:PythonOpen3D在点云处理中的革新应用 点云数据处理正经历着从专业软件向开源工具链迁移的技术变革。作为一名长期从事三维视觉开发的工程师,我亲历了从PCL(C)到Python生态的转型过程。Open3D作为新兴的三维数据处理库,凭借其简洁…

作者头像 李华
网站建设 2026/7/22 10:31:08

华为Mate90 16:10屏幕技术解析与用户体验

1. 华为Mate90屏幕技术突破解析 当华为Mate90采用16:10屏幕比例的消息传出时,整个移动设备行业都为之一震。这种看似微小的比例调整,背后却蕴含着对用户体验的深度思考和技术积累。16:10这个"非主流"比例在笔记本领域早已证明其价值&#xff0…

作者头像 李华
网站建设 2026/7/22 10:31:00

Codex:2026 代码生成工具安装与优化指南

1. Codex:2026 是什么?为什么值得关注? Codex:2026 是 OpenAI 推出的新一代代码生成与辅助工具,它基于 GPT-4 架构进行了专项优化,特别针对编程场景做了深度定制。与早期版本相比,2026 版在以下方面有显著提升&#xf…

作者头像 李华
网站建设 2026/7/22 10:28:42

TMS320F2837xS McBSP寄存器配置详解与实战避坑指南

1. McBSP寄存器概览与核心设计思路 在嵌入式DSP开发中,串行通信接口的配置往往是项目成败的关键一环。TMS320F2837xS系列微控制器集成的多通道缓冲串行端口(McBSP)功能强大,但寄存器数量众多、功能交织,初次接触时很容…

作者头像 李华