Kepler
Uses eBPF to probe energy related system stats and exports as Prometheus metrics.
https://github.com/sustainable-computing-io/kepler
Category: Consumption
Sub Category: Computation and Communication
Keywords
cloud-native energy-consumption energy-efficiency energy-monitor kubernetes prometheus prometheus-exporter sustainability
Keywords from Contributors
ebpf operator alerting model-server online-machine-learning stream-processing tensorflow-io tensorflow2
Last synced: about 6 hours ago
JSON representation
Repository metadata
Kepler (Kubernetes-based Efficient Power Level Exporter) is a Prometheus exporter that measures energy consumption metrics at the container, pod, and node levels in Kubernetes clusters.
- Host: GitHub
- URL: https://github.com/sustainable-computing-io/kepler
- Owner: sustainable-computing-io
- Created: 2022-02-01T19:48:56.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-08-25T09:34:30.000Z (6 days ago)
- Last Synced: 2026-08-25T19:40:39.280Z (5 days ago)
- Topics: cloud-native, energy-consumption, energy-efficiency, energy-monitor, kubernetes, prometheus, prometheus-exporter, sustainability
- Language: Go
- Homepage: https://sustainable-computing.io
- Size: 29.6 MB
- Stars: 1,560
- Watchers: 20
- Forks: 249
- Open Issues: 50
- Releases: 55
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSES/Apache-2.0.txt
- Code of conduct: code-of-conduct.md
- Security: SECURITY.md
- Governance: GOVERNANCE.md
- Maintainers: MAINTAINERS.md
- Agents: AGENTS.md
- Claude: CLAUDE.md
- Dco: DCO
README.md
Kepler
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.
π Major Rewrite: Kepler (0.10.0 and above)
Important Notice: Starting with version 0.10.0, Kepler has undergone a complete ground-up rewrite.
This represents a significant architectural improvement while maintaining the core mission of
accurate energy consumption monitoring for cloud-native workloads.
π’ Read the full announcement: CNCF Slack Announcement
β¨ What's New in the Rewrite
Enhanced Performance & Accuracy:
- Dynamic detection of Nodes' RAPL zones - no more hardcoded RAPL zones
- More accurate power attribution based on active CPU usage (no more idle/dynamic for workloads)
- Improved VM, Container, and Pod detection with more meaningful label values
- Significantly reduced resource usage compared to old Kepler
Reduced Security Requirements:
- Requires only readonly access to host
/procand/sys - No more
CAP_SYSADMINorCAP_BPFcapabilities required - Much fewer privileges than previous versions
Modern Architecture:
- Service-oriented design with clean separation of concerns
- Thread-safe operations throughout the codebase
- Graceful shutdown handling with proper resource cleanup
- Comprehensive error handling with structured logging
Current Limitations:
- Supports RAPL/powercap framework, with experimental support for HWMon, GPU (NVIDIA), and platform power (Redfish BMC)
π Migration & Legacy Support
For New Users: Use the current version (0.10.0+) for the best experience and latest features.
For Existing Users: If you need to continue using the old version:
- Pin your deployment to version
0.9.0(final legacy release) - Access the old codebase in the archived branch
- Important: The legacy version (0.9.x and earlier) is now frozen - no bug fixes or feature requests will be accepted for the old version
Migration Note: Please review the new configuration format and deployment methods below when upgrading to 0.10.0+.
π Getting Started
π For comprehensive installation instructions, troubleshooting, and advanced deployment options, see our Installation Guide
β‘ Quick Start (Kubernetes with Helm)
# 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
π§ Other Installation Methods
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.11.4 # pin to a release tag, see note below
kubectl kustomize manifests/k8s | \
sed -e "s|<KEPLER_IMAGE>|quay.io/sustainable_computing_io/kepler:v0.11.4|g" | \
kubectl apply --server-side --force-conflicts -f -
β οΈ Important: Always check out a matching release tag (rather than
main) 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.
π Documentation
User Documentation
- Installation Guide - Detailed installation instructions for all deployment methods
- Configuration Guide - Configuration options and examples
- Metrics Documentation - Available metrics and their descriptions
Developer Documentation
- 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.
π€ Contributing
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.
Gen AI policy
Our project adheres to the Linux Foundation's Generative AI Policy, which can be viewed at https://www.linuxfoundation.org/legal/generative-ai.
β Star History
π License
This project is licensed under the Apache License 2.0 - see the LICENSES for details.
Owner metadata
- Name: Sustainable Computing
- Login: sustainable-computing-io
- Email: info@sustainable-computing.io
- Kind: organization
- Description:
- Website: www.sustainable-computing.io
- Location: United States of America
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/91567619?v=4
- Repositories: 11
- Last ynced at: 2023-03-04T04:30:22.299Z
- Profile URL: https://github.com/sustainable-computing-io
GitHub Events
Total
- Release event: 15
- Delete event: 71
- Pull request event: 704
- Fork event: 33
- Issues event: 207
- Watch event: 251
- Issue comment event: 795
- Push event: 395
- Pull request review comment event: 599
- Pull request review event: 885
- Create event: 96
Last Year
- Release event: 1
- Delete event: 24
- Pull request event: 153
- Fork event: 7
- Issues event: 90
- Watch event: 41
- Issue comment event: 283
- Push event: 126
- Pull request review comment event: 167
- Pull request review event: 202
- Create event: 25
Committers metadata
Last synced: 4 days ago
Total Commits: 410
Total Committers: 29
Avg Commits per committer: 14.138
Development Distribution Score (DDS): 0.629
Commits in past year: 174
Committers in past year: 27
Avg Commits per committer in past year: 6.444
Development Distribution Score (DDS) in past year: 0.747
| Name | Commits | |
|---|---|---|
| vprashar2929 | v****9@g****m | 152 |
| Sunil Thaha | s****a@r****m | 97 |
| Vimal Kumar | v****8@g****m | 40 |
| dependabot[bot] | 4****] | 35 |
| Kaiyi Liu | k****u@r****m | 14 |
| Sunyanan Choochotkaew | s****1@i****m | 11 |
| nikimanoledaki | n****i@g****m | 9 |
| Billard | 8****r | 8 |
| SamYuan1990 | y****9@1****m | 5 |
| Pat Riehecky | r****y@f****v | 4 |
| VinΓcius Zavam | z****m@o****m | 4 |
| Hanan Awwad | e****d@g****m | 3 |
| Ray Huang | b****g@c****w | 3 |
| Laura Llinares | l****a@c****h | 2 |
| JulianLegler | j****r@t****e | 2 |
| Krishna Parihar | k****8@g****m | 2 |
| Witek Bedyk | w****k@s****m | 2 |
| laurall974 | 1****4 | 2 |
| leonorfmartins | l****s@g****m | 2 |
| shellyco-code | s****7@g****m | 2 |
| yellowhat | 1****t | 2 |
| younsl | c****l@k****m | 2 |
| Andrea Lamparelli | a****5@g****m | 1 |
| Christopher Cantalupo | c****o@g****m | 1 |
| LarytheLord | l****m@g****m | 1 |
| Nachiket Roy | n****2@g****m | 1 |
| SMC242 | 5****2 | 1 |
| Sean McGinnis | s****s@g****m | 1 |
| brunnert | b****t@h****u | 1 |
Committer domains:
- redhat.com: 2
- hm.edu: 1
- kakao.com: 1
- suse.com: 1
- tu-berlin.de: 1
- cern.ch: 1
- cs.nycu.edu.tw: 1
- osb-alliance.com: 1
- fnal.gov: 1
- 126.com: 1
- grafana.com: 1
- ibm.com: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 617
Total pull requests: 2,375
Average time to close issues: 2 months
Average time to close pull requests: 9 days
Total issue authors: 138
Total pull request authors: 89
Average comments per issue: 3.88
Average comments per pull request: 1.67
Merged pull request: 1,773
Bot issues: 1
Bot pull requests: 348
Past year issues: 31
Past year pull requests: 115
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 13 days
Past year issue authors: 18
Past year pull request authors: 31
Past year average comments per issue: 2.39
Past year average comments per pull request: 3.39
Past year merged pull request: 46
Past year bot issues: 0
Past year bot pull requests: 31
Top Issue Authors
- rootfs (88)
- jichenjc (56)
- SamYuan1990 (48)
- sunya-ch (45)
- vprashar2929 (42)
- sthaha (36)
- dave-tucker (26)
- marceloamaral (14)
- nikimanoledaki (12)
- vimalk78 (10)
- jharriga (10)
- jiere (10)
- KaiyiLiu1234 (9)
- husky-parul (8)
- williamcaban (7)
Top Pull Request Authors
- vprashar2929 (362)
- dependabot[bot] (335)
- rootfs (289)
- sthaha (286)
- SamYuan1990 (190)
- vimalk78 (145)
- jichenjc (115)
- sunya-ch (102)
- marceloamaral (100)
- dave-tucker (93)
- maryamtahhan (82)
- KaiyiLiu1234 (50)
- husky-parul (17)
- github-actions[bot] (11)
- jiere (10)
Top Issue Labels
- kind/bug (178)
- wontfix (123)
- kind/feature (116)
- kind/documentation (22)
- enhancement (18)
- help wanted (12)
- to be closed (8)
- discussion (7)
- bug (7)
- good first issue (7)
- tech-debt (5)
- high-priority (5)
- urgent-priority (5)
- kind/nomination (5)
- non-k8s environment (4)
- pinned (4)
- low-priority (3)
- documentation (3)
- github_actions (2)
- stale (2)
- metal-ci (2)
- chore (1)
- model-server (1)
- medium (1)
- gh-action (1)
- model-db (1)
- dependencies (1)
Top Pull Request Labels
- dependencies (343)
- go (177)
- chore (168)
- github_actions (141)
- ci (65)
- feat (60)
- docs (52)
- fix (49)
- wontfix (27)
- refactor (18)
- test (17)
- github-actions (9)
- enhancement (9)
- requires-manual-test (9)
- bug (8)
- stale (6)
- do-not-merge (5)
- kind/feature (4)
- high-priority (2)
- release:chore (1)
- kind/nomination (1)
- proposal (1)
- breaking-change (1)
- urgent-priority (1)
- documentation (1)
Package metadata
- Total packages: 5
- Total downloads: unknown
- Total docker downloads: 361
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 1 (may contain duplicates)
- Total versions: 261
proxy.golang.org: github.com/sustainable-computing-io/kepler
- Homepage: https://github.com/sustainable-computing-io/kepler
- Documentation: https://pkg.go.dev/github.com/sustainable-computing-io/kepler#section-documentation
- Licenses:
- Latest release: v0.9.0 (published about 1 year ago)
- Last Synced: 2026-08-29T21:39:39.567Z (1 day ago)
- Versions: 69
- Dependent Packages: 0
- Dependent Repositories: 1
- Docker Downloads: 361
-
Rankings:
- Docker downloads count: 1.984%
- Stargazers count: 3.177%
- Forks count: 3.353%
- Average: 4.352%
- Dependent repos count: 4.79%
- Dependent packages count: 8.456%
proxy.golang.org: github.com/Sustainable-computing-Io/kepler
- Homepage:
- Documentation: https://pkg.go.dev/github.com/Sustainable-computing-Io/kepler#section-documentation
- Licenses:
- Latest release: v0.11.4 (published 29 days ago)
- Last Synced: 2026-08-29T21:38:19.362Z (1 day ago)
- Versions: 51
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 4.524%
- Average: 4.677%
- Dependent repos count: 4.829%
proxy.golang.org: github.com/Sustainable-Computing-Io/kepler
- Homepage:
- Documentation: https://pkg.go.dev/github.com/Sustainable-Computing-Io/kepler#section-documentation
- Licenses:
- Latest release: v0.11.4 (published 30 days ago)
- Last Synced: 2026-08-29T21:36:30.992Z (1 day ago)
- Versions: 51
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 4.524%
- Average: 4.677%
- Dependent repos count: 4.829%
proxy.golang.org: github.com/Sustainable-computing-io/kepler
- Homepage:
- Documentation: https://pkg.go.dev/github.com/Sustainable-computing-io/kepler#section-documentation
- Licenses:
- Latest release: v0.11.4 (published about 1 month ago)
- Last Synced: 2026-08-29T15:24:17.920Z (1 day ago)
- Versions: 51
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 4.55%
- Average: 4.703%
- Dependent repos count: 4.856%
artifacthub.io: kepler/kepler
A Helm chart for kepler (Kubernetes-based Efficient Power Level Exporter)
- Homepage: https://sustainable-computing.io/html/index.html
- Documentation: https://artifacthub.io/packages/helm/kepler/kepler
- Licenses: Apache-2.0
- Latest release: 0.6.2 (published 13 days ago)
- Last Synced: 2026-08-29T21:35:14.201Z (1 day ago)
- Versions: 39
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 0 Total
-
Rankings:
- Downloads: 0.0%
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
Dependencies
- github.com/NVIDIA/go-nvml v0.11.6-0
- github.com/iovisor/gobpf v0.2.0
- github.com/jszwec/csvutil v1.6.0
- github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369
- github.com/onsi/ginkgo v1.16.5
- github.com/onsi/gomega v1.19.0
- github.com/prometheus/client_golang v1.12.1
- github.com/prometheus/client_model v0.2.0
- github.com/prometheus/common v0.34.0
- github.com/stretchr/testify v1.7.1
- golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6
- k8s.io/api v0.24.0
- 576 dependencies
- actions/checkout 93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 composite
- actions/upload-artifact 3cea5372237819ed00197afe530f5a7ea3e805c8 composite
- github/codeql-action/upload-sarif 17573ee1cc1b9d061760f3a006fc4aac4f944fd5 composite
- ossf/scorecard-action e38b1902ae4f44df626f11ba0734b14fb91f8f86 composite
- actions/checkout v4 composite
- actions/setup-go main composite
- docker/login-action v2 composite
- actions/checkout v7 composite
- actions/download-artifact v8 composite
- actions/setup-go v7.0.0 composite
- actions/upload-artifact v7 composite
- actions/stale v11 composite
- actions/checkout v7 composite
- actions/download-artifact v8 composite
- actions/setup-go v7.0.0 composite
- actions/upload-artifact v7 composite
- codecov/codecov-action v7.0.0 composite
- golang 1.24 build
- registry.access.redhat.com/ubi9 latest build
- ./.github/publish-image * composite
- actions/checkout v7 composite
- actions/setup-go v7.0.0 composite
- actions/checkout v7 composite
- actions/download-artifact v8 composite
- actions/setup-go v7.0.0 composite
- actions/upload-artifact v7 composite
- azure/setup-helm v5 composite
- docker/login-action v4 composite
- softprops/action-gh-release v3 composite
- actions/checkout v4 composite
- ./.github/check-x-crypto * composite
- actions/checkout v7 composite
- actions/setup-go v7.0.0 composite
- actions/download-artifact v8 composite
- thollander/actions-comment-pull-request v3 composite
- quay.io/prometheus/prometheus v3.2.1 build
- github.com/beorn7/perks v1.0.1
- github.com/blang/semver/v4 v4.0.0
- github.com/cespare/xxhash/v2 v2.3.0
- github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
- github.com/emicklei/go-restful/v3 v3.11.0
- github.com/evanphx/json-patch/v5 v5.9.0
- github.com/fxamacker/cbor/v2 v2.7.0
- github.com/go-logr/logr v1.4.2
- github.com/go-openapi/jsonpointer v0.21.0
- github.com/go-openapi/jsonreference v0.20.2
- github.com/go-openapi/swag v0.23.0
- github.com/gogo/protobuf v1.3.2
- github.com/golang/protobuf v1.5.4
- github.com/google/gnostic-models v0.6.8
- github.com/google/go-cmp v0.6.0
- github.com/google/gofuzz v1.2.0
- github.com/google/uuid v1.6.0
- github.com/gorilla/websocket v1.5.0
- github.com/inconshreveable/mousetrap v1.1.0
- github.com/josharian/intern v1.0.0
- github.com/json-iterator/go v1.1.12
- github.com/klauspost/compress v1.17.9
- github.com/mailru/easyjson v0.7.7
- github.com/moby/spdystream v0.5.1
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
- github.com/modern-go/reflect2 v1.0.2
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
- github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
- github.com/pkg/errors v0.9.1
- github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
- github.com/prometheus/client_golang v1.20.4
- github.com/prometheus/client_model v0.6.1
- github.com/prometheus/common v0.62.0
- github.com/prometheus/procfs v0.15.1
- github.com/spf13/cobra v1.8.1
- github.com/spf13/pflag v1.0.5
- github.com/stretchr/testify v1.10.0
- github.com/x448/float16 v0.8.4
- go.opentelemetry.io/otel v1.28.0
- go.opentelemetry.io/otel/trace v1.28.0
- golang.org/x/net v0.50.0
- golang.org/x/oauth2 v0.27.0
- golang.org/x/sys v0.41.0
- golang.org/x/term v0.40.0
- golang.org/x/text v0.34.0
- golang.org/x/time v0.7.0
- google.golang.org/protobuf v1.36.5
- gopkg.in/evanphx/json-patch.v4 v4.12.0
- gopkg.in/inf.v0 v0.9.1
- gopkg.in/yaml.v3 v3.0.1
- k8s.io/api v0.32.1
- k8s.io/apimachinery v0.32.1
- k8s.io/client-go v0.32.1
- k8s.io/component-base v0.32.1
- k8s.io/klog/v2 v2.130.1
- k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f
- k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
- sigs.k8s.io/controller-runtime v0.20.0
- sigs.k8s.io/e2e-framework v0.6.0
- sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3
- sigs.k8s.io/structured-merge-diff/v4 v4.4.2
- sigs.k8s.io/yaml v1.4.0
- 130 dependencies
- actions/checkout v7 composite
- mauroalderete/action-assign-labels v1 composite
- actions/checkout v4 composite
- actions/setup-go v5.4.0 composite
- azure/setup-helm v4 composite
- quay.io/ceph/grafana 10.4.2 build
- actions/checkout v7 composite
- actions/upload-artifact v7 composite
- dorny/paths-filter v4 composite
- actions/checkout v7 composite
- actions/setup-go v7.0.0 composite
- dorny/paths-filter v4 composite
- actions/checkout v7 composite
- actions/setup-go v7.0.0 composite
- dorny/paths-filter v4 composite
- ./.github/compose * composite
- ./.github/k8s * composite
- ./.github/publish-image * composite
- actions/checkout v7 composite
- actions/setup-go v7.0.0 composite
- actions/setup-python v7 composite
- dorny/paths-filter v4 composite
- golangci/golangci-lint-action v9 composite
Score: 16.653918621366348