В моей (упрощенной) настройке у меня есть 2 сервера, A и B (и другие, которые ведут себя как B), и моя локальная машина. На каждом из серверов по mysql
-база данных и mysqld-exporter
prometheus-exporter должен работать как докер-контейнеры. Контейнеры не связаны, но обмениваются данными через сеть через открытый порт.
Серверы управляются с помощью инструмента и, следовательно, содержат одни и те же версии программ с одинаковыми конфигурациями, такими как порты, сетевое имя докера. Разница заключается в именах хостов, 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-command docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="USERNAME:PASSWORD@(SERVER_URL:MYSQL_PORT)/" prom/mysqld-exporter:v0.10.0
выполняется в консоли, которая работает для подключения к A из B и localhost, но не из A.
Как объяснялось, URL-адрес сервера также должен работать на сервере A, поскольку B и localhost используют один и тот же URL-адрес для подключения к базе данных.