从 0 到 1 部署一个云服务器运维 Agent
最近我在学习 AI Agent 应用开发,希望通过真实的云服务器场景,做一个可以部署、可以访问、可以持续迭代的小项目。
这篇文章记录我从 0 到 1 搭建 Server Ops Agent Demo 的过程。当前版本主要用于辅助检查 Docker、Nginx、内存、磁盘和端口状态,并基于简单规则生成初步的 Agent 分析建议。
项目效果
目前项目已经完成了三个部分:
个人主页:
https://xiaowenli.com在线 Demo:
https://ai.xiaowenli.comGitHub 源码:
https://github.com/hui20030625/server-ops-agent
其中 Demo 已经开启访问保护,避免服务器运维信息直接暴露到公网。
为什么做这个项目
我想从事 AI Agent 相关方向,所以希望项目不是单纯停留在本地 Demo,而是能真正部署到服务器上。
运维场景很适合作为 Agent 的入门实践,因为它有明确的上下文、明确的工具调用对象,也有真实的判断需求。例如:
Docker 容器是否正常运行
Nginx 是否处于 active 状态
磁盘空间是否充足
关键端口是否正常监听
当前状态是否需要给出告警或建议
这些都可以逐步演化成一个 Server Ops Agent。
技术架构
当前项目的访问链路如下:
用户浏览器
↓
https://ai.xiaowenli.com
↓
Nginx HTTPS / Basic Auth
↓
127.0.0.1:8888
↓
Python Server Ops Agent
↓
Linux / Docker / Nginx / Disk / Memory / Ports
技术栈包括:
Python
Linux
Nginx
Docker
systemd
Alibaba Cloud ECS
GitHub
当前功能
当前版本实现了以下功能:
查看 Nginx 运行状态
查看 Docker 容器状态
查看服务器内存使用情况
查看系统磁盘使用情况
查看关键端口监听状态
基于规则生成 Agent 分析建议
使用 Nginx 反向代理到独立二级域名
使用 Basic Auth 保护敏感运维信息
使用 systemd 托管服务,支持开机自启
部署过程
项目部署在个人阿里云 ECS 上。
首先,我使用 Python 编写了一个简单的 Web 服务,用于读取服务器状态信息,并将结果展示为网页。
随后,我使用 systemd 将这个 Python 服务托管为后台服务,使它可以在服务器重启后自动恢复。
最后,我通过 Nginx 将 ai.xiaowenli.com 反向代理到本地的 127.0.0.1:8888,并开启 Basic Auth 访问保护。
这样可以避免 Python 服务直接暴露到公网,也能让 Demo 通过 HTTPS 二级域名访问。
遇到的问题
部署过程中遇到过一个端口占用问题。
一开始我使用 nohup python3 app.py 启动过服务,后来又改成 systemd 托管。结果旧的 Python 进程仍然占用了 8888端口,导致 systemd 启动时报错:
Address already in use
解决方式是先杀掉旧的 Python 进程,然后重新启动 systemd 服务。
这次问题也让我更清楚地理解了:正式部署时应该尽量统一使用 systemd 管理服务,避免多个启动方式混用。
后续计划
当前版本还只是一个规则型 Agent 原型。后续我计划继续增加:
接入 LLM,对服务器状态进行自然语言分析
增加异常检测规则,例如磁盘占用过高、服务异常停止
增加一键生成运维报告功能
支持定时检查与告警通知
将运维知识沉淀为长期记忆,形成可迭代的 Server Ops Agent
这个项目会作为我学习 AI Agent 工程化落地的第一个实践项目,后续会继续迭代。