首页 文章

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

提问于
浏览
0

我有一个有两个节点的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配置中,我有以下scrape定义,其中host1和host2是节点的主机名 .

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

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

1 回答

  • 0

    也许有点晚了,但在这里 . 要执行“自动发现”方式,您可以使用以下内容:

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

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

相关问题