Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/timescale/prometheus-postgresql-adapter
Use PostgreSQL as a remote storage database for Prometheus
https://github.com/timescale/prometheus-postgresql-adapter
Last synced: about 1 month ago
JSON representation
Use PostgreSQL as a remote storage database for Prometheus
- Host: GitHub
- URL: https://github.com/timescale/prometheus-postgresql-adapter
- Owner: timescale
- License: apache-2.0
- Archived: true
- Created: 2017-07-18T21:22:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-11-01T17:32:25.000Z (about 4 years ago)
- Last Synced: 2024-06-18T21:30:03.280Z (6 months ago)
- Language: Go
- Homepage:
- Size: 141 KB
- Stars: 335
- Watchers: 19
- Forks: 66
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ccamel - timescale/prometheus-postgresql-adapter - Use PostgreSQL as a remote storage database for Prometheus (Go)
README
# **NOTICE: THIS PROJECT HAS BEEN SUPERSEDED BY PROMSCALE**
This project has been superseded by [Promscale](https://github.com/timescale/Promscale).
Like this project, Promscale allows easy storage of Prometheus metrics in TimescaleDB + Postgres,
but also offers: automatic partitioning, native compression (typically 95% storage savings),
native data retention policies, full SQL and PromQL, and more.You can find the new project at [https://github.com/timescale/promscale](https://github.com/timescale/promscale)
and more details can be found in our [design document](https://tsdb.co/prom-design-doc).This project will continue only in maintenance mode.
# 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:
- [pg_prometheus extension for PostgreSQL](https://github.com/timescale/pg_prometheus) (required)
- [TimescaleDB](https://github.com/timescale/timescaledb) (optional
for better performance and scalability)## Quick start
You can download pre-built binaries [here](https://github.com/timescale/prometheus-postgresql-adapter/releases)
## Docker instructions
A docker image for the prometheus-postgreSQL storage adapter is available
on Docker Hub at [timescale/prometheus-postgresql-adapter](https://hub.docker.com/r/timescale/prometheus-postgresql-adapter/).The easiest way to use this image is in conjunction with the `pg_prometheus`
docker [image](https://hub.docker.com/r/timescale/pg_prometheus/) 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 -e POSTGRES_PASSWORD=mypass -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-password=mypass \
-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://:9201/write"
remote_read:
- url: "http://: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.
## Configuring Prometheus to filter which metrics are sent
You can limit the metrics being sent to the adapter (and thus being stored in your long-term storage) by
setting up `write_relabel_configs` in Prometheus, via the `prometheus.yml` file.
Doing this can reduce the amount of space used by your database and thus increase query performance.The example below drops all metrics starting with the prefix `go_`, which matches Golang process information
exposed by exporters like `node_exporter`:```
remote_write:
- url: "http://prometheus_postgresql_adapter:9201/write"
write_relabel_configs:
- source_labels: [__name__]
regex: 'go_.*'
action: drop
```Additional information about setting up relabel configs, the `source_labels` field, and the possible actions can be found in the [Prometheus Docs](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write).
## Building
Before building, make sure the following prerequisites are installed:
* [Go](https://golang.org/dl/)
Then build as follows:
```bash
# Build binary
make
```## Building new Docker images
```bash
# 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](//github.com/timescale/timescaledb/blob/master/CONTRIBUTING.md) applies; please sign the [Contributor License Agreement](https://cla-assistant.io/timescale/prometheus-postgresql-adapter) (CLA) if you're a new contributor.