Netdata в среде роя докеров
Я совсем новичок в Netdata, а также в Docker Swarm. Некоторое время я запускал Netdata на отдельных хостах, но теперь пытался передавать Netdata с рабочих на узел менеджера в среде роя, где менеджер также должен действовать как центральный экземпляр Netdata. Я стремлюсь только следить за данными от менеджера.
Вот мой составной файл для стека:
version: '3.2'
services:
netdata-client:
image: titpetric/netdata
hostname: "{{.Node.Hostname}}"
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
environment:
- NETDATA_STREAM_DESTINATION=control:19999
- NETDATA_STREAM_API_KEY=1x214ch15h3at1289y
- PGID=999
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock
networks:
- netdata
deploy:
mode: global
placement:
constraints: [node.role == worker]
netdata-central:
image: titpetric/netdata
hostname: control
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
environment:
- NETDATA_API_KEY_ENABLE_1x214ch15h3at1289y=1
ports:
- '19999:19999'
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock
networks:
- netdata
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
netdata:
driver: overlay
attachable: true
Netdata в менеджере работает нормально, и контейнер работает на одном рабочем узле, на котором я тестирую. Судя по выводу журнала, он работает нормально и собирает имена из контейнеров докера, работающих так же, как и в локальной среде.
Проблема в том, что он не может подключиться к службе netdata-central, работающей на менеджере.
Это сообщение об ошибке:
2019-01-04 08:35:28: netdata INFO : STREAM_SENDER[7] : STREAM 7 [send to control:19999]: connecting...,
2019-01-04 08:35:28: netdata ERROR : STREAM_SENDER[7] : Cannot resolve host 'control', port '19999': Name or service not known,
не уверен, почему он не может разрешить имя хоста, думал, что так должно работать в оверлейной сети. Может быть, есть лучший способ подключения и не полагаться на имя хоста?
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: поскольку этот вопрос может возникнуть - брандмауэр (UFW) на управляющем хосте неактивен, также я думаю, что сообщение об ошибке явно указывает на проблему с разрешением имен.
0 ответов
Ваш API-ключ имеет неправильный формат. Это должен быть GUID. Вы можете сгенерировать один с помощью команды "uuidgen"...
В последнем изображении переменные среды не работают. Решение - создать файл конфигурации для потока. Мой рабочий файл композиции:
version: '3.7'
configs:
netdata_stream_master:
file: $PWD/stream-master.conf
netdata_stream_client:
file: $PWD/stream-client.conf
services:
netdata-client:
image: netdata/netdata:v1.21.1
hostname: "{{.Node.Hostname}}"
depends_on:
- netdata-central
configs:
-
mode: 444
source: netdata_stream_client
target: /etc/netdata/stream.conf
security_opt:
- apparmor:unconfined
environment:
- PGID=999
volumes:
- /proc:/host/proc:ro
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock
deploy:
mode: global
netdata-central:
image: netdata/netdata:v1.21.1
hostname: control
configs:
-
mode: 444
source: netdata_stream_master
target: /etc/netdata/stream.conf
security_opt:
- apparmor:unconfined
environment:
- PGID=999
ports:
- '19999:19999'
volumes:
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]