Volver al blog
·9 min de lectura·productdevbook

Cómo construir un panel personal de ancho de banda en macOS

Una configuración práctica para un panel personal de ancho de banda en macOS: qué medir, qué ignorar y cómo mantener todo en local.

  • macOS
  • Bandwidth
  • Productivity
  • Tutorial

Cada seis meses alguien en Hacker News publica "construí una pila personal de monitorización con Prometheus y Grafana". Es preciosa, es divertida de montar un sábado, y es radicalmente excesiva para la pregunta real: ¿cuánto ancho de banda está usando cada app de mi Mac? No necesitas una TSDB, un fichero docker compose ni un proxy inverso con TLS. Necesitas un panel de ancho de banda en macOS que quepa en una pantalla, viva en tu barra de menú y se quite de en medio. Aquí va cómo construir uno sin quemar un fin de semana.

La tesis: una app de barra de menú maneja la capa en vivo y reciente, una exportación CSV ocasional maneja el análisis archivado, y listo. Sin servicios que cuidar, sin configs de scrape que editar, sin paneles que mantener.

Qué necesita realmente un panel de ancho de banda en macOS

Quita la fantasía de Grafana y pregúntate qué vas a mirar realmente:

  1. Una tasa actual. "¿Está algo usando ancho de banda ahora mismo?": la pregunta más común, hecha docenas de veces al día.
  2. Un desglose por app. Cuando la respuesta es "sí", quieres saber qué app.
  3. Historial reciente. Última hora, último día, quizás última semana. Suficiente para detectar un patrón.
  4. Inmersiones profundas ocasionales. Una vez al mes quieres comparar este mes con el anterior, o correlacionar con algo más.

Eso es todo. Ese es el producto entero. La mayoría de las pilas de "monitorización personal" vienen con decenas de paneles porque las herramientas lo fomentan. No los necesitas.

El diseño en dos capas

Divide el problema en una capa en vivo/reciente y una capa de archivo.

En vivo + reciente: una app de barra de menú

Una app de barra de menú es la forma correcta para las tres primeras necesidades. Siempre está corriendo, está a un clic de tu actividad actual, y no ocupa espacio en pantalla cuando no la miras. La densidad de información de un icono en la barra de menú —tasa actual como un pequeño gráfico o dos números— es exactamente lo que "¿está algo usando ancho de banda ahora mismo?" quiere.

Elige una con estas propiedades y estás listo:

  • Muestra una tasa en vivo en la barra de menú de un vistazo
  • Tiene un popover o ventana con desglose por app
  • Agrupa los procesos auxiliares bajo su app padre (para que "Slack" sea una fila, no siete)
  • Mantiene al menos un día de historial, idealmente una semana o más
  • Está firmada y notarizada para que macOS no la marque

ova viene con todo esto. Unos 3 MB, muestrea aproximadamente a 1 Hz, funciona en macOS 14 y posteriores (Apple Silicon e Intel), los datos se quedan locales, sin telemetría.

En vivo + historial en la barra de menú
ova muestra la tasa actual en tu barra de menú y una línea de tiempo recorrible por app detrás. Eso cubre la capa en vivo y reciente de un panel de ancho de banda sin más configuración que la instalación.

Archivo: exportación CSV ocasional

Para la pregunta una-vez-al-mes "comparar este mes con el anterior", no necesitas un sistema en vivo. Necesitas un archivo plano. Exporta un CSV desde tu monitor de ancho de banda, mételo en un notebook (Jupyter, Observable, lo que sea) y ejecuta las consultas.

Este es también el lugar para hacer análisis interesantes: heatmaps por hora del día, destinos top por app, crecimiento semana a semana. No lo necesitas en vivo —ejecutarlo una vez al mes está bien— y tu portátil no necesita alojar una instancia de Grafana para hacerlo.

Si tu monitor almacena datos en SQLite (ova lo hace, en ~/Library/Application Support/ova/), la exportación es un comando:

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

Luego cárgalo en Python o R o DuckDB y tienes la capa de trabajo pesado de una pila Grafana con una consulta y cero infraestructura.

¿Por qué no Grafana?

Grafana, Prometheus, InfluxDB, Loki: son grandes herramientas para flotas. Para una sola Mac, la sobrecarga operativa es desproporcionada. Necesitarías:

  • Una instancia de Prometheus corriendo localmente (RAM, disco, puerto)
  • Un exportador a medida que lea la salida de proc_pidinfo o nettop (alguien tiene que escribirlo y mantenerlo)
  • Grafana corriendo localmente (proceso Java/Go, puerto, base de datos)
  • Paneles que crear y versionar
  • Una razón para entrar al panel regularmente (no lo harás)

Tras el resplandor inicial del sábado por la tarde, la pila se pudre. Actualizas macOS y el exportador se rompe. Grafana pide un restablecimiento de contraseña. Te olvidas durante tres semanas y te pierdes la mismísima anomalía para la que lo construiste.

Una app de barra de menú se quita de en medio. Ves la tasa cada vez que miras al reloj. El flujo de un panel de ancho de banda en macOS está integrado en tu rutina, no en un sitio web que tengas que recordar visitar.

Configuración paso a paso

En concreto, aquí va cómo armar tu panel en 15 minutos.

