跳转到内容

Agent 部署

EasyShell Agent 是一个轻量级 Go 二进制文件,运行在每台受管主机上。它负责脚本执行、指标收集和实时日志流传输。

  • 单一二进制文件 —— 无运行时依赖,部署简单
  • 跨平台 —— Linux(amd64、arm64)、macOS
  • 低开销 —— 通常内存占用低于 20 MB
  • 自动注册 —— Agent 首次启动时自动向 Server 注册
  • 自愈能力 —— 网络中断时自动重连

通过 EasyShell Web 界面部署 Agent 是最简单的方式:

  1. 进入 主机管理添加主机
  2. 选择 自动部署
  3. 输入目标主机的 SSH 凭据(IP、端口、用户名、密码/密钥)
  4. Server 将自动 SSH 到目标主机,上传对应的二进制文件(amd64/arm64),并启动 Agent

Agent 二进制文件已内置在 Server Docker 镜像中,可以直接提取:

Terminal window
# 提取 amd64 二进制文件
docker cp $(docker create --rm laolupaojiao/easyshell-server:latest):/opt/easyshell/agent-binaries/easyshell-agent-linux-amd64 ./easyshell-agent
chmod +x ./easyshell-agent

预编译二进制文件(GitHub Releases)

Section titled “预编译二进制文件(GitHub Releases)”
Terminal window
cd easyshell-agent
GOOS=linux GOARCH=amd64 go build -o easyshell-agent-linux-amd64 ./cmd/agent

需要 Go 1.24+。

Agent 通过环境变量或配置文件进行配置:

变量默认值说明
EASYSHELL_SERVER_URLhttp://localhost:18080Server API 地址
EASYSHELL_AGENT_NAME主机名Agent 显示名称
EASYSHELL_HEARTBEAT_INTERVAL30s心跳频率
EASYSHELL_METRICS_INTERVAL60s指标上报频率

为 Agent 创建 systemd 服务:

[Unit]
Description=EasyShell Agent
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/easyshell-agent
Restart=always
RestartSec=5
Environment=EASYSHELL_SERVER_URL=https://easyshell.example.com
[Install]
WantedBy=multi-user.target
Terminal window
sudo systemctl daemon-reload
sudo systemctl enable easyshell-agent
sudo systemctl start easyshell-agent

Agent 使用两种协议与 Server 通信:

  • HTTP —— 注册、心跳(30 秒间隔)、指标上报(60 秒间隔)、配置轮询
  • WebSocket —— 按需建立连接,用于脚本执行期间的实时日志流和交互式终端会话

启动 Agent 后,在 EasyShell Web 界面中验证:

  1. 导航到 主机管理
  2. 新 Agent 应显示为绿色状态指示
  3. 点击主机查看实时指标

如果 Agent 未出现,检查 Agent 日志:

Terminal window
journalctl -u easyshell-agent -f