Torna al blog
·9 min di lettura·productdevbook

Costruire una dashboard personale di larghezza di banda su macOS

Configurazione pratica per una dashboard personale di banda su macOS — cosa monitorare, cosa ignorare e come tenere tutto in locale.

  • macOS
  • Bandwidth
  • Productivity
  • Tutorial

Ogni sei mesi qualcuno su Hacker News pubblica "ho costruito uno stack di monitoring personale con Prometheus e Grafana". È bello, è divertente da configurare un sabato, ed è follemente eccessivo per la domanda vera: quanta banda sta usando ogni app sul mio Mac? Non ti serve un TSDB, un Docker compose file, o un reverse proxy con TLS. Ti serve una dashboard di banda macOS che ci stia su uno schermo, viva nella barra dei menu, e si tolga di mezzo. Ecco come costruirne una senza bruciare un weekend.

La tesi: un'app nella barra dei menu gestisce il livello live e recente, l'export CSV occasionale gestisce l'analisi di archivio, e hai finito. Niente servizi da accudire, niente scrape config da editare, niente pannelli da mantenere.

Cosa serve davvero a una dashboard di banda macOS

Togli la fantasia di Grafana e chiediti cosa guarderai davvero:

  1. Un rate corrente. "Qualcosa sta usando banda adesso?" — la domanda più comune, fatta decine di volte al giorno.
  2. Una suddivisione per app. Quando la risposta è "sì", vuoi sapere quale app.
  3. Cronologia recente. Ultima ora, ultimo giorno, magari ultima settimana. Abbastanza per individuare un pattern.
  4. Approfondimenti occasionali. Una volta al mese vuoi confrontare questo mese col precedente, o correlare con qualcos'altro.

Tutto qui. Quello è l'intero prodotto. Gran parte degli stack di "monitoring personale" arrivano con decine di dashboard perché gli strumenti lo incoraggiano. Non ti servono.

Il design a due livelli

Dividi il problema in un livello live/recente e un livello di archivio.

Live + recente: un'app nella barra dei menu

Un'app nella barra dei menu è la forma giusta per i primi tre bisogni. È sempre attiva, è a un singolo clic dalla tua attività corrente, e non occupa spazio sullo schermo quando non la stai guardando. La densità informativa di un'icona nella barra dei menu — rate corrente come piccolo grafico o due numeri — è esattamente quello che vuole "qualcosa sta usando banda adesso".

Sceglierne una con queste proprietà e sei a posto:

  • Mostra un rate live nella barra dei menu a colpo d'occhio
  • Ha un popover o finestra con suddivisione per app
  • Raggruppa i processi ausiliari sotto la loro app principale (così "Slack" è una riga, non sette)
  • Mantiene almeno un giorno di cronologia, idealmente una settimana o più
  • È firmata e notarizzata così macOS non la segnala

ova include tutte queste cose. Circa 3 MB, campiona a circa 1 Hz, gira su macOS 14 e successivi (Apple Silicon e Intel), i dati restano locali, niente telemetria.

Live + cronologia nella barra dei menu
ova mostra il rate corrente nella tua barra dei menu e una timeline scorrevole per app dietro. Quello copre il livello live e recente di una dashboard di banda senza setup oltre l'installazione.

Archivio: export CSV occasionale

Per la domanda mensile "confronta questo mese col precedente", non ti serve un sistema live. Ti serve un file flat. Esporta un CSV dal tuo monitor della larghezza di banda, mettilo in un notebook (Jupyter, Observable, qualsiasi cosa), e fai le query.

È anche il posto per fare analisi interessanti: heatmap ora-del-giorno, top destinazioni per app, crescita settimana su settimana. Non ti serve live — eseguirlo una volta al mese va bene — e il tuo laptop non ha bisogno di hostare un'istanza Grafana per farlo.

Se il tuo monitor memorizza i dati in SQLite (ova lo fa, in ~/Library/Application Support/ova/), l'export è un solo comando:

sqlite3 -header -csv \
  ~/Library/Application\ Support/ova/<file>.sqlite \
  "SELECT timestamp, app, bytes_in, bytes_out FROM samples" \
  > ~/Desktop/bandwidth.csv

Poi caricalo in Python o R o DuckDB e hai il livello pesante di uno stack Grafana con una query e zero infrastruttura.

Perché non Grafana?

Grafana, Prometheus, InfluxDB, Loki — sono ottimi strumenti per le flotte. Per un Mac, l'overhead operativo è follemente sproporzionato. Servirebbe:

  • Un'istanza Prometheus che gira localmente (RAM, disco, porta)
  • Un exporter custom che legge proc_pidinfo o l'output di nettop (qualcuno deve scriverlo e mantenerlo)
  • Grafana che gira localmente (processo Java/Go, porta, database)
  • Dashboard da scrivere e versionare
  • Un motivo per fare login alla dashboard regolarmente (non lo farai)

Dopo il bagliore iniziale del sabato pomeriggio, lo stack marcisce. Aggiorni macOS e l'exporter si rompe. Grafana chiede un reset password. Te ne dimentichi per tre settimane e perdi proprio l'anomalia per cui l'avevi costruito.

Un'app nella barra dei menu resta fuori dai piedi. Vedi il rate ogni volta che dai un'occhiata all'orologio. Il flusso della dashboard di banda macOS è integrato nella tua routine, non un sito web che devi ricordarti di visitare.

