服务器控制面与协同体系总览(2026-04-17)
1. 这套体系现在的核心结论
当前服务器体系已经明确分成三层:
- Windows 本机
NEVERLETMEGO:操作台,不承担正式管理节点职责 - 管理节点:
124.220.233.126(别名tcent) - 运行节点:
121.196.202.114(别名aliyun-run)、111.228.6.224(京东云运行机) - 待纳管节点:
140.143.229.144(别名koze,当前 SSH 仍未打通)
已经落地的控制面:
- Windows 本地控制目录:
E:\server-control - 管理节点 Linux 控制面:
/home/ubuntu/server-control-ansible - 主机单机管理面板:Cockpit
- Windows 轻量总览监控:SSH 拉取式 dashboard
- 正式统一监控中心:Zabbix(部署在
124.220.233.126) - 基础自动化:Ansible(部署在
124.220.233.126)
设计原则:
- 不把 Windows 本机当正式管理节点
- 不把多机管理混成“宝塔式大一统面板”
- 统一入口、统一监控、统一批量变更,但尽量不直接暴露新的公网端口
2. 当前资产与角色分工
2.1 Windows 本机
- 主机名:
NEVERLETMEGO - 角色:操作台 / 浏览器入口 / SSH 入口 / 本地辅助脚本运行位置
- 关键目录:
E:\server-control - 说明:
- 负责开隧道访问 Cockpit / Zabbix
- 负责本地状态页和定时刷新
- 不承担正式的 Ansible 控制面和中心监控服务
2.2 管理节点:tcent
- 公网 IP:
124.220.233.126 - 内网 IP:
10.0.0.12 - SSH 用户:
ubuntu - 角色:正式管理节点
- 已部署:
- Cockpit:
127.0.0.1:9090 - node exporter:
127.0.0.1:9100 - Zabbix frontend:
127.0.0.1:18080 - Zabbix server:服务端已启用
- Zabbix agent2:本机 agent 已启用
- Ansible 控制面:
/home/ubuntu/server-control-ansible
- Cockpit:
2.3 运行节点:aliyun-run
- 公网 IP:
121.196.202.114 - SSH 用户:
root - 角色:运行节点
- 已部署:
- Cockpit:
127.0.0.1:9090 - node exporter:
127.0.0.1:9100 - zabbix-agent2:监听
0.0.0.0:10050
- Cockpit:
- 与管理节点关系:
- 通过
124 -> 121的 SSH 隧道,把 agent 映射到124的127.0.0.1:10052 - 因此 Zabbix 可以在不开放
121公网 agent 端口的情况下完成采集
- 通过
2.4 待纳管节点:koze
- 公网 IP:
140.143.229.144 - 内网 IP:
10.1.52.211 - SSH 用户:
ubuntu - 角色:候选被管节点
- 当前状态:
- ICMP 可达
- SSH 不可达
- 从 Windows 与
124到其22/2222/22022/22222/80/443都是 CLOSED
- 结论:
- 机器不是不存在,而是入口端口没开、或 sshd 未监听
- 现阶段无法纳入 Ansible / Cockpit / Zabbix
2.5 京东云运行机
- 公网 IP:
111.228.6.224 - 内网 IP:
172.16.0.6 - SSH 用户:
root - 角色:运行节点
- 已完成:
- UFW:deny incoming / allow outgoing
- 仅放通
22/tcp - fail2ban:已启用
sshdjail - Docker Engine + Compose:已安装
- 备注:
- 已写入
servers.json - 但当前 Windows 轻量监控里显示
ssh_unreachable,说明本地自动采集链路尚未完全同步到它
- 已写入
3. Windows 本地控制目录结构
控制目录:E:\server-control
关键文件与用途:
README.md- 当前控制体系的入口说明
servers.json- 当前服务器清单、角色、已部署服务、备注
ssh_config- Windows 本地 SSH 别名
Test-Servers.ps1- 从 Windows 快速测试各主机连通性
Open-Cockpit-B.ps1- 打开
tcent的 Cockpit 隧道
- 打开
Open-Zabbix-124.ps1- 打开
tcent的 Zabbix 前端隧道
- 打开
monitoring\Refresh-Monitor.ps1- 通过 SSH 拉取状态并生成本地 dashboard
monitoring\Open-Monitor-Dashboard.ps1- 刷新并打开 dashboard
ops\inventory\hosts.yml- Windows 侧保存的 inventory 结构参考
ops\playbooks\bootstrap.yml- 基础纳管 playbook 参考
bin\Start-Server-Control.ps1- 本地加密控制面/秘密库入口
secrets\- 加密秘密库,敏感信息不应以明文散落在 JSON / SQL 中
4. SSH 别名与访问方式
当前 Windows 本地别名:
tcent- Host:
124.220.233.126 - User:
ubuntu - Key:
~/.ssh/id_rsa
- Host:
aliyun-run- Host:
121.196.202.114 - User:
root - Key:
~/.ssh/id_ed25519
- Host:
koze- Host:
140.143.229.144 - User:
ubuntu - Key:
~/.ssh/id_rsa
- Host:
注意:
aliyun-run使用的是id_ed25519,不是id_rsa- 之前监控和脚本误报过
121不可达,根因就是别名密钥指错
5. 管理节点上的正式控制面
管理节点:124.220.233.126
5.1 Ansible
已部署在:
/home/ubuntu/server-control-ansible
当前内容:
ansible.cfginventory/hosts.ymlplaybooks/bootstrap.yml
已完成验证:
ansible all -m ping --limit 'tcent,aliyun-run'成功ansible-playbook playbooks/bootstrap.yml --limit 'tcent,aliyun-run'成功
说明:
- 现在
124已经是真正可工作的 Linux Ansible 控制面 - 后续
koze一旦 SSH 打通,可以直接纳入 inventory 然后执行 bootstrap
5.2 Zabbix
已部署在:
- Zabbix Server:
124本机服务 - Zabbix Frontend:
127.0.0.1:18080 - Zabbix API:
http://127.0.0.1:18080/api_jsonrpc.php
当前状态:
- API
apiinfo.version已返回7.4.9 - 默认登录
Admin / zabbix可用 - 已创建主机:
tcent->127.0.0.1:10050aliyun-run->127.0.0.1:10052
说明:
124自身 agent 使用本地10050121的 agent 通过 systemd 隧道服务映射到124的10052- Zabbix 前端没有暴露公网,而是只监听回环,通过 Windows SSH 隧道访问
5.3 Cockpit
124:127.0.0.1:9090121:127.0.0.1:9090
使用方式:
- 从 Windows 上开 SSH 本地转发访问
- 不直接暴露到公网
6. 监控体系:轻量层 + 正式层
6.1 轻量层(Windows 本地 dashboard)
特点:
- 基于 SSH 拉取状态
- 不依赖开放 exporter 公网端口
- 适合快速看“哪些机器能连上、Cockpit / node exporter 是否活着”
现有文件:
E:\server-control\monitoring\Refresh-Monitor.ps1E:\server-control\monitoring\Open-Monitor-Dashboard.ps1E:\server-control\monitoring\status.jsonE:\server-control\monitoring\dashboard.html
自动刷新:
- 已建计划任务:
Server Control Monitor Refresh - 每 15 分钟刷新一次
- 以隐藏窗口运行
注意:
- 当前
status.json只是“那一刻的连通性快照” - 如果别名或密钥变化,但未刷新,可能出现短暂滞后
6.2 正式层(Zabbix)
特点:
- 有中心数据库
- 有 API
- 有模板
- 后续可扩展告警、触发器、邮件/IM 通知
当前适合承担:
- 正式主机监控中心
- CPU / 内存 / 磁盘 / agent 可用性统一纳管
7. Windows 本机弹终端窗口问题的结论
这个问题不是纯随机旧残留,而是启动链路设计问题。
已定位到的主要来源:
- 计划任务
OpenClaw Node- 原先动作:
cmd.exe /c "C:\Users\ASUS-KL\.openclaw\node.cmd"
- 原先动作:
- 计划任务
Aliyun Reverse SSH- 原先动作:
cmd.exe /c "C:\Users\ASUS-KL\.openclaw\aliyun-reverse-ssh.cmd"
- 原先动作:
- 启动项:
OpenClaw SSH Control.cmd
这些入口的问题:
- 它们先起
cmd.exe - 即便后续再调 PowerShell,也会先闪一个终端窗口
已经做的修正:
OpenClaw Node改成:- 直接
powershell.exe -WindowStyle Hidden -File node-supervisor.ps1
- 直接
Aliyun Reverse SSH改成:- 直接
powershell.exe -WindowStyle Hidden -File aliyun-reverse-ssh.ps1
- 直接
- 启动目录中的
OpenClaw SSH Control.cmd- 已改为
OpenClaw SSH Control.vbs - 通过
WScript.Shell.Run(..., 0, False)隐藏启动 - 原
.cmd已改名为.cmd.disabled
- 已改为
结论:
- 本机弹窗主因已经被压下去一轮
- 如果以后仍偶尔弹窗,需要继续排查脚本内部是否还有二次拉起的可见控制台进程
8. 当前还没解决的问题
8.1 koze 仍未纳管
当前证据:
- 能 ping 通
140.143.229.144 - 但 SSH / Web 等常用端口全部关闭
最可能原因:
- 云安全组/防火墙未放通
- sshd 未监听
- 端口改了但未知
下一步建议:
- 去云控制台或机器控制台确认
sshd实际监听端口 - 放通至少一个从
124或 Windows 可达的管理端口 - 然后纳入
124的 Ansible + Cockpit + Zabbix
8.2 aliyun-run 在本地轻量 dashboard 中曾出现误报
根因:
ssh_config中别名曾使用错误私钥
当前状态:
- 已修正为
id_ed25519 - 若本地 dashboard 仍偶发误报,先手动刷新一次再判断
8.3 京东云运行机还没完全并入轻量监控链路
虽然资产已登记,但轻量 dashboard 当前快照里仍显示 ssh_unreachable。
可能原因:
Refresh-Monitor.ps1的目标别名/hosts 清单尚未同步完整- 或 SSH 别名尚未补充到
ssh_config
9. 现在推荐的日常操作方式
9.1 看整体情况
在 Windows 上:
powershell -ExecutionPolicy Bypass -File E:\server-control\monitoring\Open-Monitor-Dashboard.ps19.2 打开管理节点 Cockpit
powershell -ExecutionPolicy Bypass -File E:\server-control\Open-Cockpit-B.ps1 -OpenBrowser9.3 打开管理节点 Zabbix
powershell -ExecutionPolicy Bypass -File E:\server-control\Open-Zabbix-124.ps1 -OpenBrowser9.4 从 Windows 验证服务器可达性
powershell -ExecutionPolicy Bypass -File E:\server-control\Test-Servers.ps19.5 在管理节点上跑正式自动化
登录 124 后:
cd ~/server-control-ansible
ansible all -m ping
ansible-playbook playbooks/bootstrap.yml --limit 'tcent,aliyun-run'10. 推荐的后续路线
建议按这个顺序推进:
- 打通
koze的 SSH 入口 - 把
koze纳入124的 Ansible inventory - 给
koze装:- Cockpit
- node exporter
- zabbix-agent2
- 把京东云运行机补进:
ssh_config- 本地 dashboard
124的 Ansible inventory- Zabbix host
- 在 Zabbix 里补触发器和告警:
- 磁盘 > 80%
- load 持续过高
- agent 不可达
- 管理节点 Cockpit / Zabbix 前端异常
- 视需要再决定是否引入:
- Portainer(如果 Docker 节点明显增多)
- JumpServer(如果多人协作、审计需求提高)
- NetBox(如果服务器/资产数量继续增长)
11. 最终一句话总结
这套服务器体系现在已经不是“几台机器各管各的”,而是已经形成了一个清晰的控制结构:
- Windows 做操作台
124做正式管理节点121和其他业务机做运行节点- Cockpit 管单机
- Zabbix 管统一监控
- Ansible 管批量变更
koze是当前唯一明确卡在入口层的节点
如果以后需要恢复上下文,优先看:
E:\server-control\README.mdE:\server-control\servers.jsonE:\server-control\monitoring\status.json- 本文档