在法国用 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
赞同度 100% · 0 条评论 · 4 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。