{"id":21343530,"url":"https://github.com/cloudmercato/probes","last_synced_at":"2026-04-29T09:32:21.976Z","repository":{"id":251559636,"uuid":"837618377","full_name":"cloudmercato/Probes","owner":"cloudmercato","description":"Utility for collect monitoring data","archived":false,"fork":false,"pushed_at":"2024-08-31T17:35:39.000Z","size":18,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T05:38:48.539Z","etag":null,"topics":["cpu","gpu","macos","monitoring","nvidia","ram"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudmercato.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-03T14:01:22.000Z","updated_at":"2024-08-31T17:35:42.000Z","dependencies_parsed_at":"2025-06-06T05:38:50.266Z","dependency_job_id":"548480b6-d4c3-46e9-9b81-f6fdb29d592e","html_url":"https://github.com/cloudmercato/Probes","commit_stats":null,"previous_names":["cloudmercato/probes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cloudmercato/Probes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmercato%2FProbes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmercato%2FProbes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmercato%2FProbes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmercato%2FProbes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudmercato","download_url":"https://codeload.github.com/cloudmercato/Probes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmercato%2FProbes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32419895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cpu","gpu","macos","monitoring","nvidia","ram"],"created_at":"2024-11-22T01:13:38.149Z","updated_at":"2026-04-29T09:32:21.960Z","avatar_url":"https://github.com/cloudmercato.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Probes\n~~~~~~\n\nprobes is handy tool to monitor systems during workloads. It aims to collect metrics about:\n\n- CPU\n- RAM\n- Network\n- NVIDIA GPU\n- VPU\n- Apple Silicon\n- IPMI\n\nGet started\n===========\n\nInstall\n-------\n\nSimple as::\n\n  pip install https://github.com/cloudmercato/probes/archive/refs/heads/main.zip\n\nBasic usage\n-----------\n\nprobes can be used though its Python API for code measurement or with command line.\nBoth method will return a ``dict`` or JSON in the following format::\n\n  {\n    \"\u003cprober_id\u003e\": {\n      \"\u003ctimestamp\": {\n        \"\u003cvalue1\u003e\": 42,\n        \"\u003cvalue2\u003e\": [4, 2]\n      }\n    }\n  }\n\n\n  \nTake a look at the probers documentation to get samples of collected data.\n\nPython API\n@@@@@@@@@@\n\nYou can use the ``ProbeManager`` manually::\n\n  from probes import ProbeManager\n\n  manager.start()\n  mystuff()\n  manager.stop()\n  manager.get_results()\n\nOr as a context manager::\n\n  with manager.run():\n    mystuff()\n  manager.get_results()\n\nCommand line\n@@@@@@@@@@@@\n\nNothing easiest than::\n\n  $ probes sleep 1\n  {\n    \"cpu\": {\n      \"1722896625.775925\": {\n        \"cpu_percent\": 0.0,\n        \"cpu_percent_per_cpu\": [\n          0.0,\n  ...\n  }\n\nThe output is a JSON with the same format the Python one.\n\nAll the basic monitoring options are available::\n\n  $ probes --help\n  usage: probes [-h] [-i INTERVAL] [-p PROBERS] [-d DELAY] [-D DECAY] [-q] [-o OUTPUT] [-] [-I] [-t TIMEOUT] [-v {0,1,2}] [-V] ...\n\n  positional arguments:\n    command\n\n  optional arguments:\n    -h, --help            show this help message and exit\n    -i INTERVAL, --interval INTERVAL\n    -p PROBERS, --probers PROBERS\n    -d DELAY, --delay DELAY\n    -D DECAY, --decay DECAY\n    -q, --quiet\n    -o OUTPUT, --output OUTPUT\n    -, --stdin\n    -I, --do-not-ignore-error\n    -t TIMEOUT, --timeout TIMEOUT\n    -v {0,1,2}, --verbosity {0,1,2}\n    -V, --version\n\n\nConfiguration\n=============\n\nProbers\n-------\n\nProbers are Python classes allowing to collect a particular set of data. We already provides the following:\n\nprobes.prober.system.CpuProber\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\nMetrics about CPU usage, global and per CPU, frequency and load average. This prober is powered by psutil.\n\nSample::\n\n  {\n    \"cpu\": {\n      \"1722897347.6944609\": {\n        \"cpu_percent\": 0.0,\n        \"cpu_percent_per_cpu\": [\n          0.0\n        ],\n        \"cpu_times\": {\n          \"user\": 1543773.15,\n          \"nice\": 0.0,\n          \"system\": 683447.71,\n          \"idle\": 12162731.0\n        },\n        \"cpu_times_per_cpu\": [\n          {\n            \"user\": 346659.43,\n            \"nice\": 0.0,\n            \"system\": 200543.88,\n            \"idle\": 1216883.2\n          }\n        ],\n        \"cpu_times_percent\": {\n          \"user\": 0.0,\n          \"nice\": 0.0,\n          \"system\": 0.0,\n          \"idle\": 1.0\n        },\n        \"cpu_times_percent_per_cpu\": [\n          {\n            \"user\": 0.0,\n            \"nice\": 0.0,\n            \"system\": 0.0,\n            \"idle\": 0.0\n          }\n        ],\n        \"cpu_stats\": {\n          \"ctx_switches\": 3613,\n          \"interrupts\": 147674,\n          \"soft_interrupts\": 3913649281,\n          \"syscalls\": 274251\n        },\n        \"cpu_freq\": {\n          \"current\": 2400,\n          \"min\": 2400,\n          \"max\": 2400\n        },\n        \"load_avg\": [\n          1.849609375,\n          1.9775390625,\n          1.962890625\n        ],\n        \"cpu_freq_per_cpu\": [\n          [\n            2400,\n          ]\n        ]\n      }\n    }\n  }\n\nprobes.prober.system.MemoryProber\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\nMetrics about RAM and swap usage. It uses psutil under the hood.\n\nSample::\n\n  {\n    \"memory\": {\n      \"1722897258.003343\": {\n        \"virtual_memory\": {\n          \"total\": 17179869184,\n          \"available\": 1101221888,\n          \"percent\": 93.6,\n          \"used\": 1745637376,\n          \"free\": 25284608,\n          \"active\": 1140215808,\n          \"inactive\": 1074270208,\n          \"wired\": 605421568\n        },\n        \"swap_memory\": {\n          \"total\": 8589934592,\n          \"used\": 7384530944,\n          \"free\": 1205403648,\n          \"percent\": 86.0,\n          \"sin\": 279234916352,\n          \"sout\": 17371725824\n        }\n      }\n    }\n  }\n\n\nprobes.prober.system.NetworkProber\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\nMetrics about network usage. It uses psutil under the hood.\n\nSample::\n\n  {\n    \"network\": {\n      \"1724063994.340725\": {\n        \"bytes_sent\": 5046946816,\n        \"bytes_recv\": 6862913536,\n        \"packets_sent\": 145665481,\n        \"packets_recv\": 349973714,\n        \"errin\": 0,\n        \"errout\": 0,\n        \"dropin\": 400863614200,\n        \"dropout\": 0\n      },\n      \"1724063996.3488991\": {\n        \"bytes_sent\": 5046956032,\n        \"bytes_recv\": 6862915584,\n        \"packets_sent\": 145665496,\n        \"packets_recv\": 349973730,\n        \"errin\": 0,\n        \"errout\": 0,\n        \"dropin\": 400863614200,\n        \"dropout\": 0,\n        \"bytes_sent_diff\": 9216,\n        \"bytes_sent_speed\": 4608.0,\n        \"bytes_recv_diff\": 2048,\n        \"bytes_recv_speed\": 1024.0,\n        \"packets_sent_diff\": 15,\n        \"packets_sent_speed\": 7.5,\n        \"packets_recv_diff\": 16,\n        \"packets_recv_speed\": 8.0,\n        \"errin_diff\": 0,\n        \"errin_speed\": 0.0,\n        \"errout_diff\": 0,\n        \"errout_speed\": 0.0,\n        \"dropin_diff\": 0,\n        \"dropin_speed\": 0.0,\n        \"dropout_diff\": 0,\n        \"dropout_speed\": 0.0\n      },\n      ...\n    }\n  }\n\nprobes.prober.nvidia.NvidiaGpuProber\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\nFor NVIDIA GPU, it providers metrics about power usage, VRAM, temperature and more. This prober requires `pynvml \u003chttps://pypi.org/project/pynvml/\u003e`_.\n\nSample::\n\n  WIP\n\n\nprobes.prober.macos.MacosProber\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\nFor Apple macos system, it uses the command line tool `powermetrics \u003chttps://firefox-source-docs.mozilla.org/performance/powermetrics.html\u003e`_ to provides CPU power, thermal, GPU power and ANE power data.\n\nSample::\n\n  {\n    \"macos\": {\n      \"1722897929.421819\": {\n        \"is_delta\": true,\n        \"elapsed_ns\": 5005696583,\n        \"hw_model\": \"MacBookPro18,3\",\n        \"kern_osversion\": \"23F79\",\n        \"kern_bootargs\": \"\",\n        \"kern_boottime\": 1719733635,\n        \"timestamp\": \"2024-08-05T22:45:29\",\n        \"processor\": {\n          \"clusters\": [\n            {\n              \"name\": \"E-Cluster\",\n              \"hw_resid_counters\": true,\n              \"freq_hz\": 1224990000.0,\n              \"idle_ns\": 2735840291,\n              \"idle_ratio\": 0.546236,\n              \"dvfm_states\": [\n                {\n                  \"freq\": 600,\n                  \"used_ns\": 0,\n                  \"used_ratio\": 0.0\n                }\n              ],\n              \"online_ratio\": 1.0,\n              \"cpus\": [\n                {\n                  \"cpu\": 0,\n                  \"freq_hz\": 1297740000.0,\n                  \"idle_ns\": 3357356833,\n                  \"idle_ratio\": 0.670184,\n                  \"dvfm_states\": [\n                    {\n                      \"freq\": 600,\n                      \"used_ns\": 0,\n                      \"used_ratio\": 0.0\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"name\": \"P0-Cluster\",\n              \"hw_resid_counters\": true,\n              \"freq_hz\": 1293200000.0,\n              \"idle_ns\": 3730712166,\n              \"idle_ratio\": 0.744864,\n              \"dvfm_states\": [\n                {\n                  \"freq\": 600,\n                  \"used_ns\": 2271138000,\n                  \"used_ratio\": 0.453449\n                }\n              ],\n              \"online_ratio\": 1.0,\n              \"cpus\": [\n                {\n                  \"cpu\": 1,\n                  \"freq_hz\": 1998340000.0,\n                  \"idle_ns\": 4056568333,\n                  \"idle_ratio\": 0.809749,\n                  \"dvfm_states\": [\n                    {\n                      \"freq\": 600,\n                      \"used_ns\": 7131166,\n                      \"used_ratio\": 0.00142348\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"name\": \"P1-Cluster\",\n              \"hw_resid_counters\": true,\n              \"freq_hz\": 973859000.0,\n              \"idle_ns\": 4702986666,\n              \"idle_ratio\": 0.938975,\n              \"dvfm_states\": [\n                {\n                  \"freq\": 600,\n                  \"used_ns\": 3619404416,\n                  \"used_ratio\": 0.722632\n                }\n              ],\n              \"online_ratio\": 1.0,\n              \"cpus\": [\n                {\n                  \"cpu\": 7,\n                  \"freq_hz\": 1979210000.0,\n                  \"idle_ns\": 4764940000,\n                  \"idle_ratio\": 0.951136,\n                  \"dvfm_states\": [\n                    {\n                      \"freq\": 600,\n                      \"used_ns\": 5151166,\n                      \"used_ratio\": 0.00102823\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"cpu_energy\": 3212,\n          \"cpu_power\": 641.669,\n          \"gpu_energy\": 255,\n          \"gpu_power\": 50.942,\n          \"ane_energy\": 0,\n          \"ane_power\": 0.0,\n          \"combined_power\": 692.611\n        }\n      }\n    }\n  }\n\nExternal links\n--------------\n\nProbes is used by different other projects:\n\n- `ollama-benchmark \u003chttps://github.com/cloudmercato/ollama-benchmark\u003e`_\n- `os-benchmark \u003chttps://github.com/cloudmercato/os-benchmark\u003e`_\n- `yolo-benchmark \u003chttps://github.com/cloudmercato/yolo-benchmark\u003e`_\n- `whisper-benchmark \u003chttps://github.com/cloudmercato/whisper-benchmark\u003e`_\n\nContribute\n----------\n\nThis project is created with ❤️ for free by `Cloud Mercato`_ under BSD License. Feel free to contribute by submitting a pull request or an issue.\n\n.. _`Cloud Mercato`: https://www.cloud-mercato.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudmercato%2Fprobes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudmercato%2Fprobes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudmercato%2Fprobes/lists"}