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"...

https://github.com/netdata/netdata/blob/63c96aa96f96f3aea10bdcd2ecd92c889f26b3af/conf.d/stream.conf#L7

В последнем изображении переменные среды не работают. Решение - создать файл конфигурации для потока. Мой рабочий файл композиции:

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]
Другие вопросы по тегам