Reputation: 239
I am trying to load prometheus with docker using the following custom conf file: danilo@machine:/prometheus-data/prometheus.yml:
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- targets: ['localhost:8083', 'localhost:8080']
labels: my_app
group: 'my_app_group'
With the following command:
$ sudo docker run -p 9090:9090 prom/prometheus --config.file=/prometheus-
data/prometheus.yml
The file already exists. However, I am getting the following message:
level=error ts=2018-09-26T17:45:00.586704798Z caller=main.go:617 err="error loading config from "/prometheus-data/prometheus.yml": couldn't load configuration (--config.file="/prometheus-data/prometheus.yml"): open /prometheus-data/prometheus.yml: no such file or directory"
I'm following this guide:
What can I do to load this file correctly?
Upvotes: 13
Views: 29064
Reputation: 46
I was facing the same issue, and none of the above answers worked for me. I received the following error:
docker run -d -p9090:9090 --name prometheus --network my-network -v ./prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
docker: Error response from daemon: source /var/lib/docker/overlay2/36ea9303de63182ffed055cca6d7f59880400e03a29e3c1ecf770f80beb51f24/merged/etc/prometheus/prometheus.yml is not directory.
I was using windows directory pneumonic "/" for prometheus unix os.
It started working after changing "/" with "\" for unix path and double quotes with "\\" for windows path
docker run -d -p9090:9090 --name prometheus --network my-network -v "D:\\projects\\docker\\prometheus.yml":/etc/prometheus/prometheus.yml prom/prometheus
Upvotes: 1
Reputation: 11
I was doing the same and it works when put the whole path like whole path:
sudo docker run -p 9090:9090 -v User/inner-directories.../prometheus-data/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
When you use volumes you have to put paths that are registered on docker config resources
Upvotes: 1
Reputation: 51
Youneed to mount volume on your docker . Solution of @Udara is good but with a mistake on command.
sudo docker run -p 9090:9090 -v /prometheus-data/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
Dont forget to add prometheus.yml file under the folder /prometheus-data
Upvotes: 0
Reputation: 2483
I am using docker-compose.yaml and I also got the same issue. I had to set volume details as follows.
prometheus:
image: prom/prometheus:v2.26.0
user: root
ports:
- 9090:9090
volumes:
- /apps/prometheus/configs/prometheus.yaml:/etc/prometheus/prometheus.yaml
- /data/prometheus:/prometheus
command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
Upvotes: 7
Reputation: 5594
By “the file already exists”, do you mean that the file is on your host at /prometheus-data/prometheus.yml
? If so, then you need to bind mount it into your container for it to be accessible to Prometheus.
sudo docker run -p 9090:9090 -v /prometheus-data/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
It's covered under Volumes & bind-mount in the documentation.
Upvotes: 14