SysHealth menampilkan kondisi komputer kamu di terminal: CPU, RAM, Swap, Disk, jaringan, dan proses yang paling banyak memakai resource. Data diperbarui otomatis di satu dashboard berwarna.
Aplikasi ini berjalan di Windows, macOS, dan Linux. Semua data dibaca dari komputer kamu dan tidak dikirim ke internet.
- 🎯 Kegunaan
- ✨ Fitur
- 🚀 Instalasi
- 🎮 Cara Pakai
- 🔍 Membaca Dashboard
- 📝 Export Laporan
- 🐍 Memakai sebagai Library
- 🏗️ Arsitektur
- 🧪 Pengembangan
- 💡 Tips
- 🛠️ Pemecahan Masalah
- ❓ FAQ
- 🗺️ Rencana Pengembangan
- 🤝 Berkontribusi
Pakai SysHealth saat kamu perlu:
- 🐌 Mencari tahu kenapa komputer lambat. Dashboard menunjukkan apakah CPU, RAM, atau disk yang penuh.
- 🔥 Menemukan program yang memakai CPU atau RAM paling besar.
- 🌐 Memeriksa kecepatan upload dan download yang sedang berjalan.
- 🛰️ Memantau server atau VPS lewat SSH, karena dashboard hanya membutuhkan terminal.
- 📄 Menyimpan kondisi sistem ke file JSON atau Markdown untuk laporan atau skrip.
| Fitur | Keterangan | |
|---|---|---|
| 📊 | Dashboard live | Angka diperbarui dengan selang yang kamu tentukan |
| 🎨 | Warna status | Hijau, kuning, dan merah mengikuti ambang batas pemakaian |
| 🧮 | Metrik lengkap | CPU total dan per core, RAM, Swap, Disk, Network I/O |
| 🔝 | Top proses | Urutkan berdasarkan CPU atau RAM, tampilkan 1 sampai 50 proses |
| 💾 | Export | Simpan snapshot ke JSON atau Markdown |
| 🖥️ | Lintas platform | Windows, macOS, dan Linux |
| 🔒 | Lokal | Tidak ada data yang keluar dari komputer kamu |
Kamu membutuhkan Python 3.9 atau lebih baru. Cek versinya dengan python --version.
pipx memasang aplikasi di lingkungan terpisah dan mengatur PATH untuk kamu.
pip install pipx
pipx ensurepath
pipx install git+https://github.com/Gantzcode-ritsu/syshealth.gitTutup terminal, buka lagi, lalu ketik syshealth.
pip install git+https://github.com/Gantzcode-ritsu/syshealth.gitCara ini cocok untuk developer yang ingin mengubah kode.
git clone https://github.com/Gantzcode-ritsu/syshealth.git
cd syshealth
python -m venv .venv
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# Linux atau macOS
source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest -vpipx upgrade syshealth-cli
pipx uninstall syshealth-cliKalau kamu memasang dengan pip, gunakan pip install --upgrade git+https://github.com/Gantzcode-ritsu/syshealth.git untuk memperbarui dan pip uninstall syshealth-cli untuk menghapus.
Ketik perintah ini untuk membuka dashboard:
syshealthTekan Ctrl+C untuk keluar. Kalau terminal Windows kamu tidak mengenali syshealth, jalankan python -m syshealth.
syshealth # refresh 2 detik, 10 proses teratas
syshealth -i 1 # refresh tiap 1 detik
syshealth -t 20 # tampilkan 20 proses teratas
syshealth -s memory # urutkan proses berdasarkan RAM
syshealth -i 0.5 -t 15 -s cpu # gabungkan beberapa opsi
syshealth --export json # simpan snapshot JSON
syshealth --export md -o laporan.md # simpan snapshot Markdown dengan nama pilihan kamu
syshealth --version # tampilkan versi
syshealth --help # tampilkan bantuan| Opsi | Singkat | Default | Fungsi |
|---|---|---|---|
--interval |
-i |
2.0 |
Selang refresh dalam detik, minimal 0.5 |
--top |
-t |
10 |
Jumlah proses yang tampil, dari 1 sampai 50 |
--sort |
-s |
cpu |
Urutan proses: cpu atau memory |
--export |
-e |
tidak ada | Simpan snapshot (json atau md) tanpa membuka dashboard |
--output |
-o |
dibuat otomatis | Lokasi dan nama file hasil export |
--version |
-v |
tidak ada | Tampilkan versi |
--help |
tidak ada | tidak ada | Tampilkan bantuan |
| Kode | Arti |
|---|---|
0 |
Berhasil |
1 |
Gagal: terminal tidak interaktif saat membuka dashboard, atau file export tidak bisa ditulis |
2 |
Opsi tidak valid, misalnya -i 0.1 atau -t 99 |
Skrip kamu bisa membaca kode ini untuk menangani kegagalan.
Dashboard terbagi menjadi lima area:
| Area | Isi |
|---|---|
| 🏷️ Header | Nama dan versi aplikasi, nama komputer, sistem operasi, uptime, dan waktu sekarang |
| 📈 Metrik Utama | Bar untuk CPU, RAM, Swap, dan Disk |
| 🌐 Network I/O | Kecepatan upload dan download, serta total data sejak komputer menyala |
| 🔝 Top Proses | Tabel program dengan pemakaian terbesar |
| 🧵 CPU per Core | Satu bar untuk setiap core prosesor |
| Pemakaian | Status | Warna | Artinya |
|---|---|---|---|
| Di bawah 70% | Normal | 🟢 Hijau | Kondisi baik |
| 70% sampai 85% | Warning | 🟡 Kuning | Resource mulai padat |
| Di atas 85% | Critical | 🔴 Merah | Resource hampir habis dan perlu ditangani |
Angka tepat 85% masih berstatus Warning. Status Critical dimulai dari 85,1%. Ambang yang sama berlaku untuk kolom CPU % dan MEM % di tabel proses.
| Metrik | Artinya | Kapan perlu diperhatikan |
|---|---|---|
| 🧠 CPU | Beban prosesor, dirata-rata dari semua core | Angka tinggi saat kamu tidak menjalankan apa pun |
| 🧩 RAM | Memori kerja yang terpakai, ditulis terpakai / total |
RAM penuh memaksa sistem memakai Swap dan komputer melambat |
| 🔁 Swap | Memori cadangan di disk (disebut pagefile di Windows) yang dipakai saat RAM habis | Angka tinggi menandakan RAM kurang. Tulisan tidak aktif muncul kalau sistem tidak punya swap |
| 💽 Disk | Ruang terpakai di drive utama: C:\ di Windows, / di Linux dan macOS |
Disk hampir penuh menghambat sistem dan update |
| ⬆️⬇️ Upload dan Download | Kecepatan data keluar dan masuk saat ini, per detik | Angka tinggi saat kamu tidak mengunduh atau mengunggah apa pun |
| 📶 Total terkirim dan diterima | Jumlah data sejak komputer menyala | Berguna untuk memperkirakan pemakaian kuota |
| ⏱️ Uptime | Lama komputer menyala sejak boot terakhir | Uptime panjang kadang menandakan komputer perlu restart |
| Kolom | Artinya |
|---|---|
| PID | Nomor identitas proses di sistem operasi |
| Name | Nama program |
| CPU % | Porsi kapasitas CPU total yang dipakai proses itu, dari 0 sampai 100% |
| MEM % | Porsi RAM total yang dipakai proses itu |
Nilai CPU per proses dihitung terhadap seluruh core, mengikuti Task Manager Windows. Perintah top di Linux menghitung per core, jadi pada komputer multi-core angkanya bisa melewati 100% dan berbeda dari tabel ini.
Opsi --export mengambil satu snapshot kondisi sistem dan menyimpannya ke file. Dashboard tidak terbuka.
syshealth --export json
syshealth --export md -o laporan.md| Format | Cocok untuk |
|---|---|
| 🧾 JSON | Diolah oleh program atau skrip lain |
| 📃 Markdown | Dibaca langsung, ditempel ke dokumen, laporan, atau tiket bantuan |
Tanpa -o, file muncul di folder saat ini dengan nama syshealth_snapshot_TAHUNBULANTANGGAL_JAMMENITDETIK.json atau .md. Folder tujuan dibuat otomatis kalau belum ada. Snapshot memakai dua pembacaan berjarak sekitar 1 detik supaya nilai CPU dan jaringan akurat.
Semua ukuran memori dan disk memakai satuan byte. Kecepatan jaringan memakai byte per detik. Persentase berada di rentang 0 sampai 100.
{
"timestamp": "2026-10-10T16:22:49",
"hostname": "NAMA-PC",
"os_name": "Windows 10",
"uptime_seconds": 29740.0,
"cpu": {
"total_percent": 33.7,
"per_core_percent": [37.8, 31.8, 30.1, 35.2],
"core_count": 4
},
"memory": {
"total": 6350000000,
"used": 5940000000,
"free": 410000000,
"available": 410000000,
"percent": 93.7
},
"swap": { "total": 10737418240, "used": 4724464025, "free": 6012954215, "percent": 44.0 },
"disk": {
"path": "C:\\",
"total": 255000000000,
"used": 154000000000,
"free": 101000000000,
"percent": 60.4
},
"network": {
"bytes_sent": 7130000000,
"bytes_recv": 146780000000,
"upload_speed": 218726.4,
"download_speed": 6353510.4
},
"processes": [
{ "pid": 1234, "name": "chrome.exe", "cpu_percent": 12.3, "memory_percent": 4.1 }
],
"process_sort": "cpu"
}Angka di atas hanya contoh untuk menunjukkan bentuk datanya.
Contoh cron di Linux atau macOS untuk menyimpan snapshot tiap jam:
0 * * * * syshealth --export json -o /var/log/syshealth/$(date +\%H).jsonDi Windows, buat tugas di Task Scheduler yang menjalankan syshealth --export json -o C:\logs\health.json.
Kamu bisa mengimpor kolektor datanya di skrip Python sendiri:
from syshealth.collector import SystemCollector
collector = SystemCollector(top_n=5, sort_by="memory")
collector.warm_up() # satu pembacaan awal supaya CPU dan jaringan akurat
snapshot = collector.collect()
print(snapshot.cpu.total_percent)
print(snapshot.memory.percent)
for proc in snapshot.processes:
print(proc.pid, proc.name, proc.memory_percent)
data = snapshot.to_dict() # dict siap diubah ke JSONSystemCollector menerima empat argumen:
| Argumen | Default | Fungsi |
|---|---|---|
top_n |
5 |
Jumlah proses yang dikembalikan, minimal 1 |
sort_by |
"cpu" |
"cpu" atau "memory" |
disk_path |
drive utama | Path disk yang diperiksa |
clock |
time.monotonic |
Fungsi waktu, berguna untuk pengujian |
Nilai CPU dan kecepatan jaringan dihitung dari selisih antar pemanggilan. Panggil warm_up() sebelum collect() pertama.
syshealth/
├── __init__.py # versi paket
├── __main__.py # python -m syshealth
├── utils.py # format byte, uptime, dan penentu warna
├── collector.py # SystemCollector dan dataclass hasil
├── formatter.py # panel rich, dashboard live, export JSON dan Markdown
└── main.py # antarmuka command line (typer)
tests/
├── test_collector.py
├── test_formatter.py
└── test_main.py
| Modul | Tanggung jawab |
|---|---|
utils.py |
Mengubah byte menjadi KB, MB, GB, TB. Menentukan warna dan label status dari persentase |
collector.py |
Membaca data lewat psutil dan mengembalikannya sebagai SystemSnapshot |
formatter.py |
Menyusun layout rich dan menjalankan Live. Membuat teks JSON dan Markdown |
main.py |
Membaca opsi command line, memilih antara dashboard dan export |
Alur data berjalan satu arah: main.py membuat SystemCollector, kolektor menghasilkan SystemSnapshot, lalu formatter.py mengubahnya menjadi tampilan atau file. Kolektor tidak mengenal tampilan, dan formatter tidak membaca data sistem.
pip install -e ".[dev]"
ruff check .
python -m pytest -v- ✅ Test mencakup pengumpulan data, format tampilan, dan perintah command line.
- 🧱 Test jaringan memakai data tiruan supaya hasilnya stabil di semua mesin.
- 🤖 GitHub Actions menjalankan test di Linux, macOS, dan Windows, dengan Python 3.9 sampai 3.13.
- 🧹 Ruff memeriksa gaya kode. Konfigurasinya ada di
pyproject.toml.
Aturan kode:
- Tambahkan type hint pada fungsi publik.
- Taruh logika pembacaan data hanya di
collector.py, tampilan hanya diformatter.py, dan parsing opsi hanya dimain.py. - Tulis test untuk setiap perilaku baru. Validasi struktur dan rentang nilai, atau pakai
monkeypatchuntuk nilai yang berubah-ubah.
- 🔍 Jalankan
syshealth -s memoryuntuk melihat pemakan RAM, atausyshealth -s cpuuntuk pemakan CPU. - ⚡ Pakai
-i 0.5kalau kamu ingin melihat perubahan dua kali per detik. - 📐 Buka terminal berukuran 100 kolom x 30 baris atau lebih supaya semua area tampil utuh.
- 🖥️ Gunakan Windows Terminal, PowerShell, iTerm2, atau GNOME Terminal supaya warna dan garis tampil rapi.
- 🛰️ Dashboard berjalan lewat SSH selama terminalnya interaktif.
❌ Perintah syshealth tidak dikenali di Windows
Folder Scripts milik Python belum masuk ke PATH. Pasang dengan pipx, atau jalankan python -m syshealth.
❌ Muncul pesan "Live dashboard membutuhkan terminal interaktif"
Dashboard tidak bisa berjalan kalau output dialihkan lewat pipe atau skrip. Gunakan --export json atau --export md.
🧩 Tampilan terpotong atau berantakan
Perbesar jendela terminal dan pindah ke terminal modern.
0️⃣ Nilai CPU di awal menunjukkan 0%
CPU dan kecepatan jaringan dihitung dari selisih dua pembacaan. Angkanya benar setelah satu siklus refresh.
🔐 Beberapa proses bernilai 0
Sistem operasi tidak mengizinkan pembacaan proses tersebut. Jalankan SysHealth sebagai administrator atau dengan sudo.
📁 Muncul "Permission denied" saat export
Kamu tidak punya izin menulis di folder tujuan. Pilih folder lain dengan -o.
🛡️ Apakah SysHealth mengubah sesuatu di komputer saya?
Tidak. SysHealth membaca informasi sistem lewat library psutil dan tidak menulis apa pun selain file export yang kamu minta.
⚙️ Apakah SysHealth membebani komputer?
Beban utamanya berasal dari pembacaan daftar proses di setiap refresh. Naikkan nilai -i untuk mengurangi frekuensinya.
✂️ Bisakah saya menutup proses dari dashboard? Belum. SysHealth hanya menampilkan data.
💽 Kenapa hanya satu disk yang tampil? SysHealth membaca drive utama saja. Dukungan banyak disk ada di rencana pengembangan.
Daftar ini berisi ide, bukan janji jadwal.
- 📚 Tampilkan semua partisi disk
- 🌡️ Suhu dan baterai, dengan cadangan untuk sistem yang tidak mendukungnya
- 🎚️ Ambang warna kustom lewat opsi
--warndan--crit - 🔎 Filter proses berdasarkan nama
- 📉 Grafik mini riwayat CPU dan jaringan
- 🗂️ Log snapshot berkala dalam format JSONL
- 1️⃣ Mode
--onceuntuk mencetak satu tampilan lalu keluar
Kirim bug dan ide fitur lewat Issues. Sertakan sistem operasi, versi Python, perintah yang kamu jalankan, dan pesan error lengkap.
Untuk pull request:
- Buat branch dari
main. - Tambahkan test untuk perubahanmu.
- Jalankan
ruff check .danpython -m pytest -v. - Jelaskan apa yang berubah dan alasannya di deskripsi PR.
| Library | Fungsi |
|---|---|
| psutil | Membaca data sistem |
| rich | Tampilan terminal |
| typer | Antarmuka command line |