Quando sentes que o sistema está estranho — CPU aos saltos, swap a encher, ventoinhas a rodar sem motivo — o mais provável é abrires o htop, depois o iostat, talvez o nettop, e ires juntando peças. O SysWatch mete tudo no mesmo sítio: doze tabs, uma para cada subsistema, com uma camada de deteção de anomalias por cima.
O terminal que abres quando sentes que algo está errado — antes de ires buscar htop, iostat, nettop, powermetrics e um bloco de notas cheio de one-liners.
O Problema
O htop mostra-te o que está a correr. O SysWatch mostra-te o que está a acontecer. CPU, memória, IO, GPU, energia, serviços — e diz-te porquê, em linguagem natural, quando algo está anómalo.
Foi desenhado para machine-local diagnostics. O autor tem também o NetWatch (rede) e o DiskWatch (disco) — partilham o mesmo “chrome” e paleta de cores.
As 12 Tabs
| # | Tab | Substitui |
|---|---|---|
| 1 | Overview | Dashboard de todos os subsistemas |
| 2 | CPU | panel CPU do htop, top -d, mpstat |
| 3 | Memory | free, vm_stat, panel mem do htop |
| 4 | Disks | iostat, iotop (agregado) |
| 5 | Filesystems | df -h, df -i, mount |
| 6 | Procs | htop, ps auxf, pstree |
| 7 | GPU | ioreg AGXAccelerator / sysfs DRM |
| 8 | Power | pmset, ioreg AppleSmartBattery |
| 9 | Services | launchctl list / systemctl list-units |
| 0 | Net | nettop, iftop |
| - | Timeline | Sessão gravada com scrubber temporal |
| + | Insights | Cartões de anomalia em linguagem natural |
Funcionalidades Distintivas
Insights Tab
Deteção heurística de anomalias em cima da sessão atual. Swap thrash, runaway processes,
disk full, memory pressure, high load, zombie parties — tudo apresentado como cartões em
inglês simples com uma sugestão de tab para investigar. A Overview tem uma strip na parte
inferior e a tab bar mostra [+] quando há algo novo.
Session Scrubbing
A Timeline tab permite fazer rewind (←/→) de toda a aplicação — todos os painéis mostram
o estado histórico de forma transparente. R grava uma sessão para ficheiro .swr; depois
podes usar --replay ficheiro.swr para reproduzir offline. S faz dump do snapshot atual
para disco.
Honesto Sobre Limitações
Onde os dados precisam de sudo (powermetrics para fans, GPU util em Apple Silicon), a tab mostra o que consegue obter sem privilégios e uma nota sobre o que está bloqueado. Nada é inventado, nada pede permissões.
Instalação
macOS (Homebrew)
brew install matthart1983/tap/syswatch
Debian / Ubuntu (Cargo)
Primeiro instala o Rust (se não tiveres):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Depois:
cargo install syswatch
A partir do Fonte
git clone https://github.com/matthart1983/syswatch.git
cd syswatch
cargo build --release
./target/release/syswatch
Pré-requisitos: Rust 1.75+. No Linux não há dependências de sistema. No macOS usa os frameworks do sistema (IOKit, CoreFoundation).
Primeiros Passos
syswatch # 1Hz tick rate (padrão)
syswatch --tick 500 # 2Hz (mais responsivo)
syswatch --tab procs # arrancar diretamente na tab de processos
syswatch --replay sessao.swr # reproduzir sessão gravada
Atalhos de Teclado
1 2 3 4 5 6 7 8 9 → Overview / CPU / Mem / Disks / FS / Procs / GPU / Power / Services
0 - + → Net / Timeline / Insights
Tab / Shift-Tab → Cycle tabs
↑ / ↓ → Select row (Procs, Services)
s → Cycle sort (Procs, Services)
/ → Filter processos
← / → → Scrub sessão backward / forward
Home / End → Amostra mais antiga / live
p → Pausa
g → Estilo de gráfico (barras / pontos)
t → Cycle theme
, → Settings (tick, theme, fade)
S / R → Snapshot para disco / gravar sessão
? → Help
q / Ctrl-C → Sair
Arquitetura
src/
├── main.rs CLI + entry point
├── app.rs Event loop, tab state, scrub
├── collect/ Collectors por subsistema
│ ├── collector.rs sysinfo (CPU/Mem/Procs/Net)
│ ├── gpu.rs ioreg / sysfs DRM / nvml
│ ├── macos_sampler.rs IOReport + SMC (GPU/power)
│ ├── power.rs ioreg / pmset
│ ├── services.rs launchctl / systemctl
│ └── ring.rs Bounded history + scrub
├── insights/ Funções puras sobre (History, Snapshot)
├── tabs/ Um ficheiro por tab
└── ui/
├── chrome.rs Header, tab bar, footer
├── palette.rs Cores
└── widgets.rs block_bar, sparkline, panel
Modelo de Refresh
Um loop rápido a 1Hz lê CPU/Mem/Net/IO a cada tick. Os collectors mais pesados correm com intervalos maiores:
- Processos: ~1.5s
- Power/Services: ~5s
- Largura de banda por processo: thread separada
A UI redesenha ao tick ou a cada keypress, o que significa que o loop se mantém leve independentemente do tick rate.
Experiência no MacBook
A versão 0.7.3 instalada via Homebrew corre nativamente em ARM64 (2.2MB de binário). Arranca instantaneamente sem qualquer configuração extra.
A interface é composta por:
- Header: Nome “SysWatch” à esquerda, métricas de resumo à direita
- Tab bar: As 12 tabs numeradas, com a tab ativa destacada
- Painel principal: Muda por completo conforme a tab
- Footer: Atalhos rápidos e estado
A tab Overview mostra um dashboard compacto com sparklines de CPU, memória e IO, tudo codificado a cores (verde para OK, amarelo para warning, vermelho para crítico). A tab CPU mostra uso por núcleo com barras horizontais. A tab Memory mostra pressão de memória, swap usado, e breakdown por tipo. A tab Procs lista processos em árvore com %CPU, %MEM, número de threads e PID.
O suporte a rato não está presente (ao contrário do Alwide), mas a navegação por teclado
é rápida e intuitiva. A tecla ? abre um ecrã de ajuda com todos os comandos.
Anti-objetivos (declarados pelo autor)
- Não é multi-host — para fleet view, usa o NetWatch
- Não é um daemon — não há collector persistente, a sessão é a base de dados
- Não é interativo — read-only deliberadamente. Não mata processos, não faz renice, não unmount
- Não é logging — mostra OOM kills como sinal, não é UI de log search
Família de Ferramentas
O SysWatch faz parte de uma tríade do mesmo autor (matthart1983):
| Ferramenta | Foco | Repo |
|---|---|---|
| SysWatch | Diagnóstico de sistema | github.com/matthart1983/syswatch |
| NetWatch | Diagnóstico de rede | github.com/matthart1983/netwatch |
| DiskWatch | Diagnóstico de disco | github.com/matthart1983/diskwatch |
Partilham o mesmo “chrome” visual e a paleta de cores, pelo que se usares um, os outros sentem-se familiares.
Considerações Finais
O SysWatch não substitui o htop para uso diário — para uma olhadela rápida aos processos, o htop é mais imediato. Mas para diagnóstico de problemas, quando precisas de cruzamento de informação entre CPU, memória, IO e GPU ao mesmo tempo, com histórico temporal e deteção de anomalias, é uma ferramenta muito competente.
O melhor: não precisa de sudo para nada, o binário é leve, e funciona igual em macOS e Linux. O pior: para utilizadores avançados, a falta de modo interativo (não podes matar processos) pode ser frustrante — mas é uma escolha de desenho deliberada.
Projeto: github.com/matthart1983/syswatch (MIT)
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário