prometheus容器的 docker 初始化代码:
docker run -d -p 127.0.0.1:9090:9090 \ # 不暴露在公网不能改
-v /storage/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
--restart=always \
--name=prometheus \
--net=prometheus-bridge \ # 不能改, 因为有很多容器都在这个网桥内
--ip 172.18.0.2 \ # 不能改
prom/prometheus
这个是node_exporter的代码,本来也加上了prometheus-bridge, 但这样就无法监控宿主机网络流量了
如果想监控宿主机网络流量必须使用network_mode:host 但是 host 无法与bridge一起用(默认端口0.0.0.0:9100)
version: '3.8'
services:
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
/storage/prometheus/prometheus.yml 这是当前的配置文件,不想把node_exporter暴露在公网
使用了ufw enable 防止外部访问
- job_name: node-exporter
static_configs:
- targets: ['公网 IP:9100'] # 这个是当前的配置文件用的公网,想改成内网访问
尝试过使用host.docker.internal:9100 但是开了防火墙后无法访问?
不知道有没有什么好的解决方案?