核心概念
在深入使用 EasyShell 之前,了解平台的核心概念会很有帮助。
Server-Agent 架构
Section titled “Server-Agent 架构”EasyShell 采用 中心辐射 模型:
- Server —— 中心管理枢纽,托管 API、Web 界面和业务逻辑。协调所有操作并存储配置、脚本和执行历史。
- Agent —— 部署在每台受管主机上的轻量级 Go 二进制文件。Agent 负责脚本执行、指标收集,并提供 WebSocket 通道用于实时日志流传输。
Agent 通过 HTTP 向 Server 注册,并通过周期性心跳(每 30 秒)保持连接。当任务下发时,Server 将指令推送到目标 Agent,Agent 在本地执行并将结果实时回传。
主机 代表一台受管服务器。每台主机包含:
- 连接信息(IP、SSH 端口)
- 已安装的 Agent
- 实时健康指标(CPU、内存、磁盘、网络)
- 基于标签的元数据,用于筛选和组织
集群 是主机的逻辑分组。你可以按环境(生产、测试)、角色(Web 服务器、数据库服务器)或地域进行分组。集群支持对相关主机进行批量操作。
脚本 是存储在 EasyShell 脚本库中的 Shell 脚本(Bash、Python 等)。脚本可以:
- 在 Web 界面中使用内置代码编辑器直接创建和编辑
- 使用执行时解析的变量参数进行参数化
执行 是在一台或多台主机上运行脚本的过程。每次执行都会创建一条 任务 记录,包含:
- 目标主机
- 脚本内容和参数
- 实时日志输出(通过 WebSocket 流传输)
- 退出代码和执行状态
- 开始/结束时间戳
AI 运维助手为常见运维任务提供自然语言界面。你可以:
- 查询服务器状态
- 请求自动化巡检
- 通过自然语言描述生成脚本
- 获取错误日志的解释
助手由 Spring AI 驱动,支持可配置的模型后端。
EasyShell 实现了多层安全机制:
- 危险命令拦截 —— 自动检测并阻止潜在的破坏性命令(如
rm -rf /) - 审批工作流 —— 高风险操作需要手动审批后才能执行
- 审计日志 —— 所有操作都记录用户、时间戳、目标主机和结果
- 基于角色的访问控制 —— 用户被分配角色(管理员、操作员、查看者),控制可用操作