Docker 普罗米修斯配置

Docker Prometheus Config

我正在尝试配置 prometheus 和 grafana 来监视我的 django 应用程序,但是当执行 docker-compose up 命令时抛出此错误:

grafana_prometheus_ctnr | level=error ts=2020-10-20T13:08:42.474Z caller=main.go:290 msg="Error loading config (--config.file=/etc/prometheus/prometheus.yml)" err="open /etc/prometheus/prometheus.yml: no such file or directory"

我有各种服务,其中之一是 prometheus

docker-compose.yml:

...

prometheus:
  container_name: grafana_prometheus_ctnr
  build:
    context: .
    dockerfile: Dockerfile-prometheus
  volumes:
    - ./prometheus-data:/etc/prometheus
  ports:
    - 9090:9090
  networks:
    - grafana-ntwk

...

Dockerfile-普罗米修斯:

FROM prom/prometheus:v2.22.0

LABEL version="1.0.0"

COPY ./prometheus.yml /etc/prometheus/
COPY ./prometheus.json /etc/prometheus/file_sd/

EXPOSE 9090

prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  scrape_timeout: 10s

scrape_configs:
  - file_sd_configs:
    files:
      - /etc/prometheus/file_sd/*.json

prometheus.json:

[
  {
    "targets": ["0.0.0.0:9090"],
    "labels": {
      "job": "prometheus",
      "environment": "develope",
    }
  },
  {
    "targets": ["0.0.0.0:8000"],
    "labels": {
      "job": "django",
      "environment": "develope",
    }
  },
  {
    "targets": ["0.0.0.0:5432"],
    "labels": {
      "job": "postres",
      "environment": "develope",
    }
  }
]

谁知道为什么文件没有被复制

问题出在您的 Dockerfiledocker-compose 文件中。 Dockerfileprometheus.yml 复制到 /etc/prometheus 目录。 docker-compose 还在同一目录中安装卷。在这种情况下,容器内目录中的现有文件被屏蔽,因为 docker 将它们安装在现有文件之上。文件仍在容器中,但无法访问。从 Dockerfile 中删除 COPY 或从 docker-compose 中删除卷或将它们安装到另一个目录中。

这次更新很适合我:

Dockerfile-prometheus:

...
COPY ./prometheus.yml /etc/prometheus/prometheus.yml
COPY ./prometheus.json /etc/prometheus/file_sd/prometheus.json
...

docker-compose.yml:

...
prometheus:
  container_name: grafana_prometheus_ctnr
  build:
    context: .
    dockerfile: Dockerfile-prometheus
  volumes:
    - ./prometheus-data:/etc/prometheus
  ports:
    - 9090:9090
  networks:
    - grafana-ntwk
...

prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  scrape_timeout: 10s

scrape_configs:
  - job_name: 'monitoring'
    file_sd_configs:
      - files:
        - /etc/prometheus/file_sd/*.json