{"id":13643589,"url":"https://github.com/sustainable-computing-io/kepler","last_synced_at":"2025-05-14T01:11:14.704Z","repository":{"id":37083175,"uuid":"454528656","full_name":"sustainable-computing-io/kepler","owner":"sustainable-computing-io","description":"Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe performance counters and other system stats, use ML models to estimate workload energy consumption based on these stats, and exports them as Prometheus metrics","archived":false,"fork":false,"pushed_at":"2025-05-08T13:09:02.000Z","size":30178,"stargazers_count":1300,"open_issues_count":147,"forks_count":198,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-09T22:01:43.714Z","etag":null,"topics":["cloud-native","ebpf","energy-consumption","energy-efficiency","energy-monitor","kubernetes","machine-learning","prometheus","prometheus-exporter","sustainability"],"latest_commit_sha":null,"homepage":"https://sustainable-computing.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sustainable-computing-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-01T19:48:56.000Z","updated_at":"2025-05-06T17:36:56.000Z","dependencies_parsed_at":"2023-09-21T19:43:59.953Z","dependency_job_id":"62df193d-e0bc-48cf-89a0-d5fab7ed748b","html_url":"https://github.com/sustainable-computing-io/kepler","commit_stats":{"total_commits":2080,"total_committers":66,"mean_commits":"31.515151515151516","dds":0.6408653846153847,"last_synced_commit":"a447077ffd2e40f633f2aa200b1b8d61063573c4"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustainable-computing-io%2Fkepler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustainable-computing-io%2Fkepler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustainable-computing-io%2Fkepler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustainable-computing-io%2Fkepler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sustainable-computing-io","download_url":"https://codeload.github.com/sustainable-computing-io/kepler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253398592,"owners_count":21902114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","ebpf","energy-consumption","energy-efficiency","energy-monitor","kubernetes","machine-learning","prometheus","prometheus-exporter","sustainability"],"created_at":"2024-08-02T01:01:49.670Z","updated_at":"2025-05-14T01:11:14.667Z","avatar_url":"https://github.com/sustainable-computing-io.png","language":"Go","readme":"\u003cimg align=\"right\" width=\"250px\" src=\"https://user-images.githubusercontent.com/17484350/138557170-d8079b94-a517-4366-ade8-8d473e3f3f1d.jpg\"\u003e\n\n\u003c!-- markdownlint-disable  MD013 --\u003e\n\u003c!-- Teporarily disable MD013 - Line length for the urls below  --\u003e\n![GitHub Workflow Status (event)](https://img.shields.io/github/actions/workflow/status/sustainable-computing-io/kepler/unit_test.yml?branch=main\u0026label=CI)\n\n[![codecov](https://codecov.io/gh/sustainable-computing-io/kepler/graph/badge.svg?token=K9BDX9M86E)](https://codecov.io/gh/sustainable-computing-io/kepler)\n[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7391/badge)](https://bestpractices.coreinfrastructure.org/projects/7391)[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/sustainable-computing-io/kepler/badge)](https://securityscorecards.dev/viewer/?uri=github.com/sustainable-computing-io/kepler)\n\n\u003c!-- markdownlint-enable  MD013 --\u003e\n\n\u003c!--\n[![GoDoc](https://godoc.org/github.com/kubernetes/kube-state-metrics?status.svg)](https://godoc.org/github.com/kubernetes/kube-state-metrics)\n--\u003e\n\n[![License][apache2-badge]][apache2-url] [![License][bsd2-badge]][bsd2-url]\n[![License][gpl-badge]][gpl-url]\n\n[![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/KeplerProject.svg?style=social\u0026label=Follow%20%40KeplerProject)](https://twitter.com/KeplerProject)\n\n# Kepler\n\nKepler (Kubernetes Efficient Power Level Exporter) uses eBPF to probe\nenergy-related system stats and exports them as Prometheus metrics.\n\nAs a CNCF Sandbox project, Kepler uses\n[CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md)\n\n## Architecture\n\nKepler Exporter exposes a variety of\n[metrics](https://sustainable-computing.io/design/metrics/) about the energy\nconsumption of Kubernetes components such as Pods and Nodes.\n\n```mermaid\nflowchart BT\n    classDef kernel fill:#e6f3ff,stroke:#4a90e2,color:#000\n    classDef collector fill:#f0fff0,stroke:#2ecc71,color:#000\n    classDef hardware fill:#fff0f5,stroke:#e74c3c,color:#000\n    classDef estimator fill:#fff5e6,stroke:#f39c12,color:#000\n    classDef mapping fill:#f5f0ff,stroke:#9b59b6,color:#000\n    classDef calculator fill:#f0f5ff,stroke:#3498db,color:#000\n    classDef attribution fill:#fff0f0,stroke:#e74c3c,color:#000\n    classDef export fill:#f5fff0,stroke:#27ae60,color:#000\n\n    classDef kernelLevel fill:#e6f3ff,stroke:#999,color:#000\n    classDef userSpace fill:#f5f5f5,stroke:#999,color:#000\n    classDef resourceCollection fill:#f0fff0,stroke:#999,color:#000\n    classDef hardwareMetrics fill:#fff0f5,stroke:#999,color:#000\n    classDef estimatorMetrics fill:#fff5e6,stroke:#999,color:#000\n    classDef powerModel fill:#f0f0ff,stroke:#999,color:#000\n\n    subgraph KL[Kernel Level]\n        direction BT\n        TP[Kernel Tracepoint]:::kernel --\u003e EBPF[Kepler eBPF Program]:::kernel\n        EBPF --\u003e |Performance Counter Stats|OM[Output Map]:::kernel\n    end\n\n    subgraph UP[Userspace Program]\n        direction BT\n        subgraph RC[Resource Info Collection]\n            direction BT\n            P1[Process Info Collector]:::collector --\u003e |PID, Names|INFO[Process/Container/VM Info]:::collector\n            C1[Container Info Collector]:::collector --\u003e |Container/Pod ID, Namespace|INFO\n            V1[VM Info Collector]:::collector --\u003e |VM ID|INFO\n        end\n\n        subgraph HM[Hardware Metrics]\n            direction BT\n            H1[RAPL or hwmon]:::hardware --\u003e |CPU/DRAM/Package Power|PWR[Hardware Power Readings]:::hardware\n            H2[NVIDIA/Intel GPU API]:::hardware --\u003e |GPU Power|PWR\n            H3[Redfish or ACPI Power Meter]:::hardware --\u003e |Platform Power|PWR\n        end\n\n        subgraph EM[Estimator Metrics]\n            direction BT\n            E1[ML Features: CPU Time]:::estimator --\u003e |CPU/DRAM/Package Power|PWR\n            E2[ML Features: CPU Time]:::estimator --\u003e |Platform Power|PWR\n        end\n\n        OM --\u003e |Read Map Data|MAP[Activity Mapping]:::mapping\n        INFO --\u003e MAP\n        MAP --\u003e |Map via PID/cgroup ID|CALC[Energy Calculator]:::calculator\n        PWR --\u003e CALC\n    end\n\n    subgraph PM[Power Model]\n        direction BT\n        CALC --\u003e |Process Activity Ratio|ATTR[Idle and Dynamic Energy Attribution]:::attribution\n        ATTR --\u003e |Per Process/Container/VM|EXP[Energy Metrics]:::attribution\n    end\n\n    EXP --\u003e PROM[Prometheus Export]:::export\n\n    class KL kernelLevel\n    class UP userSpace\n    class RC resourceCollection\n    class HM hardwareMetrics\n    class EM estimatorMetrics\n    class PM powerModel\n```\n\n## Install Kepler\n\nInstructions to install Kepler can be found in the\n[Kepler docs](https://sustainable-computing.io/installation/kepler/).\n\n## Visualise Kepler metrics with Grafana\n\nTo visualise the power consumption metrics made available by the Kepler\nExporter, import the pre-generated\n[Kepler Dashboard](grafana-dashboards/Kepler-Exporter.json) into Grafana:\n![Sample Grafana dashboard](doc/dashboard.png)\n\n## Contribute to Kepler\n\nInterested in contributing to Kepler? Follow the\n[Contributing Guide](CONTRIBUTING.md) to get started!\n\n## Talks \u0026 Demos\n\n- [Kepler Demo](https://www.youtube.com/watch?v=P5weULiBl60)\n- [\"Sustainability the Container Native Way\" - Open Source Summit NA 2022](doc/OSS-NA22.pdf)\n\nA full list of talks and demos about Kepler can be found\n[here](https://github.com/sustainable-computing-io/kepler-doc/tree/main/demos).\n\n## Community Meetings\n\nPlease join the biweekly community meetings. The meeting calendar and agenda can\nbe found\n[here](https://github.com/sustainable-computing-io/community/blob/main/community-event.md)\n\n## License\n\nWith the exception of eBPF code, everything is distributed under the terms of\nthe [Apache License (version 2.0)].\n\n### eBPF\n\nAll eBPF code is distributed under either:\n\n- The terms of the [GNU General Public License, Version 2] or the\n  [BSD 2 Clause license], at your option.\n- The terms of the [GNU General Public License, Version 2].\n\nThe exact license text varies by file. Please see the SPDX-License-Identifier\nheader in each file for details.\n\nFiles that originate from the authors of kepler use (GPL-2.0-only OR\nBSD-2-Clause). Files generated from the Linux kernel i.e vmlinux.h use\nGPL-2.0-only.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in this project by you, as defined in the GPL-2 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n[apache license (version 2.0)]: LICENSE-APACHE\n[apache2-badge]: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n[apache2-url]: https://opensource.org/licenses/Apache-2.0\n[bsd 2 clause license]: LICENSE-BSD-2\n[bsd2-badge]: https://img.shields.io/badge/License-BSD%202--Clause-orange.svg\n[bsd2-url]: https://opensource.org/licenses/BSD-2-Clause\n[gnu general public license, version 2]: LICENSE-GPL-2\n[gpl-badge]: https://img.shields.io/badge/License-GPL%20v2-blue.svg\n[gpl-url]: https://opensource.org/licenses/GPL-2.0\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=sustainable-computing-io/kepler\u0026type=Date)](https://star-history.com/#sustainable-computing-io/kepler\u0026Date)\n","funding_links":[],"categories":["Cloud-Computing","Green Software Awesome List","Observability \u0026 Monitoring","kubernetes","machine-learning","Go","Consumption","Measure power usage by software"],"sub_categories":["Contents","Computation and Communication","GNU/Linux"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsustainable-computing-io%2Fkepler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsustainable-computing-io%2Fkepler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsustainable-computing-io%2Fkepler/lists"}