Prometheus remote storage adapter for PostgreSQL
With this remote storage adapter, Prometheus can use PostgreSQL as a long-term store for time-series metrics.
Related packages to install:
Quick start
You can download pre-built binaries here
Docker instructions
A docker image for the prometheus-postgreSQL storage adapter is available
on Docker Hub at timescale/prometheus-postgresql-adapter.
The easiest way to use this image is in conjunction with the pg_prometheus
docker image provided by Timescale.
This image packages PostgreSQL, pg_prometheus
, and TimescaleDB together in one
docker image.
To run this image use:
docker run --name pg_prometheus -d -p 5432:5432 timescale/pg_prometheus:latest postgres \
-csynchronous_commit=off
Then, start the prometheus-postgreSQL storage adapter using:
docker run --name prometheus_postgresql_adapter --link pg_prometheus -d -p 9201:9201 \
timescale/prometheus-postgresql-adapter:latest \
-pg-host=pg_prometheus \
-pg-prometheus-log-samples
Finally, you can start Prometheus with:
docker run -p 9090:9090 --link prometheus_postgresql_adapter -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
(a sample prometheus.yml
file can be found in sample-docker-prometheus.yml
in this repository).
Configuring Prometheus to use this remote storage adapter
You must tell prometheus to use this remote storage adapter by adding the
following lines to prometheus.yml
:
remote_write:
- url: "http://<adapter-address>:9201/write"
remote_read:
- url: "http://<adapter-address>:9201/read"
Environment variables
All of the CLI flags are also available as environment variables, and begin with the prefix TS_PROM
.
For example, the following mappings apply:
-adapter-send-timeout => TS_PROM_ADAPTER_SEND_TIMEOUT
-leader-election-rest => TS_PROM_LEADER_ELECTION_REST
-pg-host => TS_PROM_PG_HOST
-web-telemetry-path => TS_PROM_WEB_TELEMETRY_PATH
...
Each CLI flag and equivalent environment variable is also displayed on the help prometheus-postgresql-adapter -h
command.
Building
Before building, make sure the following prerequisites are installed:
- Dep for dependency management.
- Go
Then build as follows:
# Install dependencies (only required once)
dep ensure
# Build binary
make
Building new Docker images
# Build Docker image
make docker-image
# Push to Docker registry (requires permission)
make docker-push ORGANIZATION=myorg
Contributing
We welcome contributions to this adaptor, which like TimescaleDB is released under the Apache2 Open Source License. The same Contributors Agreement applies; please sign the Contributor License Agreement (CLA) if you're a new contributor.