2017-10-10 14:58:52 +02:00
---
2017-10-26 15:53:27 +02:00
title: Installation
sort_rank: 2
2017-10-10 14:58:52 +02:00
---
2017-10-26 15:53:27 +02:00
# Installation
2017-10-10 14:58:52 +02:00
## Using pre-compiled binaries
We provide precompiled binaries for most official Prometheus components. Check
out the [download section ](https://prometheus.io/download ) for a list of all
available versions.
## From source
For building Prometheus components from source, see the `Makefile` targets in
the respective repository.
## Using Docker
All Prometheus services are available as Docker images under the
[prom ](https://hub.docker.com/u/prom/ ) organization.
Running Prometheus on Docker is as simple as `docker run -p 9090:9090
prom/prometheus`. This starts Prometheus with a sample configuration and
exposes it on port 9090.
The Prometheus image uses a volume to store the actual metrics. For
production deployments it is highly recommended to use the
2017-10-26 15:42:07 +02:00
[Data Volume Container ](https://docs.docker.com/engine/admin/volumes/volumes/ )
2017-10-10 14:58:52 +02:00
pattern to ease managing the data on Prometheus upgrades.
To provide your own configuration, there are several options. Here are
two examples.
### Volumes & bind-mount
2017-10-26 15:42:07 +02:00
Bind-mount your `prometheus.yml` from the host by running:
2017-10-10 14:58:52 +02:00
2017-10-26 15:42:07 +02:00
```bash
2017-10-10 14:58:52 +02:00
docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
```
Or use an additional volume for the config:
2017-10-26 15:42:07 +02:00
```bash
2017-10-10 14:58:52 +02:00
docker run -p 9090:9090 -v /prometheus-data \
2017-10-28 12:08:33 +02:00
prom/prometheus --config.file=/prometheus-data/prometheus.yml
2017-10-10 14:58:52 +02:00
```
### Custom image
To avoid managing a file on the host and bind-mount it, the
configuration can be baked into the image. This works well if the
configuration itself is rather static and the same across all
environments.
For this, create a new directory with a Prometheus configuration and a
2017-10-26 15:42:07 +02:00
`Dockerfile` like this:
2017-10-10 14:58:52 +02:00
2017-10-26 15:42:07 +02:00
```Dockerfile
2017-10-10 14:58:52 +02:00
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
```
Now build and run it:
2017-10-26 15:42:07 +02:00
```bash
2017-10-10 14:58:52 +02:00
docker build -t my-prometheus .
docker run -p 9090:9090 my-prometheus
```
2017-10-26 15:42:07 +02:00
A more advanced option is to render the configuration dynamically on start
2017-10-10 14:58:52 +02:00
with some tooling or even have a daemon update it periodically.
## Using configuration management systems
If you prefer using configuration management systems you might be interested in
the following third-party contributions:
2017-10-26 15:42:07 +02:00
### Ansible
2017-10-10 14:58:52 +02:00
2017-11-27 18:22:27 +01:00
* [Cloud Alchemy/ansible-prometheus ](https://github.com/cloudalchemy/ansible-prometheus )
2017-10-10 14:58:52 +02:00
2017-10-26 15:42:07 +02:00
### Chef
2017-10-10 14:58:52 +02:00
* [rayrod2030/chef-prometheus ](https://github.com/rayrod2030/chef-prometheus )
2017-10-26 15:42:07 +02:00
### Puppet
2017-10-10 14:58:52 +02:00
* [puppet/prometheus ](https://forge.puppet.com/puppet/prometheus )
2017-10-26 15:42:07 +02:00
### SaltStack
2017-10-10 14:58:52 +02:00
* [bechtoldt/saltstack-prometheus-formula ](https://github.com/bechtoldt/saltstack-prometheus-formula )