在群居环境中访问cadvisor的正确方法

时间:2018-11-27 10:44:35

标签: docker-swarm prometheus cadvisor

我有一个带有两个节点的Swarm,并且正在将cadvisor作为全局服务运行。我得到指标,并且grafana / Promethues可以抓取它们。但是我的电话号码是错误的。当我使用docker命令行工具检查容器数量时,我看到第一个节点上运行着17个容器,第二个节点上运行着14个容器。但是Prometheus / grafana会告诉我,我有34个容器,两个节点上的容器数均为17。

我认为我的问题来自于将cadvisor定义在与prometheus和grafana容器不同的堆栈中,并试图通过服务API访问cadvisor。

我在堆栈A中

version: '3.6'

services:

  cadvisor:
    image: google/cadvisor
    deploy:
      mode: global
    ports:
      - "8888:8080"
    #privileged: true 
    #command: 
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro    

然后在prometheus.yml配置中,我具有以下刮擦定义,其中host1和host2是节点的主机名。

  - job_name: 'cadvisor'
    scrape_interval: 20s
    static_configs:
      - targets: ['host1:8888','host2:8888']  

有人在一个节点多的集群中使用cadvisor的工作示例吗?或者可以指出如何在proemtheus配置中定义cadvisor的目标?

1 个答案:

答案 0 :(得分:0)

也许有点晚了,但是在这里。 要执行“自动发现”方式,您可以使用类似这样的方法:

- job_name: 'cadvisor'
  dns_sd_configs:
   - names: ['tasks.cadvisor']
     type: 'A'
     port: 8080 # internal

在“ tasks.cadvisor”中,点后的名称必须与您在docker compose中或通过docker service create命令为服务提供的名称匹配。