【问题标题】:Docker Swarm - Prometheus cannot access Cadvisor: dial tcp 10.0.0.50:8090: connect: connection refusedDocker Swarm - Prometheus 无法访问 Cadvisor:拨号 tcp 10.0.0.50:8090:连接:连接被拒绝
【发布时间】:2019-10-05 15:41:31
【问题描述】:

在我的 Windows 10 Pro 上,我有一个完整的 Docker Swarm 环境。 Docker Swarm 堆栈的一部分是 Prometheus 和 cAdvisor。我将逐步构建监控工具,然后将监控部署到云解决方案。

在 Docker Swarm 堆栈中,我可以运行 Prometheus 和 Cadvisor,但 Prometheus 无法连接到 cAdvisor。 我收到消息:

获取http://cadvisor:8090/metrics:拨打tcp 10.0.0.50:8090:连接: 连接被拒绝

如何获得 Prometheus 访问 cadvisor?

在我的浏览器中,我可以执行“localhost:8090/metrics”并获取所有指标。因此,cAdvisor 肯定会运行。

我有一个创建网络的堆栈文件(devhome_default)。在我的第二个堆栈中,我指的是这个网络。

更新:解决此问题的一种方法是使用 IP 地址:$ ipconfig 在我的 prometheus.config 中使用该地址可以正常工作。但这使得目标硬连线且不可维护。

栈/dockercompose文件为:

version: '3'
services:
  cadvisor:
    image: google/cadvisor
    networks:
      - geosolutionsnet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /:/rootfs
      - /var/run:/var/run
      - /sys:/sys
      - /var/lib/docker/:/var/lib/docker
    ports:
      - 8090:8080
    deploy:
      mode: global
      resources:
        limits:
          cpus: '0.10'
          memory: 128M
        reservations:
          cpus: '0.10'
          memory: 64M

  prometheus:
    image: prom/prometheus:v2.8.0
    ports:
      - "9090:9090"
    networks:
      - geosolutionsnet
    volumes:
      - //k/data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    deploy:
      mode: replicated
      replicas: 1

networks:
  geosolutionsnet:
    external:
          name: devhome_default

prometheus 配置文件为:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  #- "alert.rules_nodes"
  #- "alert.rules_tasks"
  #- "alert.rules_service-groups"

scrape_configs:
  - job_name: 'prometheus'
    dns_sd_configs:
    - names:
      - 'tasks.prometheus'
      type: 'A'
      port: 9090
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8090']
        labels:
          alias: "cadvisor"

或者,我也尝试了 cAdvisor:

- job_name: 'cadvisor'
  dns_sd_configs:
  - names:
    - 'tasks.cadvisor'
    type: 'A'
    port: 8090

还有:

- job_name: 'cadvisor'
  static_configs:
    - targets: ['localhost:8090']

【问题讨论】:

    标签: docker-swarm prometheus cadvisor


    【解决方案1】:

    在不同的云环境中,下面的“dns”解决方案就像魅力一样。因为“真正的”云环境是我们 Docker 容器的目标环境,所以标准的“事实上的”解决方案就足够了。

    因此,这在云环境中运行良好:

    - job_name: 'cadvisor'
      dns_sd_configs:
      - names:
        - 'tasks.cadvisor'
        type: 'A'
        port: 8090
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2019-03-01
      • 1970-01-01
      相关资源
      最近更新 更多