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.
Everyone is welcome, no invitation needed. For details, see the Community Meetings link on the GitHub organization page.
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.