Правильный способ доступа к cadvisor в роевой среде - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть Swarm с двумя узлами, и я использую cadvisor в качестве глобальной службы.Я получаю метрики и графану / Прометей могу их скрести.Однако мои цифры неверны.Когда я проверяю количество контейнеров с помощью инструментов командной строки docker, я вижу, что на первом узле работает 17 контейнеров, а на втором - 14 контейнеров.Prometheus / grafana, однако, скажет мне, что я получил 34 контейнера, и количество контейнеров равно 17 на обоих узлах.

Я предполагаю, что мои проблемы связаны с тем, что cadvisor определен в другом стеке, чем контейнер prometheus и grafana, и попыталсядля доступа к cadvisor через сервисный API.

В AI стека есть

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 в рое с более чем одним узлом или может указать, как определить цели для cadvisor в конфигурации proemtheus?

1 Ответ

0 голосов
/ 06 декабря 2018

Возможно, немного поздно, но вот оно.Чтобы выполнить «автообнаружение», вы можете использовать что-то вроде этого:

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

В пределах «tasks.cadvisor» имя после точки должно совпадать с именем, которое вы дали службе в docker compose иличерез команду docker service create.

...