Monitoreo de ancho de banda para desarrolladores y administradores de sistemas en Mac
Una configuración práctica de monitoreo de ancho de banda para desarrolladores y sysadmins en macOS: visibilidad por proceso, ganchos para scripts y tácticas de depuración.
- Developer tools
- macOS
- Network monitoring
- Sysadmin
Una suite de tests que debería tardar 90 segundos está tardando 14 minutos, y CI está expirando. La ejecución local también es lenta. Conectas un profiler: la CPU está bien. La memoria está bien. Luego notas que la fixture de tests está haciendo unos cientos de peticiones HTTPS salientes por ejecución porque alguien añadió una llamada a una API real al hook de setup hace tres meses, y ahora cada PR está martilleando un endpoint sandbox al que acaban de aplicar rate-limit. Monitorizar el ancho de banda lo habría detectado el primer día.
Para desarrolladores y sysadmins en Mac, la observabilidad de red es una de esas habilidades que se compone. Una vez que sabes qué herramienta responde a qué pregunta, dejas de perder horas en problemas que en realidad son un proceso descontrolado haciendo algo obvio. Este artículo es la pila de trabajo: cuándo recurrir a tcpdump, cuándo a Wireshark, cuándo a nettop, cuándo a un monitor por app como ova, y cómo combinarlos. Si has estado buscando un monitor de ancho de banda para desarrolladores en Mac, el objetivo aquí es el árbol de decisión práctico, no el recorrido de marketing.
Los cuatro niveles, brevemente
Las herramientas de diagnóstico cubren cuatro niveles de abstracción:
- Bytes de paquete —
tcpdump. Cada byte en el cable, más cabeceras. El nivel más bajo. Bueno para capturar y luego analizar. - Inspección de paquetes — Wireshark. Los datos de tcpdump, decodificados en capas de protocolo legibles. Genial para entender qué está haciendo una conexión.
- En vivo por proceso —
nettop. Nativo de macOS, muestra conexiones actuales y tasas por proceso. - Agregado por app a lo largo del tiempo — ova. App de barra de menú, líneas de tiempo recorribles, agrupación de procesos auxiliares.
El truco para usarlas bien es emparejar el nivel con la pregunta. Si preguntas "cuánto ancho de banda usó nuestra suite de tests la semana pasada", tcpdump es la respuesta equivocada; ova o una herramienta similar de historial por app es la correcta. Si preguntas "por qué esta conexión HTTPS específica es lenta", nettop no te lo dirá: necesitas Wireshark.
tcpdump: la vista de bytes en el cable
tcpdump está en cada Mac. Es la herramienta correcta cuando:
- Sospechas un problema de protocolo específico (fallos de handshake TLS, retransmisiones, fragmentación).
- Necesitas capturar tráfico para análisis posterior.
- Estás trabajando en una máquina de clase servidor donde no hay herramientas con interfaz gráfica disponibles.
Una captura útil por defecto:
sudo tcpdump -i en0 -n -s 0 -w capture.pcap-i en0— captura en la interfaz Wi-Fi (usaen1para ethernet en Macs con ambas, o consultaifconfig).-n— no resolver nombres de host (mucho más rápido).-s 0— capturar el paquete completo, no solo cabeceras.-w capture.pcap— escribir a un archivo pcap legible por Wireshark.
Para filtrar:
sudo tcpdump -i en0 -n 'host api.example.com and port 443'
sudo tcpdump -i en0 -n 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'El primero captura solo tráfico hacia un nombre de host específico en HTTPS. El segundo captura solo establecimiento/cierre de conexiones TCP, útil para contar conexiones sin ahogarse en bytes de payload.
Wireshark: decodificación de protocolo
Wireshark lee archivos pcap y los decodifica en una jerarquía legible: trama Ethernet, paquete IP, segmento TCP, registro TLS, petición HTTP. Gratis, local, sin componente de nube. Instala vía Homebrew:
brew install --cask wiresharkEl lenguaje de filtros de visualización es la magia. Algunos filtros de alto impacto:
http.response.code >= 400— muestra respuestas HTTP fallidas.tcp.analysis.retransmission— muestra retransmisiones TCP, a menudo señal de congestión de red o problemas del par.tls.handshake.type == 1— muestra TLS Client Hellos (uno por conexión).dns and dns.qry.name contains "example.com"— muestra consultas DNS para un dominio específico.
Wireshark es excesivo para "cuánto ancho de banda usó Slack hoy" pero exactamente lo correcto para "por qué esta conexión particular expira a los 30 segundos cuando otras tienen éxito". También es la herramienta correcta cuando tienes un pcap capturado de una máquina cliente y necesitas investigar después del hecho.
nettop: la vista en vivo por proceso
nettop viene con macOS. Es el equivalente nativo más cercano a un monitor en vivo por app:
sudo nettop -P -m routeFlags útiles:
-P— agrupar por proceso.-m route— mostrar información de ruta (qué interfaz).-x— mostrar conteo de bytes (no solo tasas).-c <intervalo>— refresco periódico, p. ej.-c 2.-J bytes_in,bytes_out,interface— elegir columnas específicas a mostrar.
nettop es solo texto, refresca su propia pantalla y funciona por SSH. Es la herramienta correcta cuando necesitas una respuesta rápida de "¿hay algo raro ahora?" en una Mac remota (un runner de CI, la máquina de un compañero a la que estás conectado por SSH para triaje).
La desventaja: nettop no tiene historial. En el momento que sales, los datos se han ido.
ova: historial por app con agrupación de auxiliares
ova vive en la barra de menú y proporciona lo que nettop no: historial persistente, líneas de tiempo recorribles y agrupación de procesos auxiliares. Muestreando aproximadamente a 1 Hz, los datos se escriben localmente y se quedan hasta que los borras.
Las dos cosas que ova hace que las herramientas integradas no:
- Agrupación de procesos auxiliares. Chrome crea un PID auxiliar por pestaña; Slack tiene su propia arquitectura de auxiliares; Discord, Telegram, las apps Electron en general hacen esto. nettop los muestra como filas separadas ("Slack Helper (Plugin)", "Slack Helper (GPU)", etc.), lo cual es técnicamente correcto pero ilegible. ova los agrupa bajo "Slack" para que la fila sea lo que realmente quieres decir.
- Historial recorrible. "Qué pasó el martes pasado a las 3 PM" se responde haciendo clic y arrastrando en la línea de tiempo. La respuesta de nettop es "ni idea, no estaba corriendo".
Para el día a día de un desarrollador ("¿la build martilleó el registro?", "¿qué test tiró 4 GB?", "¿qué es ese pico recurrente al inicio de cada hora?"), ova responde rápido sin ceremonia. nettop es tu respaldo cuando necesitas "ahora mismo, sin instalación".
Ejemplos concretos
Depurar un martilleo de API
Un equipo se queja de que la API de staging es lenta. Sospechas que un cliente está en un bucle de reintentos. Con ova en la barra de menú en la Mac del desarrollador infractor, recorres al momento de la lentitud y ves la herramienta CLI del equipo picando 80 MB/s durante 15 minutos. Esa es la pista. Abres Wireshark en una captura de 30 segundos y confirmas: cada petición recibe un 503 y el cliente reintenta con un backoff de 100 ms. El bug está en la política de reintentos (exponencial, no constante) y ahora sabes exactamente qué arreglar.
Encontrar un proceso de test descontrolado
CI está bien pero las ejecuciones locales de tests son lentas. Abres ova, ejecutas la suite, recorres el pico. Ves a node tirando 200 MB durante una ventana de 30 segundos. tcpdump filtrado al puerto sospechoso muestra que la fixture de tests está obteniendo datos en vivo de un CDN real cada test, en lugar de usar las fixtures grabadas. Reemplaza con una fixture local, la suite cae a 90 segundos.
Sorpresa de salida desde una librería de proveedor
Una revisión de cumplimiento pregunta si la base de código llama a casa en algún sitio. El análisis estático es parcial; la única respuesta definitiva es "observa la red durante un uso representativo". Corre la app durante una hora con ova; captura la misma hora con tcpdump para verificación. Cruza los destinos vistos en la columna de nombres de host de nettop. Cualquier cosa inesperada se investiga. Este tipo de auditoría es difícil sin historial por app.
Un agente de sincronización descontrolado en la flota de un sysadmin
Mensaje interno de Slack: "mi Mac va lenta". Te conectas por SSH, ejecutas sudo nettop -P -m route. Un agente de copia de seguridad que todos olvidaron que estaba instalado está haciendo una reindexación completa, tirando 30 MB/s sostenidos. Mata el daemon, abre un ticket para arreglar el calendario. Solución de cinco minutos, habría sido una hora sin la herramienta correcta.
Ve ova en acción
Un monitor de ancho de banda en la barra de menú visible de un vistazo: local, firmado, ~3 MB.
Hooks scriptables
Para automatización:
nettop con salida tipo JSON
nettop -P -L 1 -k state,interface_name,rx_dupe,rx_ooo,re-tx,rtt_avg,rcvsize,tx_win,tc_class,tc_mgt,cc_algo,P,C,R,W -J bytes_in,bytes_outEsto produce una sola muestra (la flag -L 1) que puedes capturar en un script. Canaliza a awk o jq tras un poco de modelado.
Umbrales de ancho de banda
Un script rápido de "alerta si algún proceso supera X" se puede construir en torno a nettop:
sudo nettop -P -L 1 -J bytes_in,bytes_out -k state,interface_name,P,C,R,W \
| awk 'NR>1 && ($2+$3) > 1000000 {print}'(Tosco, pero funcional.) Para una versión de calidad de producción, mira iftop para tráfico por host o bmon para nivel de interfaz.
tcpdump como vigilante
sudo tcpdump -i en0 -n 'host suspicious.example.com' -w "/tmp/capture-$(date +%Y%m%d-%H%M).pcap" -G 3600 -W 24Rota un archivo de captura de 1 hora, mantiene 24 de ellos. Útil para "no sé cuándo pasa esto pero quiero atraparlo la próxima vez".
Exportaciones de ova
ova escribe su historial localmente. Si necesitas alimentar eso a un panel o informe, la ruta de exportación es el punto de partida correcto: los datos son tuyos, y no hay capa de sincronización de proveedor en el medio.
Elegir el monitor de ancho de banda para desarrolladores Mac que tu flujo realmente necesita
Una matriz corta:
| Pregunta | Herramienta correcta |
|---|---|
| ¿Qué está usando mi red ahora mismo? | nettop, ova |
| ¿Qué usó mi red ayer a las 3 PM? | ova |
| ¿Por qué esta conexión TCP específica es lenta? | Wireshark |
| ¿Hay fallos de handshake TLS? | Wireshark |
| ¿Cuál es el total de bytes general de la última semana? | ova |
| ¿El proceso X está hablando con el host Y? | nettop, tcpdump |
| ¿Capturar para revisión forense después? | tcpdump → pcap |
| ¿Diagnóstico remoto puntual por SSH? | nettop |
El patrón es: nettop y ova para "qué" y "cuándo", tcpdump y Wireshark para "por qué" a nivel de protocolo. La mayoría de las preguntas que enfrenta un desarrollador se responden sin abrir Wireshark: esa es una herramienta de menor frecuencia reservada para problemas de protocolo genuinamente confusos.
Patrones específicos de sysadmin
Si mantienes una flota de Macs (equipo pequeño, estudio de diseño, productora de vídeo), los patrones son diferentes:
- Descubrimiento primero. Ejecuta
sudo nettop -P -m routeen cada máquina vía SSH o gestión remota para ver qué está corriendo. Busca procesos no familiares: señales reveladoras de extensiones de navegador no deseadas, adware empaquetado o software beta olvidado. - Historial en usuarios avanzados. Para los usuarios de red intensos del equipo (editores de vídeo subiendo dailies, desarrolladores empujando artefactos grandes), una herramienta de historial por app atrapa problemas recurrentes sin tener que estar ahí en el momento que pasan.
- Línea base documentada. Captura la salida de nettop para una Mac "buena" y una "que se queja". El diff suele ser obvio.
Qué hacer después
Si estás partiendo de cero en una pila de monitor de ancho de banda para desarrolladores en Mac, instala ova para la vista de historial siempre activa, aprende las tres invocaciones de nettop de arriba y guarda Wireshark en favoritos para cuando lo necesites. Ese es el conjunto de trabajo. La mayoría de los problemas en el día de un desarrollador o sysadmin se resuelven a nivel de app o proceso; las herramientas a nivel de paquete están ahí para los casos más difíciles que aparecen mensualmente, no diariamente.
La suite de tests martilleando una API, el agente de sincronización descontrolado, el runner de CI que está secretamente descargando 8 GB por build: todos son visibles en el momento que tienes la herramienta correcta abierta. El coste son unos minutos de configuración. La recompensa es la próxima vez que algo está "lento sin razón" y la respuesta está en la barra de menú en lugar de dos horas de caza con profiler.