增加 grafana 数据源时的 Docker 网络问题

Posted

技术标签:

【中文标题】增加 grafana 数据源时的 Docker 网络问题【英文标题】:Docker network issue when greating grafana data source 【发布时间】:2020-05-27 22:54:36 【问题描述】:

我正在尝试设置一个 grafana、influxdb、telegraf 容器,但我似乎无法正确。尝试创建数据源时出现网络错误:Bad Gateway(502) error

数据源更新但网络测试失败

这是我的 yml 配置文件:

version: "3"
services:
  grafana:
    image: grafana/grafana
    container_name: grafana
    restart: always
    ports:
      - 3000:3000
    networks:
      - monitoring
    volumes:
      - grafana-volume:/var/lib/grafana
  influxdb:
    image: influxdb
    container_name: influxdb
    restart: always
    ports:
      - 8086:8086
   networks:
      - monitoring
    volumes:
      - influxdb-volume:/var/lib/influxdb
networks:
  monitoring:
volumes:
  grafana-volume:
    external: false
  influxdb-volume:
    external: false

目前,我对网络配置进行了散列,因为我想看看如果让 docker 创建网络是否有什么不同。

我使用的是 MacBook,我的 docker 版本是:

Docker version 19.03.5, build 633a0ea

在检查日志时,我确实看到 tcp 在我的 localhost 机器端口 8086 上被阻止,但我没有强制执行代理/防火墙。这是一些日志结果

t=2020-02-12T10:42:25+0000 lvl=info msg="Initializing Stream Manager"
t=2020-02-12T10:42:25+0000 lvl=info msg="HTTP Server Listen" logger=http.server address=[::]:3000 protocol=http subUrl= socket=
t=2020-02-12T10:43:54+0000 lvl=eror msg="Failed to look up user based on cookie" logger=context error="user token not found"
t=2020-02-12T10:43:54+0000 lvl=info msg="Request Completed" logger=context userId=0 orgId=0 uname= method=GET path=/ status=302 remote_addr=192.168.96.1 time_ms=10 size=29 referer=
t=2020-02-12T10:44:00+0000 lvl=info msg="Successful Login" logger=http.server User=admin@localhost
t=2020-02-12T10:45:35+0000 lvl=info msg="Request Completed" logger=context userId=1 orgId=1 uname=admin method=GET path=/api/datasources/proxy/1/query status=502 remote_addr=192.168.96.1 time_ms=43 size=0 referer=http://0.0.0.0:3000/datasources/edit/1/?gettingstarted
2020/02/12 10:45:35 http: proxy error: dial tcp 127.0.0.1:8086: connect: connection refused

8086 端口已启动并正在监听

tcp46      0      0  *.8086                 *.*                    LISTEN

【问题讨论】:

【参考方案1】:

数据源服务器值127.0.0.1:8086 在容器中无效(容器中的本地主机!= 操作系统本地主机 - 容器通常位于不同的网络命名空间中)。

您的 Grafana 容器位于 monitoring 网络中,因此请连接到 influxdb:8086,而不是 127.0.0.1:8086

【讨论】:

【参考方案2】:

令人高兴的是 grafana 正在他的本地机器(容器)上搜索 influxdb,所以这里你需要将 grafana 与 influxdb 链接,在 grafana 中添加:

    links:
     - influxdb

【讨论】:

链接是 deprecated 功能,不应使用。 我确实添加了它,但错误仍然存​​在。有没有其他替代方法?错误如下。`t=2020-02-12T19:54:13 +0000 lvl=info msg="Successful Login" logger=http.server User=admin@localhost 2020/02/12 19:55:06 http: proxy error: dial tcp 0.0.0.0:8086: connect: connection denied t= 2020-02-12T19:55:06+0000 lvl=info msg="Request Completed" logger=context userId=1 orgId=1 uname=admin method=GET path=/api/datasources/proxy/1/query status=502 remote_addr=192.168.176.1 time_ms=41 size=0 referer=0.0.0.0:3000/datasources/edit/1/?gettingstarted`

以上是关于增加 grafana 数据源时的 Docker 网络问题的主要内容,如果未能解决你的问题,请参考以下文章

cAdvisor + Prometheus + grafana的安装

Grafana - mysql中没有数据时的间隙

使用Grafana 展示Docker容器的监控图表并设置邮件报警规则

Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台(不使用docker)

Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台(不使用docker)

docker-compose创建的网段与内网冲突时的解决方法