我按照网上的教程部署 influxdb + jmeter +Grafana 监控平台
系统是 Ubuntu,在 docker 里面部署的 influxdb 、grafana
但是在 Grafana 配置 InfluxDB 相关数据的时候报错了 Get "http://127.0.0.1:8086/querydb=jmeter&epoch=ms&q=SHOW+measurements":? dial tcp 127.0.0.1:8086: connect: connection refused error reading influxDB
已经在 influxdb 创建了数据库 jmeter 了
127.0.0.1 用不了吧?
看看 docker 的网络是啥?或者用 docker container 的 name 来标识。
1、influxdb 和 Grafana 是否在一个网段
2、在 docker 里面,互 ping 一下
3、访问的时候,不能用 127.0.0.1,你是两个 docker container,需要用 contaier id 或者 name 来
这个问题看起来像是 Grafana 无法连接到 InfluxDB 的问题。这可能有几个原因:
首先,你可以尝试确认 InfluxDB 服务是否正在运行。你可以通过在你的终端中运行以下命令来检查:
sudo service influxdb status
如果 InfluxDB 服务没有运行,你可以通过运行以下命令来启动它:
sudo systemctl start influxdb
如果你确认 InfluxDB 服务正在运行,但是仍然无法连接,那么你可能需要检查你的 JMeter 和 Grafana 容器的网络配置。你可以在你的 Docker 容器中运行以下命令来查看他们的网络端口:
sudo docker ps -a | grep -i influxdb
sudo docker ps -a | grep -i grafana
这些命令将显示你的 InfluxDB 和 Grafana 容器的网络端口。然后,你可以将这些端口转发到你的主机的端口,以便你的 JMeter 容器可以访问它们。你可以通过运行以下命令来转发 InfluxDB 的 8086 端口:
sudo docker port influxdb 8086
sudo docker port influxdb 8086 -p 8086:8086
然后,你可以将 Grafana 的 80 端口转发到你的主机的 80 端口:
sudo docker port grafana 80
sudo docker port grafana 80 -p 80:80
最后,你可以通过运行以下命令来确认这些端口转发是否成功:
sudo docker port influxdb
sudo docker port grafana
如果这些端口转发成功,你应该能够在你的主机上通过http://localhost:8086
和http://localhost:80
访问 InfluxDB 和 Grafana,然后你应该能够在 Grafana 中使用这些 URL 来显示你的 JMeter 测量。
你这肯定不行啊
//特别注意:grafana 的 influxdb url 配置应为
http://influxdb1.8:8086
//不能写 localhost!!!也不能写 id 地址!!!容器之间互相通信直接用容器名字!!!
感谢大佬们的指教,开始也换了容器名去连接不行,进容器里互相能 ping 通就直接使用容器 IP 连接了。
也在 jmeter 添加后端监控,页面有数据了。再自己慢慢摸索一下
你用容器 IP 有问题 你现在 OK 下次重启了 IP 可能变了 ,要是用 compose 你直接用服务名 ,要是用的原生的 docker 可以用 link ,link 不推荐使用哈
比如 我 codes ,用 link 连 codes_redis_server 和 codes_mysql_server 这两个是我在启 mysql 和 redis 时,--name 指定的容器名 ,然后 WEB 中用这个名来 linker , 配置文件中就用这个 Link 名,
docker run -d --name codes_web_server -p 0.0.0.0:${conf_port}:8032 -p 8064:8064 -p 8063:8063 --link codes_mysql_server:codes_mysql_server --link codes_redis_server:codes_redis_server registry.cn-zhangjiakou.aliyuncs.com/codes_work/codes_serve:${version}
你连不上是因为你两个容器都没在同一个网络。否则不可能连不上。你现在妥协用这个 ip,等你下回呢,继续妥协?
两个办法,一是让已有容器加入同一个网络
docker network list
//重新根据镜像 run 过程中加入参数指定网络
--network=my-network
//创建一个网络名字叫 haha
docker network create haha
//让已有的容器加入
docker network connect haha 4b7017ae794f
二是重新用 docker compose,两个容器写在同一个 yml 文件里执行 docker compose