Deckhouse Prom++
Deckhouse Prom++ is an open-source, high-performance fork of Prometheus, designed to significantly reduce memory consumption while maintaining full compatibility with the original project.
Overview
Deckhouse Prom++ builds upon Prometheus, one of the most widely used monitoring and time-series databases. It retains full compatibility with Prometheus, including:
- Configuration files
- API endpoints
- Storage block format
- All functional capabilities
Key Benefits
- Drastically reduced memory usage
- Effortless migration
Getting started
Deckhouse Prom++ is fully compatible with Prometheus. Once installed, simply replace Prometheus with Deckhouse Prom++ — no configuration changes are needed.
Example configurations can be found here.
Installing Deckhouse Prom++
Converting WAL before installation
Deckhouse Prom++ uses a different WAL (Write-Ahead Log) format but remains fully compatible with historical blocks. Since WAL contains the last 1.5 blocks of data (typically around 3 hours), if you plan to use Deckhouse Prom++ as a replacement for Prometheus, WAL conversion is required to prevent data loss.
Refer to the Migration Guide for detailed conversion steps.
Precompiled binaries
- Download the latest binary from the Releases page.
- Run it as a direct replacement for Prometheus:
./prompp --config.file=prometheus.yml --storage.tsdb.path=data/
Docker
Deckhouse Prom++ is available as a Docker image on Docker Hub.
To quickly run a container:
docker run --name prompp -d -p 127.0.0.1:9090:9090 prompp/prompp
Once running, Deckhouse Prom++ will be accessible at http://localhost:9090/.
You can also add own config for Prom++ by passing config.file parameter
docker run --name prompp -v /path/on/host/prometheus.yml:/etc/prometheus.yml -d -p 127.0.0.1:9090:9090 prompp/prompp --config.file=/etc/prometheus.yml
Prometheus Operator
- Create a file
prompp.yamlwith the following configuration (other settings may be required depending on your setup):
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: example-prometheus
namespace: monitoring
spec:
image: prompp/prompp:<tag> # Replace Prometheus with Deckhouse Prom++
securityContext:
fsGroup: 64535
runAsGroup: 64535
runAsNonRoot: true
runAsUser: 64535
# Additional parameters may be required based on your installation
- Apply the updated resource:
kubectl apply -f prompp.yaml
Migrating from Prometheus
Manual WAL conversion
If migrating manually, use the prompptool utility included in the release:
Convert Prometheus WAL to Deckhouse Prom++ format
prompptool walvanilla --working-dir <path to prometheus data dir>
Convert Deckhouse Prom++ WAL back to Prometheus format
prompptool walpp --working-dir <path to prometheus data dir>
Automatic WAL conversion with Prometheus Operator
Converting Prometheus WAL to Deckhouse Prom++ format
- Create a file
prompp-migration.yamlwith the following configuration (additional parameters may be required based on your installation):
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: example-prometheus
namespace: monitoring
spec:
...
image: prompp/prompp:<tag> # Replace Prometheus with Deckhouse Prom++
securityContext:
fsGroup: 64535
runAsGroup: 64535
runAsNonRoot: true
runAsUser: 64535
initContainers:
- name: prompptool
image: prompp/prompp:<tag>
command:
- /bin/prompptool
- "--working-dir=/prometheus"
- "walvanilla"
volumeMounts:
- name: prometheus-main-db
mountPath: /prometheus
subPath: prometheus-db
resources:
requests:
cpu: "100m"
memory: "128Mi"
# Additional parameters may be required based on your installation
- Apply the updated resource:
kubectl apply -f prompp-migration.yaml
Convert Deckhouse Prom++ WAL back to Prometheus format
- Modify the
initContainerin yourprompp-migration.yamlfile:
command:
- /bin/prompptool
- "--working-dir=/prometheus"
- "--verbose"
- "walpp"
- Apply the changes again:
kubectl apply -f prompp-migration.yaml
Contributing
Refer to CONTRIBUTING.mdLicense
Apache License 2.0, see LICENSE.Online community
In addition to common GitHub features, here are some other online resources related to Deckhouse Prom++:
- Telegram chat to discuss (there's a dedicated Telegram chat in Russian as well);
- Deckhouse blog to read the latest articles about all Deckhouse products.