Paso 1: instala la app de barra de menú

Instala ova. Pesa unos 3 MB. Arrástralo a Aplicaciones, lánzalo, permite el permiso solicitado para leer estadísticas de red, y listo. Inmediatamente empieza a muestrear a aproximadamente 1 Hz y a mostrar la tasa actual en la barra de menú.

Paso 2: configura la visualización de la barra de menú

La mayoría de las herramientas de ancho de banda en barra de menú te permiten elegir qué mostrar. Opciones comunes:

  • Tasa actual de subida/bajada (p. ej., ↓ 2,1 MB/s ↑ 80 KB/s)
  • Una pequeña sparkline del último minuto
  • Solo un icono que se ilumina cuando hay actividad

Elige una. La de dos números es la más densa. La sparkline es la más "visible de un vistazo". No hay respuesta equivocada; elige la que vas a leer realmente.

Paso 3: fija unas pocas apps

Algunos monitores te permiten marcar ciertas apps como "vigiladas": aparecen primero en la vista de desglose. Fijaciones útiles para la mayoría:

  • El navegador en el que vives (Chrome, Safari, Arc, Firefox)
  • Tu chat de trabajo (Slack, Discord, Teams)
  • Tus herramientas de desarrollo (Docker, VS Code, tu simulador si haces móvil)
  • Sincronización en la nube (Dropbox, el cloudd de iCloud, Google Drive)

Sabrás en una semana qué apps quieres realmente fijadas y cuáles fueron optimistas.

Paso 4: verifica que el historial funciona

Todo el sentido de la capa reciente es poder retroceder. Abre el popover o ventana, elige un rango de tiempo como "últimas 24 horas" y confirma que ves un gráfico con picos y valles. Si no, la app no está persistiendo datos y tienes un nettop glorificado. Pasa a otra herramienta.

Paso 5: programa una exportación mensual

Añade un recordatorio de calendario para el primero del mes: "Exportar datos de ancho de banda, ejecutar notebook de heatmap". Cinco minutos una vez al mes. Esa es tu capa de archivo.

Qué mirar

Una vez tienes el panel corriendo, aquí van las preguntas que vale la pena revisar con una cadencia regular.

Vistazo diario

Abre la vista de desglose. Escanea por sorpresas. Si Chrome está arriba, eso es normal. Si cloudd está arriba durante horas de trabajo, pregúntate por qué (probablemente iCloud poniéndose al día, posiblemente Photos subiendo). Si algo que no reconoces está arriba, investiga.

Semanal

Mira el total por día. ¿Es consistente? Un pico de 5x en un solo día significa o que hiciste algo distinto (descargaste un juego, tuviste una llamada grande) o que algo automático corrió (Time Machine a un destino remoto, actualización del sistema).

Mensual

Ejecuta el heatmap. Apps top por mes. Compara con el mes anterior. Las tendencias a lo largo del tiempo te dicen si tu ancho de banda está subiendo lentamente, normalmente por una nueva app que olvidaste cuestionar.

Ve ova en acción

Un monitor de ancho de banda en la barra de menú visible de un vistazo: local, firmado, ~3 MB.

Descargar para macOS

Un ejemplo trabajado

Un patrón real de la configuración de un usuario:

  • Tasa en vivo: pequeña sparkline en la barra de menú. Los vistazos cuestan cero tiempo.
  • Vista por app: enlazada a un atajo que abre el popover de ova.
  • Revisión semanal: cada viernes por la tarde, el usuario abre la vista de 7 días y anota las tres apps top. Cualquier cosa en el top tres que no estaba el viernes anterior recibe una frase en su diario explicando por qué.
  • Exportación mensual: un trabajo de launchd vuelca un CSV el primero de cada mes. Un pequeño notebook de Observable plotea el heatmap y la lista top-10-por-app. Tiempo total: 90 segundos, una vez al mes.

Ese es el sistema entero. Sin Prometheus, sin Grafana, sin proxy inverso, sin auth, sin puertos, sin logs que rotar. El "panel" es la barra de menú más un notebook que se abre una vez al mes.

Cuándo realmente sí necesitas un servidor

Hay casos donde una pila centralizada es correcta:

  • Gestionas varias Macs (un equipo pequeño, un hogar, una flota de máquinas de build)
  • Quieres correlaciones con datos no-Mac (logs del router, tráfico de domótica, uso de VPN del trabajo)
  • Tienes una necesidad real de alertas en tiempo real ("avísame si la subida supera los 100 MB/s durante más de cinco minutos")

Esos casos justifican el coste operativo. Para una Mac personal, no.

Para terminar

Un panel de ancho de banda en macOS que los usuarios realmente abrirán no necesita una pila. Necesita una app de barra de menú que siempre muestre la tasa actual, un desglose por app para cuando algo se vea raro, y una ruta de exportación para la rara inmersión profunda. Eso es todo.

Si quieres la versión simple, instala ova: unos 3 MB, macOS 14 y posteriores, muestrea aproximadamente a 1 Hz, todos los datos se quedan en ~/Library/Application Support/ova/ en tu máquina, sin cuenta requerida, pago único con actualizaciones de por vida y devolución a 14 días. Cinco minutos desde la descarga al panel, sin ficheros compose a la vista.