Voltar ao blog
·9 min de leitura·productdevbook

Montando um painel pessoal de largura de banda no macOS

Uma configuração prática para um painel pessoal de largura de banda no macOS — o que acompanhar, o que ignorar e como manter tudo local.

  • macOS
  • Bandwidth
  • Productivity
  • Tutorial

A cada seis meses alguém no Hacker News publica "construí uma stack de monitoramento pessoal com Prometheus e Grafana". É linda, é divertida de configurar num sábado, e é absurdamente exagerada para a pergunta real: quanta banda cada app no meu Mac está usando? Você não precisa de TSDB, Docker compose ou reverse proxy com TLS. Você precisa de um dashboard de banda no macOS que caiba numa tela, viva na barra de menu e fique fora do caminho. Aqui como construir um sem queimar um fim de semana.

A tese: um app de barra de menu lida com a camada ao vivo e recente, exportação CSV ocasional lida com análise de arquivamento, e pronto. Sem serviços para babá, sem configs de scrape para editar, sem painéis para manter.

O que usuários de dashboard de banda no macOS de fato precisam

Tire o devaneio Grafana e pergunte o que você vai de fato olhar:

  1. Uma taxa atual. "Algo está usando banda agora?" — a pergunta mais comum, feita dezenas de vezes por dia.
  2. Um detalhamento por app. Quando a resposta é "sim", você quer saber qual app.
  3. Histórico recente. Última hora, último dia, talvez última semana. O suficiente para flagrar um padrão.
  4. Mergulhos profundos ocasionais. Uma vez por mês você quer comparar este mês com o passado, ou correlacionar com algo mais.

É isso. É o produto inteiro. A maior parte das stacks "de monitoramento pessoal" vem com dezenas de dashboards porque as ferramentas incentivam. Você não precisa.

O design de duas camadas

Divida o problema numa camada ao vivo/recente e numa camada de arquivamento.

Ao vivo + recente: um app de barra de menu

Um app de barra de menu é o formato certo para as três primeiras necessidades. Está sempre rodando, está a um clique da sua atividade atual e não toma espaço de tela quando você não está olhando. A densidade de informação de um ícone na barra de menu — taxa atual como gráfico pequeno ou dois números — é exatamente o que "algo está usando banda agora?" pede.

Escolha um com estas propriedades e está pronto:

  • Mostra taxa ao vivo na barra de menu para olhar de relance
  • Tem popover ou janela com detalhamento por app
  • Agrupa processos auxiliares sob o app pai (para que "Slack" seja uma linha, não sete)
  • Mantém pelo menos um dia de histórico, idealmente uma semana ou mais
  • É assinado e notarizado para o macOS não sinalizar

ova vem com tudo isso. Cerca de 3 MB, amostra a aproximadamente 1 Hz, roda em macOS 14 e posteriores (Apple Silicon e Intel), dados ficam locais, sem telemetria.

Ao vivo + histórico na barra de menu
ova mostra a taxa atual na sua barra de menu e uma linha do tempo navegável por app por trás. Isso cobre a camada ao vivo e recente de um dashboard de banda sem nenhum setup além da instalação.

Arquivamento: exportação CSV ocasional

Para a pergunta "comparar este mês com o passado" uma vez por mês, você não precisa de um sistema ao vivo. Precisa de um arquivo flat. Exporte um CSV do seu monitor de banda, jogue num notebook (Jupyter, Observable, o que for) e rode as queries.

É também o lugar para análise interessante: heatmaps por hora do dia, top destinos por app, crescimento semana a semana. Você não precisa ao vivo — rodar uma vez por mês está bom — e seu laptop não precisa hospedar uma instância de Grafana para isso.

Se seu monitor armazena dados em SQLite (o ova armazena, em ~/Library/Application Support/ova/), a exportação é um comando:

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

Aí carregue em Python ou R ou DuckDB e você tem a camada pesada de uma stack Grafana com uma query e zero infraestrutura.

Por que não Grafana?

Grafana, Prometheus, InfluxDB, Loki — são ferramentas ótimas para frotas. Para um Mac, o overhead operacional é desproporcional. Você precisaria de:

  • Uma instância Prometheus rodando localmente (RAM, disco, porta)
  • Um exporter custom que lê proc_pidinfo ou saída do nettop (alguém tem que escrever e manter)
  • Grafana rodando local (processo Java/Go, porta, banco)
  • Dashboards para autorar e versionar
  • Uma razão para fazer login no dashboard regularmente (você não vai)

Depois do brilho inicial de tarde de sábado, a stack apodrece. Você atualiza o macOS e o exporter quebra. O Grafana pede reset de senha. Você esquece dele por três semanas e perde justamente a anomalia para a qual construiu.

Um app de barra de menu fica fora do seu caminho. Você vê a taxa toda vez que olha o relógio. O fluxo de dashboard de banda no macOS está embutido na sua rotina, não num site que você tem que lembrar de visitar.

Setup passo a passo

Concretamente, aqui como montar seu dashboard em 15 minutos.

