对于拥有多台分散在不同机房的开发者而言,通过 Linux VPS 搭建 Komari 探针 是一种内存开销极低、且能实时掌握节点健康状况的监控手段。相比 Prometheus 与 Zabbix 这类动辄占用数百兆内存的大型企业监控套件,轻量探针 Agent 内存占用通常在 10MB ~ 20MB 以内,不仅能够采集 CPU、内存、磁盘与网络吞吐,还能长周期探测对国内三网(电信、联通、移动)的 Ping 延迟与晚高峰丢包波动。
在开始搭建前,多节点的系统加固与资源隔离建议参考 VPS 建站与运维指南;如果是内存小于 1GB 的超小实例,务必结合 Docker 小内存规范运维 限制日志体积与存储开销。
先说结论与选型考量
- 资源开销对比:主控端(Dashboard)推荐使用 1 核 1G 以上 VPS 配合 SQLite 独立运行;被控端(Client)采用静态编译的二进制 Agent,资源消耗近乎可以忽略。
- 三网丢包观测价值:单次测速脚本只能反映瞬时速率,通过探针设定国内关键骨干节点(如上海电信、北京联通、广州移动)进行持续 ICMP/TCP 探测,才能准确捕获跨洋链路在晚高峰的恶化拐点。
- 安全与暴露面控制:主控端通信建议通过 Nginx / Caddy 配置 TLS 反向代理并开启 WebSocket 支持,严禁将被控端的通信密钥(Secret Key)公开暴露。
主控端(Dashboard)部署实操
主控端负责收集各节点上报的指标数据,并提供直观的可视化 Web 面板。推荐在一台具备独立公共 IPv4、网络连通性良好的主 VPS 上使用 Docker Compose 快速部署。
1. 编写 docker-compose.yml
创建工作目录并在其中编写编排文件:
version: '3.8'
services:
komari-server:
image: ghcr.io/komari-monitor/server:latest
container_name: komari-server
restart: unless-stopped
ports:
- "127.0.0.1:25600:25600"
environment:
- PORT=25600
- DB_TYPE=sqlite
- DB_PATH=/app/data/komari.db
- TZ=Asia/Shanghai
volumes:
- ./data:/app/data
logging:
driver: "json-file"
options:
max-size: "20m"
max-file: "3"
启动主控端服务:
docker compose up -d
2. 反向代理与 WebSocket 支撑
主控端通过 WebSocket 实现秒级实时状态推送,以 Nginx 为例,配置示例必须包含协议升级头:
server {
listen 443 ssl http2;
server_name monitor.example.com;
ssl_certificate /etc/letsencrypt/live/monitor.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:25600;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
访问管理后台,完成管理员账户初始化,并在“节点管理”中生成待添加节点的专属通信密钥(Secret Token)。
被控端(Agent)部署与服务守护
被控端支持一键脚本与原生二进制守护运行。为确保 VPS 重启后自动上线,推荐将其封装为标准的 systemd 系统服务。
1. 安装与配置 Agent
在需要受控的每一台 Linux VPS 上下载对应架构的客户端:
# 创建运行目录
sudo mkdir -p /opt/komari-agent
cd /opt/komari-agent
# 下载对应架构的可执行文件 (以 amd64 为例)
sudo wget -O komari-agent https://github.com/komari-monitor/agent/releases/latest/download/komari-agent-linux-amd64
sudo chmod +x komari-agent
创建配置文件 /opt/komari-agent/config.json:
{
"server": "wss://monitor.example.com/api/v1/ws",
"token": "YOUR_NODE_SECRET_TOKEN",
"interval": 2,
"ping_targets": [
{"name": "上海电信", "host": "202.96.209.133"},
{"name": "北京联通", "host": "202.106.195.68"},
{"name": "广州移动", "host": "120.196.165.24"}
]
}
2. 注册 systemd 守护进程
创建服务文件 /etc/systemd/system/komari-agent.service:
[Unit]
Description=Komari Server Monitoring Agent
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/komari-agent
ExecStart=/opt/komari-agent/komari-agent -c /opt/komari-agent/config.json
Restart=always
RestartSec=5s
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
加载并启动守护进程:
sudo systemctl daemon-reload
sudo systemctl enable --now komari-agent
sudo systemctl status komari-agent
网络丢包与延迟跟踪分析技巧
多节点部署完毕后,主面板将实时汇聚所有 VPS 的状态矩阵。在日常运维中,建议重点关注以下指标:
- 三网长周期延迟基线:记录节点在白天(非高峰)与晚高峰(20:00 - 23:00)的 Ping 延迟变化。若某线路在晚高峰出现阶梯状抬升(如从 130ms 激增至 280ms),表明该运营商跨洋出口出现拥堵。
- 丢包率突变识别:在未跑满带宽的情况下,丢包率持续超过 5% 通常意味着上游链路重路由、光缆故障或机房遭遇 DDoS 攻击。
- 系统性能交叉比对:配合 VPS 测试脚本与方法 中记录的 CPU 与 I/O 基准,若发现 Agent 报告系统负荷持续高于核心数且磁盘 I/O 长期跑满,应及时排查异常进程或被盗用风险。
常见问题解答 (FAQ)
探针客户端持续频繁断连是什么原因?
首先检查主控端 Nginx 反代是否未开启 proxy_http_version 1.1 和 Upgrade 连接头;其次检查被控端防火墙是否拦截了出站 WebSocket(443 端口)连接。
监控探针自身会不会影响 VPS 性能?
极小。Komari 被控端使用 Go/Rust 开发,日常 CPU 占用低于 0.5%,内存占用约 10MB,每次 ICMP Ping 仅发送极小的数据包,不会对 VPS 流量配额造成明显消耗。
评论