Kepler (Kubernetes-based Efficient Power Level Exporter) is a Prometheus exporter that measures energy consumption metrics at the container, pod, and node level in Kubernetes clusters.
🌟 Star the Kepler repository to help others find it!
📖 For comprehensive installation instructions, troubleshooting, and advanced deployment options, see our Installation Guide
# 1. Install Kepler using Helm from OCI registry
helm install kepler oci://quay.io/sustainable_computing_io/charts/kepler \
--namespace kepler \
--create-namespace
# Wait for Kepler pods to be running
kubectl wait --for=condition=ready --timeout=120s pod -n kepler --all
# 2. Verify installation
kubectl get pods -n kepler
# 3. Access metrics (port-forward)
kubectl port-forward -n kepler svc/kepler 28282:28282
# Test metrics endpoint
curl http://localhost:28282/metrics | grep kepler_node_cpu_watts📋 For Production Deployments: Consider using the Kepler Operator for advanced lifecycle management and operational capabilities.
Next Steps:
To ensure Kepler is working correctly and to visualize the metrics:
- Verify Metrics Collection - Verify power consumption metrics are being collected
- Configuration Options - Customize Kepler deployment
- Helm Updates & Management - Learn how to upgrade and manage Kepler with Helm
Need Help?
- Installation Guide - Detailed prerequisites, configuration options, and installation steps
- Metrics Documentation - Available metrics and their descriptions
Choose your preferred method:
# 💻 Local Development
make build && sudo ./bin/kepler
# ✨ Docker Compose (with Prometheus & Grafana)
cd compose/dev && docker compose up -d
# 🐳 Kubernetes with Kustomize
git clone https://github.com/sustainable-computing-io/kepler.git
cd kepler && git checkout v0.12.0 # pin to a release tag, see note below
kubectl kustomize manifests/k8s | \
sed -e "s|<KEPLER_IMAGE>|quay.io/sustainable_computing_io/kepler:v0.12.0|g" | \
kubectl apply --server-side --force-conflicts -f -
⚠️ Important: Always check out a matching release tag (rather thanmain) before applying manifests frommanifests/k8s, and set<KEPLER_IMAGE>to that same version. Manifests onmaincan reference features not yet present in the last published image (for example, the/probe/livezand/probe/readyzendpoints added for liveness/readiness probes) — mixing amainmanifest with an older image can make the container fail its liveness probe and crash-loop. See the Releases page for available tags.
- Installation Guide - Detailed installation instructions for all deployment methods
- Configuration Guide - Configuration options and examples
- Metrics Documentation - Available metrics and their descriptions
- Upgrading from 0.9.x - What changed in the 0.10.0 rewrite and how to stay on the legacy version
- Architecture Documentation - Complete architectural documentation including design principles, system components, data flow, concurrency model, and deployment patterns
- Power Attribution Guide - How Kepler measures and attributes power consumption
- Developer Documentation - Contributing guidelines and development workflow
For more detailed documentation, please visit the official Kepler documentation.
Contributions are welcome! Please feel free to submit a Pull Request. For more detailed information about contributing to this project, please refer to our CONTRIBUTING.md file.
See the Kepler Roadmap for planned and in-progress work.
Kepler follows the CNCF Code of Conduct.
Our project adheres to the Linux Foundation's Generative AI Policy, which can be viewed at https://www.linuxfoundation.org/legal/generative-ai.
This project is licensed under the Apache License 2.0 - see the LICENSES for details.