docker swarm环境中的Netdata

时间:2019-01-04 08:42:38

标签: docker docker-swarm netdata

我对Netdata和Docker Swarm还是很陌生。我在单个主机上运行Netdata一段时间,但现在尝试在集群环境中将Netdata从工作者流式传输到管理器节点,在该环境中管理器也应充当中央Netdata实例。我的目标是仅监视管理器中的数据。

这是我的堆栈文件:

subprocess.check_output

管理器上的Netdata正常运行,并且容器在我正在测试的一个工作节点上运行。根据日志输出,它似乎运行良好,并从在本地环境中运行的docker容器收集名称。

问题是它无法连接到管理器上运行的netdata-central服务。

这是错误消息:

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

不确定为什么它不能解析主机名,以为它应该在覆盖网络上以这种方式工作。也许有更好的连接方式而不依赖主机名?

感谢您的帮助。

编辑:可能会出现此问题-控制主机上的防火墙(ufw)处于非活动状态,我也认为错误消息明确指出了名称解析问题。

2 个答案:

答案 0 :(得分:0)

您的API密钥格式错误。必须是GUID。您可以使用“ uuidgen”命令生成一个...

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

答案 1 :(得分:0)

在最新图像中,环境变量不起作用。 解决方案是为流创建一个配置文件。 我的工作撰写文件是:

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]