在我的(简化)设置中,我有 2 个服务器,A 和 B(以及其他行为类似于 B 的服务器)和我的本地计算机。在每个服务器上,-databasemysql
和mysqld-exporter
prometheus-exporter 应该作为 docker 容器运行。容器没有链接,而是通过打开的端口通过网络进行通信。
服务器由工具管理,因此包含相同版本的程序和相同的配置,如端口、docker 网络名称。区别在于主机名、ip 地址和其他特定于服务器的内容。
问题是,mysqld-exporter
服务器上A
生成日志消息:(level=error msg="Error pinging mysqld: dial tcp SERVER_IP_ADDRESS:3306: getsockopt: connection timed out" source="mysqld_exporter.go:268"
其中 SERVER_IP_ADDRESS 是服务器的 IP),而导出器B
工作正常。
我还尝试使用 手动创建容器,docker run
并在服务器 上设置DATA_SOURCE_NAME
环境变量A
,B
并在本地连接到服务器A
。 现在,容器可以正常工作,并按预期从我的本地计算机和服务器 连接到服务器 A B
,但仍然不能从 连接到服务器A
A 。 因此,我认为数据库工作正常(没有超载)。
docker-container 在机器上无法运行的原因是什么A
?我不知道该寻找什么。
如果缺少任何必要的信息,请告诉我!
编辑:
我说的“手动”是指docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="USERNAME:PASSWORD@(SERVER_URL:MYSQL_PORT)/" prom/mysqld-exporter:v0.10.0
在控制台中执行的 docker 命令,它可以从 B 和本地主机连接到 A,但不能连接到 A。
如上所述,服务器 URL 也应该在服务器 A 上起作用,因为 B 和本地主机使用相同的 url 连接到数据库。