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",
}
}
]
谁知道为什么文件没有被复制
问题出在您的 Dockerfile
和 docker-compose
文件中。 Dockerfile
将 prometheus.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
我正在尝试配置 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",
}
}
]
谁知道为什么文件没有被复制
问题出在您的 Dockerfile
和 docker-compose
文件中。 Dockerfile
将 prometheus.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