在法国用 OVH VPS 跑监控,别让 Node Exporter 全暴露
上个月帮人看一台 OVH 的 VPS,2 vCPU / 4G,Debian 12,上面跑了几个小服务。现象是 CPU 长期被打到 70% 以上,dmesg 里有一堆 nf_conntrack: table full, dropping packet。查下来不是自己的业务,是 Node Exporter 的 9100 端口直接开在公网,被扫到之后持续被拉指标,顺带把 conntrack 表撑满了。数据量不大,一天几百 MB,但足够让这台小机器难受。
我的做法分三步。先把暴露面收掉,监控端口只留本机回环:
# /etc/systemd/system/node_exporter.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/local/bin/node_exporter \
--web.listen-address=127.0.0.1:9100 \
--collector.systemd \
--no-collector.arp
然后 systemctl daemon-reload && systemctl restart node_exporter。Prometheus 如果也在同一台机器,scrape_configs 里写 127.0.0.1:9100 就行;如果 Prometheus 在另一台,就走 SSH 隧道或 WireGuard,别图省事直接放公网。
第二步是给 conntrack 加个上限,避免再被扫的时候整机丢包:
sysctl -w net.netfilter.nf_conntrack_max=65536
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=600
写进 /etc/sysctl.d/99-conntrack.conf 才持久。OVH 的默认内核模块参数不一定和你预期一致,改完用 conntrack -C 看当前条目数,别只看 sysctl 回显。
第三步是给 OVH 的防火墙加一层。OVH 面板里的 Network Firewall 是免费的,规则按「允许已建立连接 + 拒绝其他入站」配,比在机器上纯靠 nftables 稳,因为它在网络层就挡掉了。注意它只对公网 IP 生效,内网流量不受影响。
为什么这样做:Node Exporter 的指标本身不敏感,但它是个无认证的 HTTP 服务,被扫到就等于给人一个稳定的探测点。conntrack 表满的代价不是「监控挂了」,而是整机新连接都建不起来,SSH 都可能进不去。所以先收端口,再调内核参数,最后加网络层防火墙,顺序别反。
哪里会失效:如果你的 Prometheus 在另一台 OVH 机器上,走公网抓取又不想配隧道,那 9100 只能暴露,这时候至少加 --web.config.file 做 basic auth,但 Prometheus 的 basic_auth 配置要同步改,容易漏。另外 OVH 的 Network Firewall 对 IPv6 的规则和 IPv4 是分开配的,只配一边等于没配。我自己就漏过 IPv6,扫过来的流量全走 v6。
你们那边如果监控和目标在同一台 OVH VPS 上,是直接回环抓,还是单独拉一台小的做 Prometheus?
0 条评论
还没有评论,写下第一条。