监控接入三方案原理对比:SSH 隧道、堡垒机与云原生监控
三条路看监控:隧道、堡垒机,还是数据上云? 在之前的文章里,我们为了"看一眼监控面板"折腾过不少事:部署在内网的 Prometheus/Grafana 不能直接访问,要开 SSH 隧道;隧道会断,断了要重连;连上之后还有账号密码、端口、地址一堆细节。这些"问题太多"的感慨,根源其实是同一个问题——监控系统放在私有网络里,人在外面,怎么合法地看到它? 围绕这个问题,行业给出了三种主流答案,恰好代表三种完全不同的网络哲学: SSH 隧道(人带着加密通道进内网看数据) 堡垒机(把入口收敛到一台"守门员",人过安检后进内网) 云原生监控(数据送出来给人看,人根本不用进内网) 这篇把三种方案的原理讲透,再放到同一张对比表里,最后给一张决策地图。它们没有优劣,只有"你愿意把哪一边放到公网上"的选择。 1. 方案 A:SSH 隧道 + 自建内网监控 原理 监控组件(Prometheus/Grafana)部署在内网,监听地址是内网 IP,公网完全摸不到。运维人员通过 SSH 端口转发(本地转发 -L 或反向转发 -R )把内网端口"搬"到自己笔记本的 localhost 上,浏览器访问 localhost:32090 时,流量顺着 SSH 加密通道流到内网。 这套方案的核心组件: 中转机:一台有公网 IP 的机器作为唯一入口,只开 SSH; 反向隧道:内网服务器主动用 autossh (自动重连的 SSH)连到中转机,建立常驻加密通道——这样即使内网没有公网 IP、人在任何网络,通道都在; 本地转发:运维人员笔记本再 ssh -L 把通道接回 localhost。 %% 方案A: SSH 隧道 + 自建内网监控(本系列学习环境的真实形态) flowchart TD LAP["运维人员笔记本\n浏览器访问 localhost:32090"] ECS["中转机(公网 IP)\n唯一公网入口\n只开放 SSH"] DEB["内网服务器\n无公网 IP"] MON["Prometheus / Grafana\n仅监听内网地址"] AUT["autossh 反向隧道\n常驻 + 自动重连"] LAP -->|"SSH -L 本地转发\n(端口搬到 localhost)"| ECS ECS -->|"加密隧道字节流"| AUT AUT -->|"经 SSH 通道"| DEB DEB --> MON LAP -.->|"浏览器流量实际路径"| MON style LAP fill:#0f172a,stroke:#3b82f6,stroke-width:2.5px,color:#ffffff,font-weight:bold style ECS fill:#0f172a,stroke:#3b82f6,stroke-width:2.5px,color:#ffffff,font-weight:bold style DEB fill:#0f172a,stroke:#3b82f6,stroke-width:2.5px,color:#ffffff,font-weight:bold style AUT fill:#052e16,stroke:#16a34a,stroke-width:2px,color:#ffffff,font-weight:bold style MON fill:#052e16,stroke:#16a34a,stroke-width:2px,color:#ffffff,font-weight:bold 特性 数据全程在内网:指标、日志不出内网,只有加密隧道里流动的"查看请求"; 暴露面最小化:公网只有中转机一个 SSH 端口,内网零暴露; 零新增组件:复用系统自带的 SSH,不需要额外部署任何产品; 认证模型:SSH 密钥对,个人密钥直连。 真实的坑(来自本系列实践) 隧道是这条链路上最脆弱的环节。SSH 双重跳转(笔记本 → 中转机 → 内网)空闲一段时间后,中转机侧可能重置连接,症状是 Read from remote host: Connection reset by peer ,浏览器打开看板立刻 HTTP 000 。解法是 autossh 保活 + 心跳参数,但自动重连只解决内网侧的反向隧道,笔记本侧的本地转发断了还是得手动拉起——这就是"单点"的代价。 ...