Skip to main content

System metrics collector for CPU, memory, disk, and network

Project description

philiprehberger-server-monitor

Tests PyPI version Last updated

System metrics collector for CPU, memory, disk, and network.

Installation

pip install philiprehberger-server-monitor

Usage

Single Snapshot

from philiprehberger_server_monitor import Monitor

monitor = Monitor()
snap = monitor.snapshot()
print(f"CPU: {snap.cpu.percent}%")
print(f"Memory: {snap.memory.used_gb:.1f}/{snap.memory.total_gb:.1f} GB")
print(f"Disk: {snap.disk['/'].percent}%")

# Export snapshot
data = snap.to_dict()

Continuous Monitoring with Alerts

from philiprehberger_server_monitor import Monitor, Alert

monitor = Monitor()
monitor.watch(
    interval=5.0,
    on_snapshot=lambda s: print(f"CPU: {s.cpu.percent}%"),
    alerts=[
        Alert(metric="cpu.percent", threshold=90, callback=lambda m, v, t: print(f"HIGH CPU: {v}%")),
        Alert(metric="memory.percent", threshold=85, callback=lambda m, v, t: print(f"HIGH MEM: {v}%")),
    ],
)

Trend Tracking

from philiprehberger_server_monitor import Monitor

monitor = Monitor()

# Start recording snapshots every 5 seconds (keeps last 720)
monitor.start_recording(interval=5.0, max_snapshots=720)

# Later, analyze trends over the last 5 minutes
trend = monitor.get_trend("cpu.percent", window_seconds=300)
print(f"CPU slope: {trend.slope:.4f}%/s")
print(f"CPU went from {trend.start_value}% to {trend.end_value}%")

# Stop recording
monitor.stop_recording()

Trailing-window averages

from philiprehberger_server_monitor import Monitor

monitor = Monitor()
monitor.start_recording(interval=5.0)
# ... time passes ...

# Average CPU/memory % across snapshots in the trailing window (default 60s)
print(f"Avg CPU (last 60s): {monitor.average_cpu():.1f}%")
print(f"Avg memory (last 5 min): {monitor.average_memory(window_seconds=300):.1f}%")

Persisting Recorded Snapshots

monitor = Monitor()
monitor.start_recording(interval=5.0)
# ... time passes ...
monitor.export_json("metrics.json")

# Or grab a defensive copy of the buffer for in-process analysis
recent = monitor.snapshots()
print(f"Have {len(recent)} snapshots")

API

Function / Class Description
Monitor System metrics monitor with snapshot(), watch(), stop(), and trend tracking methods
Snapshot A point-in-time system metrics snapshot with cpu, memory, disk, network fields
CpuInfo CPU metrics (percent, count, count_logical, per_cpu, freq_mhz)
MemoryInfo Memory metrics (total, available, used, percent) with GB properties
DiskInfo Disk metrics for a single mount point (total, used, free, percent)
NetworkInfo Network metrics (bytes_sent, bytes_recv, packets_sent, packets_recv)
Alert(metric, threshold, callback) Threshold-based alert configuration for continuous monitoring
Trend Trend analysis result with metric, start_value, end_value, slope, duration_seconds
monitor.start_recording(interval, max_snapshots) Start background snapshot recording into a ring buffer
monitor.stop_recording() Stop the recording thread
monitor.get_trend(metric, window_seconds) Compute linear trend for a metric over recent snapshots
monitor.snapshots() Return a copy of the recorded snapshot buffer
monitor.export_json(path) Write recorded snapshots to a JSON file
monitor.average_cpu(window_seconds=60) Mean CPU % across snapshots in the trailing window (0.0 if empty)
monitor.average_memory(window_seconds=60) Mean memory % across snapshots in the trailing window (0.0 if empty)

Development

pip install -e .
python -m pytest tests/ -v

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_server_monitor-0.4.0.tar.gz (184.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file philiprehberger_server_monitor-0.4.0.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_server_monitor-0.4.0.tar.gz
Algorithm Hash digest
SHA256 25ed13b915a7e6ca804af824b0a48b018b2de1decb430ac10774266752ac317f
MD5 3df255a72c908b0e34cc8a6ab12ea77d
BLAKE2b-256 ea2f58f6495e444d458a4ba96c2d3c7356bd1ba7d9dd612f7204111de416e7fd

See more details on using hashes here.

File details

Details for the file philiprehberger_server_monitor-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_server_monitor-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7714949d282cb3b9e899bbe69fc3ec8e0b26710c7890957fdc88024eaee3e3d
MD5 e12abbbdc7b356f9d597a3a6bdbe83ea
BLAKE2b-256 7c9c89493fb8a9edc0d4a8e5440c031506be400a18ee46036cdd797c9dbdcec6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page