首页 > 解决方案 > 502 在同一网络中的 docker 容器之间通信时网关错误

问题描述

我正在尝试使用 prometheus、cadvisor 和 alarmmanager 设置 grafana。我正在尝试通过 docker-compose 来做到这一点。除了 grafana 与 prometheus 作为数据源通信之外,我已经完成了所有工作。首先我的设置通过docker-compose.yml

version: '3.7'

volumes:
prometheus_data: {}
grafana_data: {}

networks:
monitor-net:

services:
prometheus:
  image: prom/prometheus:v2.13.1
  volumes:
    - ./prometheus/:/etc/prometheus/
    - prometheus_data:/prometheus
  command:
    - '--config.file=/etc/prometheus/prometheus.yml'
    - '--storage.tsdb.path=/prometheus'
    - '--web.console.libraries=/usr/share/prometheus/console_libraries'
    - '--web.console.templates=/usr/share/prometheus/consoles'
  ports:
    - 9090:9090
  expose:
    - 9090
  networks:
    - monitor-net
  links:
    - cadvisor:cadvisor
    - node-exporter:node-exporter
  restart: always

node-exporter:
  image: prom/node-exporter
  volumes:
    - /proc:/host/proc:ro
    - /sys:/host/sys:ro
    - /:/rootfs:ro
  command:
    - '--path.procfs=/host/proc'
    - '--path.sysfs=/host/sys'
    - --collector.filesystem.ignored-mount-points
    - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/net>    ports:
    - 9100:9100
  expose:
    - 9100
  networks:
    - monitor-net
  restart: always

alertmanager:
  image: prom/alertmanager
  ports:
    - 9093:9093
  expose:
    - 9093
  volumes:
    - ./alertmanager/:/etc/alertmanager/
  networks:
    - monitor-net
  restart: always
  command:
    - '--config.file=/etc/alertmanager/config.yml'
    - '--storage.path=/alertmanager'

cadvisor:
  image: google/cadvisor
  volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
  ports:
    - 8080:8080
  expose:
    - 8080
  networks:
    - monitor-net
  restart: always

grafana:
  image: grafana/grafana:6.7.2
  user: "472"
  ports:
    - 3000:3000
  expose:
    - 3000
  volumes:
    - grafana_data:/var/lib/grafana
    - ./grafana/provisioning/:/etc/grafana/provisioning/
  env_file:
    - ./grafana/config.monitoring
  networks:
    - monitor-net
  links:
    - prometheus:prometheus
  restart: always

我可以通过与我的 VPS 耦合的域名在浏览器中单独访问所有服务。我还可以在搬运工中看到它们确实是同一个网络中的 6 个。但是当它尝试从我的 grafana 应用程序访问 http://prometheus:9090 时:

普罗米修斯

我收到以下错误:

t=2021-03-21T19:24:09+0000 lvl=eror msg="Data proxy error" logger=data-proxy-log userId=1 orgId=1 uname=admin path=/api/datasources/proxy/21/api/v1/query remote_addr=172.26.0.1 referer=http://<my-remote-host>:3000/datasources/edit/21/ error="http: proxy error: dial tcp 172.26.0.5:9090: i/o timeout"


t=2021-03-21T19:24:09+0000 lvl=info msg="Request Completed" logger=context userId=1 orgId=1 uname=admin method=GET path=/api/datasources/proxy/21/api/v1/query status=502 remote_addr=172.26.0.1 time_ms=30061 size=0 referer=http://<my-remote-host>:3000/datasources/edit/21/

现在我已经成功地完成了容器相互通信的类似设置,但我无法让它工作..出于明显的安全原因,我无法在 UFW(运行 ubuntu 服务器)中打开端口,但这不应该一个区别。我还禁用了 iptablesdocker-daemon.json

希望大家给点建议!

标签: dockerdocker-composeprometheusgrafana

解决方案


推荐阅读