Can't load prometheus.yml config file with docker (prom/prometheus)

Danilo Caetano picture Danilo Caetano · Sep 26, 2018 · Viewed 8.1k times · Source

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?

Answer

King Chung Huang picture King Chung Huang · Sep 26, 2018

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.