Anonymous System Resource Monitor
This is a host-level Ubuntu monitor for group servers. It samples aggregate CPU, memory, load, GPU power/utilization/memory/temperature, and best-effort CPU package power. It does not record PID, username, command line, Docker container, image, or compose service information.
Install from PyPI
Recommended with pipx:
sudo apt update
sudo apt install -y pipx
pipx ensurepath
pipx install system-resource-monitor
sudo "$(command -v system-resource-monitor)" install-systemd
Upgrade an existing install:
pipx upgrade system-resource-monitor
Then check the timer:
systemctl list-timers system-resource-monitor.timer
sudo "$(command -v system-resource-monitor)" status
Safety Contract
The collect, watch, and report commands are read-only with respect to
running workloads:
-
They do not call
docker,kill,pkill,os.kill, signal APIs,terminate(), orkill(). -
They do not enumerate
/proc/<pid>and do not inspect per-process metadata. -
The only external command used by
collectandwatchis:nvidia-smi --query-gpu=index,uuid,name,power.draw,utilization.gpu,utilization.memory,memory.used,memory.total,temperature.gpu --format=csv,noheader,nounits
-
The
install-systemd,uninstall-systemd, andstatuscommands may callsystemctl, but only to managesystem-resource-monitor.serviceandsystem-resource-monitor.timer. -
The systemd unit also drops
CAP_KILLand denies common signal-sending syscalls, so even accidental future signal-sending code should fail under the timer service.
Install from Source
cd system-resource-monitor
sudo mkdir -p /opt/system-resource-monitor /var/lib/system-resource-monitor
sudo install -m 0755 system_resource_monitor.py /opt/system-resource-monitor/system_resource_monitor.py
sudo install -m 0644 README.md /opt/system-resource-monitor/README.md
sudo install -m 0644 system-resource-monitor.service /etc/systemd/system/system-resource-monitor.service
sudo install -m 0644 system-resource-monitor.timer /etc/systemd/system/system-resource-monitor.timer
sudo chmod 0750 /var/lib/system-resource-monitor
sudo systemctl daemon-reload
sudo systemctl enable --now system-resource-monitor.timer
If installed as a Python package, prefer:
sudo "$(command -v system-resource-monitor)" install-systemd
Check Status
systemctl list-timers system-resource-monitor.timer
sudo systemctl status system-resource-monitor.service
journalctl -u system-resource-monitor.service -n 50
Collect Once
sudo "$(command -v system-resource-monitor)" collect
Watch Live Metrics
Refresh the terminal every 5 seconds and automatically save samples from this
watch session to /tmp/system_resource_watch_<timestamp>.csv:
sudo "$(command -v system-resource-monitor)" watch
Use a custom interval and CSV path:
sudo "$(command -v system-resource-monitor)" watch \
--interval-sec 2 \
--csv /tmp/locus_gpu_watch.csv
Stop with Ctrl-C. The CSV contains one host row per sample and one gpu
row per GPU per sample. It does not contain PID, username, command line, Docker
container, image, or compose service information.
Export Reports
Recent 24 hours:
sudo "$(command -v system-resource-monitor)" report \
--since-hours 24 \
--out /tmp/system_resource_report_24h.csv
Recent 7 days:
sudo "$(command -v system-resource-monitor)" report \
--since-hours 168 \
--out /tmp/system_resource_report_7d.csv
Notes
- GPU metrics use
nvidia-smi --query-gpu, so NVIDIA drivers must be installed for GPU rows to appear. - CPU package power is read from
/sys/class/powercap/intel-rapl:*when the kernel exposes it. If unavailable, it is stored as empty/NULL. - Energy estimates use
power_w * interval_sec; first samples and samples after long gaps are not counted toward kWh estimates. - Data older than 90 days is deleted during each collection.
Metadata
Release files for system-resource-monitor 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| system_resource_monitor-0.2.0.tar.gz | 11.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| system_resource_monitor-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.2 kB
Release files / system_resource_monitor-0.2.0.tar.gz
| Download URL | system_resource_monitor-0.2.0.tar.gz |
|---|---|
| Size | 11.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
da17ec3b2f6d99611812e04088ee502d245eddc80b01484b7aab71cb838ba8ff
|
|
BLAKE2b-256 checksum How to use checksums |
ff84291e217f54268e9e553c8fe65c543690910031cdc96d52c549ec54f9c8a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / system_resource_monitor-0.2.0-py3-none-any.whl
| Download URL | system_resource_monitor-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
43119d9998e07f28806bfbf48c199aefa25f9920388c3d826fbc4695e43419f5
|
|
BLAKE2b-256 checksum How to use checksums |
a34a264f12cb6f63bea00b127788e9675675ac293f056d2265b0b768969987bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for system-resource-monitor 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.