Docker 普罗米修斯-目标连接被拒绝

Docker 普罗米修斯-目标连接被拒绝,docker,docker-compose,monitoring,prometheus,cadvisor,Docker,Docker Compose,Monitoring,Prometheus,Cadvisor,我正试着用一个普罗米修斯容器从cAdvisor上获取数据 这是我的普罗米修斯 global: scrape_interval: 10s evaluation_interval: 10s scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "docker" static_configs: - targets

我正试着用一个普罗米修斯容器从cAdvisor上获取数据

这是我的普罗米修斯

global:
  scrape_interval: 10s
  evaluation_interval: 10s

scrape_configs:
 - job_name: "prometheus"
   static_configs:
     - targets: ["localhost:9090"]

 - job_name: "docker"
   static_configs:
     - targets: ['localhost:9323']

 - job_name: "cadvisor"
   scrape_interval: 5s
   static_configs:
     - targets: ['localhost:7070']
       labels:
         alias: "cadvisor"
还有我的docker-compose.yml:

version: "3.5"

services:
  app:
    container_name: app
    build: "./app"
    restart: always
    volumes:
      - ./app:/app
    depends_on:
      - db
    links:
      - db
    ports:
      - 8080:8080
  db:
    container_name: db
    image: postgres
    restart: always
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=articlesdb
      - POSTGRES_USER=dbuser 
      - POSTGRES_PASSWORD=dbpassword
    ports:
      - "5432:5432"
  prometheus:
    container_name: prometheus
    image: prom/prometheus:latest
    #build:
    #  context: ./prometheus
    #  dockerfile: Dockerfile
    ports:
      - 9090:9090
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    depends_on:
      - cadvisor
  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    ports:
      - 7070:8080
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    depends_on:
      - db
在targets部分,Prometheus说与cAdvisor容器和Docker守护进程的连接是有效的,而Prometheus与自身的连接是有效的。
我可以通过cURL或在浏览器上访问localhost:7070/metrics上的cAdvisor。问题可能是什么,我如何解决它?

在docker compose文件中,您将cAdvisor服务命名为“cAdvisor”,以便在docker网络中可以通过DNS名称cAdvisor访问该服务。更改您的prometheus.yml static_配置,如下所示:

 - job_name: "cadvisor"
    scrape_interval: 5s
    static_configs:
      - targets: ['cadvisor:7070']
        labels:
          alias: "cadvisor"

在docker compose文件中,您将cAdvisor服务命名为“cAdvisor”,因此在docker网络中,可以通过DNS名称cAdvisor访问该服务。更改您的prometheus.yml static_配置,如下所示:

 - job_name: "cadvisor"
    scrape_interval: 5s
    static_configs:
      - targets: ['cadvisor:7070']
        labels:
          alias: "cadvisor"