用 Codex 做运维:从 Redis 插件到 SSH 远程诊断的实战

0 阅读

为什么运维需要换个玩法

过去几年,运维圈子一直在谈 AIOps(智能运维)。大多数时候,这词儿听起来像是个用来忽悠预算的大概念:什么“从被动救火到主动预防”,什么“海量告警精准定位”。道理都对,但落到每天的具体工作上,很多工程师还是得半夜爬起来连 SSH,盯着黑底白字的终端敲 top、grep 和 tail -f。

2026 年,随着像 Codex 这样的 AI 编程智能体成熟,情况有了点变化。它不再只是个帮你补全代码的聊天机器人,而是一个能真正操作你电脑、运行终端命令、甚至记住你偏好的“数字员工”。

这篇文章不聊宏观趋势,只讲实操。我会展示如何用 Codex 处理几个高频且枯燥的运维场景:查 Redis 键值、连 MySQL 看大表、通过 SSH 管理远程服务器,以及最头疼的线上故障排查。核心思路很简单:把 AI 当成一个懂 Linux 命令、但需要你给权限和指引的初级工程师来用。

Codex 到底是个什么东西

在动手之前,得先搞清楚 Codex 和以前的 ChatGPT 有什么区别。简单来说,以前的 AI 是“顾问”,你问它怎么写 Nginx 配置,它给你一段文本,你得自己复制粘贴去服务器上跑。Codex 是“执行者”,它能直接访问你的文件系统,运行终端命令,甚至在浏览器里验证网页效果。

它有几个对运维特别有用的特性:

  1. 目标驱动:你不需要告诉它每一步该敲什么命令。你只需要说“帮我看看这台服务器为什么内存爆了”,它会自己决定是先跑 free -m 还是 htop,或者是去查 /var/log。
  2. 工具生态(MCP):这是关键。通过模型上下文协议(MCP),Codex 可以连接外部工具。比如连上 Redis 客户端、MySQL 驱动或者 SSH 隧道。这意味着它不再是“盲猜”,而是能拿到真实的数据。
  3. 长期记忆:如果你纠正过它一次“不要用 root 用户登录”,下次它会自动记住这个偏好。这对于建立标准化的运维习惯很有帮助。

目前市面上类似的工具不少,比如 Cursor、Qoder 或者 OpenClaw。选择哪个取决于你的技术栈偏好,但底层逻辑大同小异:都是让 LLM(大语言模型)拥有“手”和“脚”,而不仅仅是“嘴”。

第一步:搞定中间件运维(Redis & MySQL)

运维日常里,有一半时间花在查数据上。以前查 Redis 里的某个 Key,或者找 MySQL 里哪张表占空间最大,都得手动连客户端敲 SQL。现在可以通过两种方式让 AI 代劳:插件市场和 MCP 配置。

方式一:直接用插件(适合快速上手)

Codex 的插件市场里有很多现成的中间件连接器。以 Redis 为例,安装插件后,你直接在对话框里输入:

“帮我列出本地 Redis 实例里所有的 Key,并显示它们的过期时间。”

AI 会调用插件背后的客户端命令,直接把结果整理成表格给你。对于 MySQL 也是同理。比如你想优化数据库,可以问:

“连接 192.168.1.121 的 erp_test 库,找出数据量超过 100 万行的表,并按大小排序。”

这种方式的好处是“开箱即用”,不需要写配置文件。但缺点是灵活性有限,通常只能执行预设好的安全操作。重要提醒:给 AI 使用的数据库账号,权限一定要最小化。只给 SELECT 权限,千万别给 DROP 或 ALTER,除非你明确知道自己在做什么。

方式二:配置 MCP 服务器(适合深度集成)

如果你需要更精细的控制,或者要在团队里共享配置,MCP 是更好的选择。MCP 允许你定义 AI 如何连接外部服务。

在项目根目录创建 .codex/config.toml 文件,你可以这样配置 Redis:

[mcp_servers.redis]
command = "npx"
args = [
  "-y",
  "@modelcontextprotocol/server-redis",
  "redis://username:password@192.168.1.195:6379/0"
]

配置完重启 Codex,你就可以用自然语言跟它交互了:

