Назад | Перейти на главную страницу

удаленно собирать метрики докеров на устройстве A с удаленного устройства B

Я хотел бы собирать метрики докеров удаленно с помощью плагина Telegraf [inputs.docker] из InfluxData на устройстве A. Telegraf и InfluxDB сами являются контейнером докеров на другом устройстве B. Оба устройства используют ОС Debian Linux.

Итак, как это можно сделать? Я прочитал множество сайтов с советами, но ни один из них не работал. Может я что-то упустил ...

Я попытался настроить файл службы докеров для systemd следующим образом:

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 

затем я записал IP как переменную среды, подобную этой, в A export DOCKER_HOST=tcp://IP-of-device-A:2375 и просто перезапустили устройство A с shutdown -r. с участием sudo netstat -tunlp | grep docker Я проверил, была ли сделана эта конфигурация. Когда я делаю curl http://IP-of-device-A:2375/images/json на устройстве А работает нормально. Но на B я получил docker: Cannot connect to the Docker daemon at tcp://IP-of-device-A:2375. Is the docker daemon running?.

Что пошло не так?

Я также поместил эти команды в свою службу докеров в systemd

Environment="HTTP_PROXY=http://IP-of-device-A:2375"
Environment="HTTPS_PROXY=http://IP-of-device-A:2375"
Environment="NO_PROXY=localhost,127.0.0.1"

Но похоже, что это не работает.

Вот также конфигурация, которую я сделал в telegraf.conf

[[inputs.docker]]
#   ## Docker Endpoint
#   ##   To use TCP, set endpoint = "tcp://[ip]:[port]"
#   ##   To use environment variables (ie, docker-machine), set endpoint = "ENV"
#endpoint = "unix:///var/run/docker.sock"
endpoint = "tcp://IP-of-device-A:2375"
#
#   ## Set to true to collect Swarm metrics(desired_replicas, running_replicas)
gather_services = false
#

Как я могу подключиться от B к демону докера на A? И как я могу собрать на B с помощью Telegraf-docker-container метрики докеров на A?

Кто-нибудь знает как это сделать?

ps: Я знаю, что с портом 2375 я использую небезопасное соединение, но я просто хотел начать с максимально простого. Так что пока этот маршрут подключения мне подходит.