Setup passo-passo

Concretamente, ecco come mettere insieme la tua dashboard in 15 minuti.

Passo 1: installa l'app per la barra dei menu

Installa ova. È circa 3 MB. Trascina ad Applicazioni, lancia, consenti il permesso richiesto per leggere le statistiche di rete, e hai finito. Inizia immediatamente a campionare a circa 1 Hz e a mostrare il rate corrente nella barra dei menu.

Passo 2: configura il display nella barra dei menu

La maggior parte degli strumenti di banda nella barra dei menu ti fa scegliere cosa mostrare. Opzioni comuni:

  • Rate corrente up/down (es. ↓ 2,1 MB/s ↑ 80 KB/s)
  • Una piccola sparkline dell'ultimo minuto
  • Solo un'icona che si accende quando attiva

Scegline una. Il display a due numeri è il più denso. La sparkline è la più visibile a colpo d'occhio. Non c'è una risposta sbagliata; scegli quella che leggerai davvero.

Passo 3: fissa qualche app

Alcuni monitor ti fanno marcare certe app come "osservate" — appaiono per prime nella vista di suddivisione. Pin utili per la maggior parte delle persone:

  • Il browser in cui vivi (Chrome, Safari, Arc, Firefox)
  • La tua chat di lavoro (Slack, Discord, Teams)
  • I tuoi strumenti di sviluppo (Docker, VS Code, il tuo simulator se fai mobile)
  • Sync cloud (Dropbox, cloudd di iCloud, Google Drive)

Saprai entro una settimana quali app vuoi davvero fissate e quali erano ottimistiche.

Passo 4: verifica che la cronologia funzioni

L'intero punto del livello recente è poter scorrere indietro. Apri il popover o la finestra, scegli un range tempo come "ultime 24 ore", e conferma di vedere un grafico con picchi e valli. Se no, l'app non sta persistendo i dati e hai un nettop glorificato. Passa a uno strumento diverso.

Passo 5: schedula un export mensile

Aggiungi un promemoria sul calendario per il primo del mese: "Esporta dati banda, esegui notebook heatmap." Cinque minuti una volta al mese. Quello è il tuo livello d'archivio.

Cosa guardare

Una volta che hai la dashboard attiva, ecco le domande che vale la pena controllare su una cadenza regolare.

Sguardo quotidiano

Apri la vista di suddivisione. Scansiona per sorprese. Se Chrome è in cima, è normale. Se cloudd è in cima durante l'orario lavorativo, chiedi perché (probabilmente iCloud che recupera, possibilmente Foto che carica). Se qualcosa che non riconosci è in cima, indaga.

Settimanale

Guarda il totale per giorno. È coerente? Un picco di 5x in un singolo giorno significa o che hai fatto qualcosa di diverso (scaricato un gioco, avuto una grande chiamata) o che qualcosa di automatico è girato (Time Machine verso un target remoto, aggiornamento di sistema).

Mensile

Esegui la heatmap. Top app per mese. Confronta col mese precedente. Le tendenze nel tempo ti dicono se la tua banda sta strisciando in alto — di solito per una nuova app che hai dimenticato di mettere in discussione.

Vedi ova in azione

Un monitor della larghezza di banda nella barra dei menu visibile a colpo d'occhio — locale, firmato, ~3 MB.

Scarica per macOS

Un esempio elaborato

Un pattern reale dal setup di un utente:

  • Rate live: piccola sparkline nella barra dei menu. Le occhiate costano zero tempo.
  • Vista per app: legata a un hotkey che apre il popover di ova.
  • Controllo settimanale: ogni venerdì pomeriggio, l'utente apre la vista a 7 giorni e annota le top tre app. Qualsiasi cosa nelle top tre che non c'era il venerdì precedente riceve una frase nel suo journal che spiega perché.
  • Export mensile: un job launchd butta giù un CSV il primo di ogni mese. Un piccolo notebook Observable disegna la heatmap e la lista top-10-per-app. Tempo totale: 90 secondi, una volta al mese.

Questo è l'intero sistema. Niente Prometheus, niente Grafana, niente reverse proxy, niente auth, niente porte, niente log da ruotare. La "dashboard" è la barra dei menu più un notebook che si apre una volta al mese.

Quando ti serve davvero un server

Ci sono casi in cui uno stack centralizzato è corretto:

  • Gestisci più Mac (un piccolo team, una casa, una flotta di build machine)
  • Vuoi correlazioni con dati non-Mac (log del router, traffico smart-home, uso VPN del lavoro)
  • Hai bisogno di alerting in tempo reale ("avvisami se l'upload supera 100 MB/s per più di cinque minuti")

Quei casi giustificano il costo operativo. Per un Mac personale, no.

In conclusione

Una dashboard di banda macOS che gli utenti apriranno davvero non ha bisogno di uno stack. Ha bisogno di un'app nella barra dei menu che mostri sempre il rate corrente, una suddivisione per app per quando qualcosa sembra strano, e un percorso di export per l'occasionale immersione profonda. Tutto qui.

Se vuoi la versione semplice, installa ova — circa 3 MB, macOS 14 e successivi, campiona a circa 1 Hz, tutti i dati restano in ~/Library/Application Support/ova/ sulla tua macchina, nessun account richiesto, pagamento singolo con aggiornamenti a vita e rimborso 14 giorni. Cinque minuti dal download alla dashboard, niente compose file in vista.