“用 redis MCP ping 一下服务,然后列出当前库里的所有 Key。”

MySQL 的配置类似,但要注意设置 MYSQL_MCP_MODE = "readonly",防止 AI 误删数据:

[mcp_servers.mysql]
command = "npx"
args = ["-y", "easy-mysql-mcp"]
enabled = true
[mcp_servers.mysql.env]
MYSQL_HOST = "192.168.1.121"
MYSQL_PORT = "3306"
MYSQL_USER = "readonly_user"
MYSQL_PASSWORD = "your_password"
MYSQL_DATABASE = "erp_test"
MYSQL_MCP_MODE = "readonly"

配好后,你可以让它干些复杂的活,比如:“生成一条 SQL,查询订单表中 5 月份至今的物流轨迹信息。”它不仅能查出数据,还能直接把 SQL 语句吐给你,方便你后续复用。

第二步:远程服务器管理(SSH 与 MCP)

中间件只是冰山一角,真正的重头戏是服务器本身。怎么让 AI 安全地连上你的 Linux 服务器?这里有两个方案。

方案一:SSH MCP Server(通用推荐)

这是目前最主流的做法。通过 @kukapay/mcp-ssh-server 这样的包,AI 可以通过 SSH 协议执行 Shell 命令。

在 mcp.json 或配置文件中添加:

{
  "mcpServers": {
    "ssh-server": {
      "command": "npx",
      "args": [
        "-y",
        "@kukapay/mcp-ssh-server",
        "192.168.1.100",
        "ubuntu"
      ],
      "env": {
        "SSH_PASSWORD": "your_password"
      }
    }
  }
}

如果你担心密码明文存储不安全,可以用 SSH 密钥认证:

{
  "mcpServers": {
    "ssh-server": {
      "command": "npx",
      "args": [
        "-y",
        "@kukapay/mcp-ssh-server",
        "192.168.1.100",
        "ubuntu",
        "--private-key",
        "/home/user/.ssh/id_rsa"
      ]
    }
  }
}

配好后,你可以直接说:

“帮我查看 /var/log/nginx/error.log 最近 20 行错误日志。” “检查服务器上 nginx 进程是否在运行。”

方案二:直接会话连接(灵活但需谨慎)

有时候你不想配复杂的 MCP,只是想临时连上去看一眼。可以直接在对话中提供 SSH 信息(建议通过引用本地文件的方式,避免明文暴露在聊天记录里):

“登录 192.168.1.123 这台服务器,使用 ssh 方式,账号 root,端口 22。SSH 私钥信息在 @d:\work\ssh\key.txt 这个文件里。”

一旦连接成功,当前的对话窗口就变成了一个“智能终端”。你可以继续问:

“查看这台服务器的内存使用情况、磁盘利用率以及当前负载。” “列出资源占用最高的 10 个进程。”

AI 会自动执行 free -m、df -h 和 ps aux --sort=-%mem | head -11 等命令,并把结果解读成人话。比如它不会只扔给你一堆数字,而是会说:“内存使用了 85%,主要是 Java 进程占用了 4GB,建议检查是否有内存泄漏。”

第三步:实战场景演练

理论说完,来看几个真实的运维痛点是怎么被解决的。

场景一:一键部署中间件

以前装 Redis 或 Nginx,得查文档、下包、改配置、启动服务,还得处理端口冲突。现在可以这样:

“在 192.168.1.123 上,用 Docker 部署一个单机 Redis 6.x。数据卷映射到 /usr/local/redis,端口默认 6379,不设密码。”

Codex 会先检查服务器是否安装了 Docker,然后拉取镜像,创建容器,最后验证服务是否启动。整个过程它会在后台执行一系列 Shell 命令,并在完成后告诉你:“Redis 已启动,可以通过 6379 端口访问。”

部署 Nginx 也一样:

“在同一台服务器上部署 Nginx,数据卷映射到 /usr/local/nginx,监听端口改为 8088,避免和现有服务冲突。”

它会自动检测 8088 端口是否被占用,如果没被占用,就直接部署;如果被占用了,它会提示你换个端口。这种“先检查再执行”的逻辑,比人工操作更不容易出错。

场景二:性能诊断与优化

服务器跑久了变慢,是常态。以前得靠经验猜,现在可以让 AI 做个全面体检:

“登录服务器,对性能指标、健康状况、网络情况做一个全面诊断,给出优化建议。”

AI 会执行一套标准的诊断流程:

  1. 检查 CPU 负载(uptime)。
  2. 检查内存和 Swap(free -m)。
  3. 检查磁盘 I/O(iostat 或 df -i)。
  4. 检查网络连接数(netstat -an | grep ESTABLISHED | wc -l)。

最后它会输出一份报告:“发现磁盘 /dev/sda1 使用率已达 92%,主要是一些旧的日志文件。建议清理 /var/log 下的 .gz 压缩包,预计可释放 5GB 空间。”

场景三:故障排查闭环

这是最能体现 AI 价值的地方。假设线上系统突然报错,页面打不开。

背景:业务反馈主页 http://192.168.1.123:8083/ 访问不了,F12 看接口全是 404。重启服务后依然如此。

传统做法:登录服务器 -> 查 Nginx 日志 -> 查应用日志 -> 猜是不是配置错了 -> 改配置 -> 重启 -> 再试。来回折腾半小时。

AI 做法:

“服务器上的微服务启动了,但访问 http://192.168.1.123:8083/ 报 404。请检查 Nginx 配置和后端服务状态,找出原因。”

Codex 会自动执行以下步骤:

  1. 检查 Nginx 进程是否存活。
  2. 查看 Nginx 错误日志 /var/log/nginx/error.log。
  3. 检查后端服务(比如 Java 或 Node.js)是否在监听预期的端口。
  4. 对比 Nginx 的 proxy_pass 配置和后端实际端口。

在这个过程中,它可能会发现:“Nginx 配置指向了 8080 端口,但后端服务实际启动在 8081 端口。”然后它会自动修正 Nginx 配置文件,并重载服务(nginx -s reload)。

最后它告诉你:“问题已修复,后端端口配置不一致,已更新 Nginx 配置并重载。请刷新页面验证。”

你刷新一下,页面好了。整个过程可能只需要两分钟,而且不需要你亲自去翻那些晦涩的配置文件。

场景四:告警通知

运维不能总盯着屏幕。你可以让 AI 帮你设个简单的监控:

“监控这台服务器的内存,如果使用率超过 50%,就发一封邮件到 xxx@qq.com。”

虽然 Codex 本身不是监控系统,但它可以帮你生成并部署一个简单的 Shell 脚本或 Python 脚本,结合 crontab 定时任务来实现这个功能。或者,如果你的团队用飞书、钉钉,它也可以调用相应的 Webhook API 发送消息。

安全与边界:别把钥匙全交给 AI

说了这么多好处,必须泼盆冷水。让 AI 操作生产环境服务器,风险是实实在在的。

  1. 权限最小化:永远不要给 AI root 权限,除非是隔离的测试环境。为 AI 创建专门的 sudo 用户,并限制它能执行的命令范围。
  2. 人工审核:在执行任何写操作(如 rm、mv、service restart)之前,务必让 AI 先展示它打算执行的命令,你确认无误后再让它跑。Codex 通常会有个“预览”步骤,利用好它。
  3. 敏感信息隔离:不要把数据库密码、SSH 私钥直接写在对话里。使用环境变量、密钥管理服务(如 Vault)或本地加密文件来存储这些信息,并通过 MCP 配置引用。
  4. 审计日志:保留 AI 执行的所有命令记录。一旦出问题,你需要知道是哪条命令导致了灾难。

结语

Codex 这类工具的出现,并不是要取代运维工程师,而是把我们从繁琐的“打字员”工作中解放出来。它擅长执行标准化的命令、快速检索日志、生成基础配置。而人类的价值,在于设计架构、制定安全策略、以及在 AI 搞不定复杂逻辑时做出最终判断。

未来的运维工作流可能是这样的:你定义好规则和边界,AI 负责日常的巡检、部署和初步排查,只有在遇到未知异常时,才需要人类介入。这种“人机协作”的模式,或许才是 AIOps 落地的正确姿势。

试着在你的下一个运维任务中,少敲几行命令,多问几句 AI。你会发现,效率的提升不仅仅是省了几分钟,更是思维方式的转变。