Passo 1: instale o app de barra de menu

Instale ova. Cerca de 3 MB. Arraste para Applications, abra, permita a permissão pedida para ler estatísticas de rede e pronto. Imediatamente começa a amostrar a cerca de 1 Hz e a mostrar a taxa atual na barra de menu.

Passo 2: configure o display da barra de menu

A maior parte das ferramentas de banda na barra de menu te deixa escolher o que mostrar. Opções comuns:

  • Taxa atual de up/down (por exemplo, ↓ 2.1 MB/s ↑ 80 KB/s)
  • Um sparkline pequeno do último minuto
  • Só um ícone que acende quando ativo

Escolha um. O display de dois números é o mais denso. O sparkline é o mais "glance-able". Não há resposta errada; escolha o que vai de fato ler.

Passo 3: fixe alguns apps

Alguns monitores deixam você marcar certos apps como "vigiados" — aparecem primeiro na visão de detalhamento. Pins úteis para a maioria das pessoas:

  • O navegador em que você vive (Chrome, Safari, Arc, Firefox)
  • Seu chat de trabalho (Slack, Discord, Teams)
  • Suas ferramentas de dev (Docker, VS Code, seu simulador se faz mobile)
  • Sync de nuvem (Dropbox, cloudd do iCloud, Google Drive)

Em uma semana você vai saber quais apps de fato quer fixados e quais foram otimismo.

Passo 4: verifique que histórico funciona

Todo o ponto da camada recente é poder navegar para trás. Abra o popover ou janela, escolha um intervalo como "últimas 24 horas" e confirme que você vê um gráfico com picos e vales. Se não, o app não está persistindo dados e você tem um nettop glamouroso. Vá para outra ferramenta.

Passo 5: agende uma exportação mensal

Adicione um lembrete no calendário para o primeiro do mês: "Exportar dados de banda, rodar notebook do heatmap". Cinco minutos uma vez por mês. Essa é sua camada de arquivamento.

O que olhar

Quando o dashboard estiver rodando, aqui as perguntas que vale checar numa cadência regular.

Olhada diária

Abra a visão de detalhamento. Veja se há surpresas. Se Chrome está no topo, normal. Se cloudd está no topo durante horário de trabalho, pergunte por quê (provavelmente iCloud se atualizando, possivelmente Photos fazendo upload). Se algo que você não reconhece está no topo, investigue.

Semanal

Olhe o total por dia. Está consistente? Um pico de 5x num único dia significa que você fez algo diferente (baixou um jogo, teve uma chamada grande) ou algo automático rodou (Time Machine para alvo remoto, atualização de sistema).

Mensal

Rode o heatmap. Top apps por mês. Compare ao mês anterior. Tendências no tempo te dizem se sua banda está subindo aos poucos — geralmente por causa de um app novo que você esqueceu de questionar.

Veja o ova em ação

Um monitor de banda na barra de menu para olhar de relance — local, assinado, ~3 MB.

Baixar para macOS

Um exemplo concreto

Um padrão real do setup de um usuário:

  • Taxa ao vivo: sparkline pequeno na barra de menu. Olhadas custam zero tempo.
  • Visão por app: amarrada a um hotkey que abre o popover do ova.
  • Checagem semanal: toda sexta à tarde, o usuário abre a visão de 7 dias e anota os três apps do topo. Qualquer um no top três que não estava na sexta anterior ganha uma frase no diário explicando por quê.
  • Exportação mensal: job do launchd despeja um CSV no primeiro de cada mês. Um pequeno notebook Observable plota o heatmap e a lista de top-10-por-app. Tempo total: 90 segundos, uma vez por mês.

Esse é o sistema inteiro. Sem Prometheus, sem Grafana, sem reverse proxy, sem auth, sem portas, sem logs para rotacionar. O "dashboard" é a barra de menu mais um notebook que abre uma vez por mês.

Quando você de fato precisa de um servidor

Há casos em que uma stack centralizada é correta:

  • Você gerencia múltiplos Macs (time pequeno, casa, frota de máquinas de build)
  • Você quer correlações com dados não-Mac (logs do roteador, tráfego de smart-home, uso de VPN do trabalho)
  • Você tem necessidade real de alerta em tempo real ("me chame se upload passar de 100 MB/s por mais de cinco minutos")

Esses casos justificam o custo operacional. Para um Mac pessoal, não.

Encerrando

Um dashboard de banda no macOS que usuários vão de fato abrir não precisa de stack. Precisa de um app de barra de menu que sempre mostra a taxa atual, um detalhamento por app para quando algo parece estranho e um caminho de exportação para o mergulho profundo raro. É isso.

Se você quer a versão simples, instale o ova — cerca de 3 MB, macOS 14 e posteriores, amostra a aproximadamente 1 Hz, todos os dados ficam em ~/Library/Application Support/ova/ na sua máquina, sem conta obrigatória, pagamento único com atualizações para a vida toda e reembolso em 14 dias. Cinco minutos do download ao dashboard, sem compose files à vista.