巡检时发现监控相关的两个端口虽然没有被 UFW 放行,但进程本身仍监听在全地址:
9100:宿主机 prometheus-node-exporter13000:Grafana目标不是依赖防火墙兜底,而是把监听面本身收口到本机回环地址。
9100 改为仅监听 127.0.0.1:910013000 改为仅监听 127.0.0.1:13000https://logs.thankseveryone.top 反向代理访问正常排查结果如下:
9100 由 systemd 服务 prometheus-node-exporter.service 提供/etc/default/prometheus-node-exporterARGS="",未指定 --web.listen-address,因此默认监听 :910013000 由 Docker 容器 grafana 提供/root/docker-compose-yaml/logging.yamlnetwork_mode: host,并仅设置了 GF_SERVER_HTTP_PORT="13000",未设置 GF_SERVER_HTTP_ADDR/usr/local/openresty/nginx/conf/conf.d/logs-thankseveryone-top.conf 指向 http://127.0.0.1:13000/root/docker-compose-yaml/prometheus.yaml 指向 127.0.0.1:9100这说明两项服务都没有必要监听全地址,改为回环不会破坏现有依赖。
修改文件:/etc/default/prometheus-node-exporter
变更前:
ARGS=""
变更后:
ARGS="--web.listen-address=127.0.0.1:9100"
同时保留备份:
/etc/default/prometheus-node-exporter.bak-hermes
随后重启服务:
systemctl restart prometheus-node-exporter
修改文件:/root/docker-compose-yaml/logging.yaml
在 grafana 服务的 environment 中新增:
GF_SERVER_HTTP_ADDR: "127.0.0.1"
保留原有端口:
GF_SERVER_HTTP_PORT: "13000"
随后重新创建 Grafana 容器:
cd /root/docker-compose-yaml
docker compose -f logging.yaml up -d grafana
修改完成后,监听地址已收敛为:
127.0.0.1:9100 prometheus-node-exporter
127.0.0.1:13000 grafana
127.0.0.1:19090 prometheus
也就是说:
9100 不再监听 *13000 不再监听 *以下本机地址访问正常:
http://127.0.0.1:9100/metricshttp://127.0.0.1:13000/api/healthhttp://127.0.0.1:19090/-/healthy以下地址已无法直连:
http://10.0.0.47:9100/metricshttp://10.0.0.47:13000/api/healthPrometheus targets 中 node-exporter 状态为:
health = up
scrapeUrl = http://127.0.0.1:9100/metrics
通过 OpenResty 反向代理访问:
https://logs.thankseveryone.top/api/health
返回正常,说明外部入口未受影响。
本次变更影响的仅是监听地址,不改变以下内容:
如需回滚:
/etc/default/prometheus-node-exporter 恢复为原始 ARGS="" 或从备份文件恢复/root/docker-compose-yaml/logging.yaml 删除 GF_SERVER_HTTP_ADDR: "127.0.0.1"prometheus-node-exporter 并重新创建 Grafana 容器127.0.0.1,不要回退到宿主机 IP