{"id":29701181,"url":"https://github.com/ceems-dev/ceems","last_synced_at":"2026-02-25T21:02:35.232Z","repository":{"id":207397681,"uuid":"719047710","full_name":"ceems-dev/ceems","owner":"ceems-dev","description":"A Prometheus exporter and a REST API server to export metrics of compute units of resource managers like SLURM, Openstack, k8s, _etc_","archived":false,"fork":false,"pushed_at":"2026-02-16T15:02:31.000Z","size":12321,"stargazers_count":63,"open_issues_count":5,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-21T07:31:19.938Z","etag":null,"topics":["cloud","containers","dashboards","ebpf","emissions","energy-monitor","grafana","green-computing","hpc","json-api","kubernetes","metrics-server","metrics-visualization","monitoring","observability","openstack","performance-monitoring","prometheus","prometheus-exporter","slurm"],"latest_commit_sha":null,"homepage":"https://ceems-dev.github.io/ceems/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceems-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-15T10:40:30.000Z","updated_at":"2026-02-16T15:02:35.000Z","dependencies_parsed_at":"2024-02-14T15:25:53.535Z","dependency_job_id":"bad0ca74-47b7-490b-8e1f-23863f360e33","html_url":"https://github.com/ceems-dev/ceems","commit_stats":{"total_commits":533,"total_committers":4,"mean_commits":133.25,"dds":"0.21575984990619135","last_synced_commit":"3c3ce6dd00a6193fe8d256d6230cd6534d6755bb"},"previous_names":["mahendrapaipuri/batchjob-exporter","mahendrapaipuri/batchjob_monitoring","mahendrapaipuri/batchjob_metrics_monitor","mahendrapaipuri/batchjob_monitor","mahendrapaipuri/ceems","ceems-dev/ceems"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/ceems-dev/ceems","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceems-dev%2Fceems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceems-dev%2Fceems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceems-dev%2Fceems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceems-dev%2Fceems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceems-dev","download_url":"https://codeload.github.com/ceems-dev/ceems/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceems-dev%2Fceems/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29717840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","containers","dashboards","ebpf","emissions","energy-monitor","grafana","green-computing","hpc","json-api","kubernetes","metrics-server","metrics-visualization","monitoring","observability","openstack","performance-monitoring","prometheus","prometheus-exporter","slurm"],"created_at":"2025-07-23T11:04:28.609Z","updated_at":"2026-02-25T21:02:35.225Z","avatar_url":"https://github.com/ceems-dev.png","language":"C","readme":"# Compute Energy \u0026 Emissions Monitoring Stack (CEEMS)\n\u003c!-- markdown-link-check-disable --\u003e\n\n|         |                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| CI/CD   | [![ci](https://github.com/ceems-dev/ceems/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/ceems-dev/ceems/actions/workflows/ci.yml?query=branch%3Amain) [![CircleCI](https://dl.circleci.com/status-badge/img/circleci/UVxmfk5AT3EHZpsg3FdfaR/PKvLaAH1ahBZf8kBKHhCiA/tree/main.svg?style=svg\u0026circle-token=CCIPRJ_67vq2cGkBpm9syySEp7tTW_7d4d6f3e8d72486acf477768f4f0a1d5235ab2a0)](https://dl.circleci.com/status-badge/redirect/circleci/UVxmfk5AT3EHZpsg3FdfaR/PKvLaAH1ahBZf8kBKHhCiA/tree/main)  [![Coverage](https://img.shields.io/badge/Coverage-77.9%25-brightgreen)](https://github.com/ceems-dev/ceems/actions/workflows/ci.yml?query=branch%3Amain)                                                                                          |\n| Docs    | [![docs](https://img.shields.io/badge/docs-passing-green?style=flat\u0026link=https://ceems-dev.github.io/ceems/docs/)](https://ceems-dev.github.io/ceems/)  [![Go Doc](https://godoc.org/github.com/ceems-dev/ceems?status.svg)](http://godoc.org/github.com/ceems-dev/ceems) [![Discord](https://img.shields.io/discord/1466874652189003973?label=discord)](https://discord.gg/bedRvX5uVY)                                                                                                                                                                                                                            |\n| Package | [![Release](https://img.shields.io/github/v/release/ceems-dev/ceems.svg?include_prereleases)](https://github.com/ceems-dev/ceems/releases/latest) [![Releases downloads](https://img.shields.io/github/downloads/ceems-dev/ceems/total.svg)](https://github.com/ceems-dev/ceems/releases)                                                                                                                                                                    |\n| Meta    | [![GitHub License](https://img.shields.io/github/license/ceems-dev/ceems)](https://github.com/ceems-dev/ceems) [![Go Report Card](https://goreportcard.com/badge/github.com/ceems-dev/ceems)](https://goreportcard.com/report/github.com/ceems-dev/ceems) [![code style](https://img.shields.io/badge/code%20style-gofmt-blue.svg)](https://pkg.go.dev/cmd/gofmt) |\n\n\u003c!-- markdown-link-check-enable --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/logo.png\" width=\"200\"\u003e\n\u003c/p\u003e\n\nCompute Energy \u0026 Emissions Monitoring Stack (CEEMS) (pronounced as *kiːms*) contains\na Prometheus exporter to export metrics of compute instance units and a REST API\nserver that serves the metadata and aggregated metrics of each\ncompute unit. Optionally, it includes a TSDB load balancer that supports basic access\ncontrol on TSDB so that one user cannot access metrics of another user.\n\n\"Compute Unit\" in the current context has a wider scope. It can be a batch job in HPC,\na VM in cloud, a pod in k8s, *etc*. The main objective of the repository is to quantify\nthe energy consumed and estimate emissions by each \"compute unit\". The repository itself\ndoes not provide any frontend apps to show dashboards and it is meant to use along\nwith Grafana and Prometheus to show statistics to users.\n\nAlthough CEEMS was born out of a need to monitor energy and carbon footprint of compute\nworkloads, it supports monitoring performance metrics as well. In addition, it leverages\n[eBPF](https://ebpf.io/what-is-ebpf/) framework to monitor IO and network metrics\nin a resource manager agnostic way. It also supports eBPF based zero instrumentation\ncontinuous profiling of compute units.\n\n## 🎯 Features\n\n- Monitors energy, performance, IO and network metrics for different types of resource\nmanagers (SLURM, Openstack, k8s)\n- Supports different energy sources like RAPL, HWMON, Cray's PM Counters and BMC _via_ IPMI or Redfish\n- Supports NVIDIA (MIG, time sharing, MPS and vGPU) and AMD GPUs ([Partition](https://rocm.blogs.amd.com/software-tools-optimization/compute-memory-modes/README.html) like CPX, QPX, TPX, DPX)\n- Supports zero instrumentation eBPF based continuous profiling using\n[Grafana Pyroscope](https://grafana.com/oss/pyroscope/) as backend\n- Realtime access to metrics *via* Grafana dashboards or a simple CLI tool\n- Multi-tenancy and access control to Prometheus and Pyroscope datasources in Grafana\n- Stores aggregated metrics in a separate DB that can be retained for long time\n- CEEMS apps are [capability aware](https://tbhaxor.com/understanding-linux-capabilities/)\n\n## ⚙️ Install CEEMS\n\n\u003e [!WARNING]\n\u003e DO NOT USE pre-release versions as the API has changed quite a lot between the\npre-release and stable versions.\n\nInstallation instructions of CEEMS components can be found in\n[docs](https://ceems-dev.github.io/ceems/docs/category/installation).\n\n## 📽️ Demo\n\n\u003cp\u003e\u003ca href=\"https://ceems-demo.myaddr.tools\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/demo_screenshot.png\" alt=\"Access Demo\"\u003e\n\u003c/a\u003e\u003c/p\u003e\n\nOpenstack and SLURM have been deployed on a small cloud instance and monitored using\nCEEMS. As neither RAPL nor IPMI readings are available on cloud instances, energy\nconsumption is estimated by assuming a Thermal Design Power (TDP) value and current\nusage of the instance. Several dashboards have been created in Grafana for visualizing\nmetrics which are listed below.\n\n- [Overall usage of cluster](https://ceems-demo.myaddr.tools/d/adrenju36n2tcb/cluster-status?orgId=1\u0026from=now-24h\u0026to=now\u0026var-job=openstack\u0026var-host=$__all\u0026var-provider=rte\u0026var-country_code=FR\u0026refresh=15m)\n- [Usage of different Projects/Accounts by SLURM and Openstack](https://ceems-demo.myaddr.tools/d/cdreu45pp9erkd/user-and-project-stats?orgId=1\u0026from=now-90d\u0026to=now\u0026refresh=15m)\n- [Usage of Openstack resources by a given user and project](https://ceems-demo.myaddr.tools/d/be5x3it7gpx4wf/openstack-instance-summary?orgId=1\u0026from=now-90d\u0026to=now\u0026var-user=gazoo\u0026var-account=cornerstone\u0026refresh=15m)\n- [Usage of SLURM resources by a given user and project](https://ceems-demo.myaddr.tools/d/fdsm8aom8hqf4fewfwe3123dascdsc/slurm-job-summary?orgId=1\u0026from=now-90d\u0026to=now\u0026var-user=wilma\u0026var-account=bedrock\u0026refresh=15m)\n\n\u003e [!WARNING]\n\u003e All the dashboards provided in the demo instance are only meant to be for demonstrative\npurposes. They should not be used in production without properly protecting datasources.\n\n## Visualizing metrics with Grafana\n\nGrafana can be used for visualization of metrics and below are some of the\nscreenshots of dashboards.\n\n### Time series compute unit CPU metrics\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/cpu_ts_stats.png\" width=\"1200\"\u003e\n\u003c/p\u003e\n\n### Time series compute unit GPU metrics\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/gpu_ts_stats.png\" width=\"1200\"\u003e\n\u003c/p\u003e\n\n### List of compute units of user with aggregate metrics\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/job_list_user.png\" width=\"1200\"\u003e\n\u003c/p\u003e\n\n### Aggregate usage metrics of a user\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/agg.png\" width=\"1200\"\u003e\n\u003c/p\u003e\n\n### Aggregate usage metrics of a project\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/agg_proj.png\" width=\"1200\"\u003e\n\u003c/p\u003e\n\n### Energy usage breakdown between project members\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ceems-dev/ceems/main/website/static/img/dashboards/breakdown.png\" width=\"1200\"\u003e\n\u003c/p\u003e\n\n## Usage metrics via CLI tool\n\nCEEMS ships a CLI tool for presenting usage metrics to end users for the deployments where Grafana usage is not\npossible or prohibitive.\n\n```bash\ncacct  --starttime=\"2025-01-01\" --endtime=\"2025-03-22\"\n┌─────────┬─────────┬──────────┬────────┬────────┬──────────┬──────────────────────────────────────┬────────┬────────┬──────────┬──────────────────────────────────────┐\n│ JOB ID  │ ACCOUNT │ ELAPSED  │ CPU US │ CPU ME │ HOST ENE │             HOST EMISSIO             │ GPU US │ GPU ME │ GPU ENER │             GPU EMISSION             │\n│         │         │          │ AGE(%) │ M. USA │ RGY(KWH) │                NS(GMS)               │ AGE(%) │ M. USA │ GY(KWH)  │                S(GMS)                │\n│         │         │          │        │ GE(%)  │          │                                      │        │ GE(%)  │          │                                      │\n│         │         │          │        │        │          │ EMAPS_TOTAL │ OWID_TOTAL │ RTE_TOTAL │        │        │          │ EMAPS_TOTAL │ OWID_TOTAL │ RTE_TOTAL │\n├─────────┼─────────┼──────────┼────────┼────────┼──────────┼─────────────┼────────────┼───────────┼────────┼────────┼──────────┼─────────────┼────────────┼───────────┤\n│ 106     │ bedrock │ 00:10:05 │ 99.32  │ 3.39   │ 0.053818 │ 4.725182    │ 5.648855   │ 3.860008  │        │        │          │             │            │           │\n│ 108     │ bedrock │ 00:10:04 │ 99.60  │ 2.51   │ 0.055842 │ 5.091815    │ 5.840380   │ 4.197307  │        │        │          │             │            │           │\n│ 118     │ bedrock │ 00:10:03 │ 99.65  │ 1.17   │ 0.061474 │ 4.450334    │ 6.512757   │ 3.683035  │        │        │          │             │            │           │\n│ 131     │ bedrock │ 00:10:04 │ 99.71  │ 2.15   │ 0.055742 │ 1.835111    │ 5.562944   │ 1.245254  │        │        │          │             │            │           │\n│ 134     │ bedrock │ 00:20:12 │ 0.53   │ 0.73   │ 0.004463 │ 0.030868    │ 0.100538   │ 0.021321  │        │        │          │             │            │           │\n│ 138     │ bedrock │ 00:10:00 │ 99.61  │ 1.17   │ 0.056302 │ 2.595522    │ 5.570695   │ 1.837668  │        │        │          │             │            │           │\n│ 150     │ bedrock │ 00:20:11 │ 0.54   │ 0.74   │ 0.003862 │ 0.076767    │ 0.086878   │ 0.058934  │        │        │          │             │            │           │\n│ 154     │ bedrock │ 00:10:19 │ 99.48  │ 2.86   │ 0.055671 │ 4.906742    │ 6.610783   │ 4.127894  │        │        │          │             │            │           │\n│ 162     │ bedrock │ 00:10:22 │ 96.51  │ 3.66   │ 0.055507 │ 3.274911    │ 4.711376   │ 2.497813  │        │        │          │             │            │           │\n│ 163     │ bedrock │ 00:10:28 │ 99.71  │ 3.03   │ 0.051746 │ 3.673949    │ 4.392128   │ 2.780309  │        │        │          │             │            │           │\n│ 169     │ bedrock │ 00:10:19 │ 99.71  │ 1.17   │          │             │            │           │        │        │          │             │            │           │\n│ 181     │ bedrock │ 00:20:14 │ 0.56   │ 0.74   │ 0.001518 │ 0.115373    │ 0.085070   │ 0.081976  │ 36.31  │ 38.11  │ 0.184776 │ 14.042940   │ 10.354560  │ 9.977878  │\n│ 183     │ bedrock │ 00:10:09 │ 99.68  │ 1.17   │ 0.049606 │ 3.676648    │ 2.779826   │ 2.926728  │ 37.87  │ 37.97  │ 0.187746 │ 13.919683   │ 10.521023  │ 11.077016 │\n│ 229     │ bedrock │ 00:10:21 │ 99.57  │ 1.99   │ 0.048258 │ 1.930318    │ 2.704308   │ 1.109933  │ 38.71  │ 37.36  │ 0.197287 │ 7.891462    │ 11.055660  │ 4.537591  │\n│ 232     │ bedrock │ 00:10:24 │ 99.63  │ 1.17   │ 0.050244 │ 1.385482    │ 2.815615   │ 0.954640  │ 31.90  │ 35.88  │ 0.131236 │ 3.618456    │ 7.354267   │ 2.493479  │\n│ 269     │ bedrock │ 00:10:01 │ 99.69  │ 1.17   │ 0.048866 │ 2.738386    │ 2.123290   │ 22.18     │ 24.35  │ 0.0263 │ 1.477547 │ 1.141505    │            │           │\n│         │         │          │        │        │          │             │            │           │        │ 67     │          │             │            │           │\n│ 274     │ bedrock │ 00:10:16 │ 97.72  │ 3.49   │ 0.054060 │ 3.029430    │ 2.324568   │           │        │        │          │             │            │           │\n├─────────┼─────────┴──────────┴────────┴────────┴──────────┴─────────────┴────────────┴───────────┴────────┴────────┴──────────┴─────────────┴────────────┴───────────┤\n│ Summary │                                                                                                                                                            │\n├─────────┼─────────┬──────────┬────────┬────────┬──────────┬─────────────┬────────────┬───────────┬────────┬────────┬──────────┬─────────────┬────────────┬───────────┤\n│ 20      │ bedrock │ 03:23:27 │ 69.84  │ 1.73   │ 0.706980 │ 37.769023   │ 59.189969  │ 33.830679 │ 35.74  │ 35.32  │ 0.727410 │ 39.472541   │ 40.763058  │ 29.227470 │\n└─────────┴─────────┴──────────┴────────┴────────┴──────────┴─────────────┴────────────┴───────────┴────────┴────────┴──────────┴─────────────┴────────────┴───────────┘\n```\n\n## ⚡️ Talks and Demos\n\n- [eBPF based I/O monitoring at ISC 2025](https://docs.google.com/presentation/d/11eqA9Bxf1hyKpGAXtZBN6mrm-X6YEZSllVNZ8dEkfnE/edit?usp=sharing)\n- [Paper submitted to SC24 in Sustainable Computing Workshop](https://conferences.computer.org/sc-wpub/pdfs/SC-W2024-6oZmigAQfgJ1GhPL0yE3pS/555400b862/555400b862.pdf)\n- [CEEMS at SC 2024](https://docs.google.com/presentation/d/1XBhfiHdTbNrS6e_I9mPy_BLPFEiAkmIwgp6FvSdMbLM/edit#slide=id.g317b4bf7fbe_2_54)\n- [An Introduction to CEEMS at ISC 2024](https://drive.google.com/file/d/1kUbD3GgDKwzgIuxjrTY95YJN5aSuIejQ/view?usp=drive_link)\n- [CEEMS Architecture and Usage](https://docs.google.com/presentation/d/1xNQTCsmPUz37KDb2BLrpWExuQWxk49NpVN9VDbxSe6Y/edit#slide=id.p)\n\n## 🤝 Adopters\n\n- Currently CEEMS is running on [Jean Zay HPC](http://www.idris.fr/eng/jean-zay/jean-zay-presentation-eng.html)\nplatform that has a daily job churn rate of around 25k jobs with a scrape interval of 10s.\n- [LJAD](https://math.univ-cotedazur.fr) lab from [Université Côte d'Azur](https://univ-cotedazur.fr/)\nis using CEEMS on their SLURM cluster for monitoring the energy consumption of user jobs.\n\n## 👍 Contributing\n\nWe welcome contributions to this project, we hope to see this project grow and become\na useful tool for people who are interested in the energy and carbon footprint of their\nworkloads. A comprehensive guide can be found in\n[CONTRIBUTING.md](https://github.com/ceems-dev/ceems/blob/main/CONTRIBUTING.md).\n\nPlease feel free to open issues and/or discussions for any potential ideas of\nimprovement.\n\n## 🙏 Acknowledgements\n\n- [Grid5000](https://www.grid5000.fr/w/Grid5000:Home) platform, supported by a scientific\ninterest group hosted by [Inria](https://www.inria.fr/) and including [CNRS](https://www.cnrs.fr/en),\n[RENATER](https://www.renater.fr/en/accueil-english/) and several Universities as\nwell as other organizations, has been extensively used in the development of CEEMS.\n\n- The demo instance has been deployed on the [CROCC](https://drocc.fr/crocc/)\nwhich was kindly sponsored by [ISDM MESO](https://isdm.umontpellier.fr/mesolr)\nin Montpellier, France.\n\n## 💬 Contact\n\nYou can get in contact with the CEEMS community in the following ways:\n\n### Discord\n\nPlease join the community's [Discord](https://discord.gg/bedRvX5uVY) server for keeping\nup with the latest news about CEEMS, posting questions and, generally getting in touch\nwith other users and the developers.\n\n## ⭐️ Project assistance\n\nIf you want to say **thank you** or/and support active development of CEEMS:\n\n- Add a [GitHub Star](https://github.com/ceems-dev/ceems) to the project.\n- Write articles about project on [Dev.to](https://dev.to/), [Medium](https://medium.com/) or personal blog.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceems-dev%2Fceems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceems-dev%2Fceems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceems-dev%2Fceems/lists"}