Deckhouse Prom++ – high-performance fork of Prometheus, designed to significantly reduce memory consumption
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
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.
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查看完整 README ↗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.
Deckhouse Prom++ builds upon Prometheus, one of the most widely used monitoring and time-series databases. It retains full compatibility with Prometheus, including:
While staying true to Prometheus' core principles, Deckhouse Prom++ introduces major optimizations by rewriting in C++ the most resource-intensive components: in-memory block construction and Write-Ahead Log (WAL) management.
Drastically reduced memory usage Through optimized memory handling, Deckhouse Prom++ reduces memory consumption by up to 10x, while maintaining full compatibility with existing Prometheus storage formats.
Effortless migration Deckhouse Prom++ is a drop-in replacement for Prometheus, allowing users to switch seamlessly without modifying their configurations, data, or workflows.
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.
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.
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/
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
Create a file prompp.yaml with 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
If migrating manually, use the prompptool utility included in the release:
prompptool walvanilla --working-dir <path to prometheus data dir>
prompptool walpp --working-dir <path to prometheus data dir>
Create a file prompp-migration.yaml with 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
Modify the initContainer in your prompp-migration.yaml file:
command:
- /bin/prompptool
- "--working-dir=/prometheus"
- "--verbose"
- "walpp"
Apply the changes again:
kubectl apply -f prompp-migration.yaml
Refer to CONTRIBUTING.md
Apache License 2.0, see LICENSE.
In addition to common GitHub features, here are some other online resources related to Deckhouse Prom++: