Saltar al contenido principal

Servidor de métricas

Transmite métricas del dispositivo en tiempo real a dispositivos cercanos a través de Bluetooth LE.

Servidor de métricas: tarjeta de estado con nombre de servidor configurable, controles del servidor, cantidad de clientes conectados y métricas actuales.
Establece un nombre de servidor personalizado o elige entre preajustes como nombre comercial, identificador de modelo o nombre del dispositivo.
Tarjeta de métricas actuales mostrando uso de CPU, cantidad de núcleos, nombre del dispositivo y un gráfico en tiempo real del historial de uso.

Visión general

El servidor de métricas convierte tu dispositivo en un periférico Bluetooth Low Energy (BLE) que transmite métricas del dispositivo en tiempo real a dispositivos cercanos que ejecutan Cliente de métricas. Los clientes conectados reciben un flujo continuo de datos que incluye uso de CPU, actividad de CPU por núcleo, información de identidad del dispositivo y marcas de tiempo — todo transmitido una vez por segundo a través de características de notificación BLE.

Esto es útil para monitorear el rendimiento de un dispositivo desde otro en tiempo real, sin requerir una red Wi-Fi ni ninguna infraestructura.

Tabla de contenido

Secciones principales

El servidor de métricas es una pantalla única con desplazamiento que contiene cuatro tarjetas:

  • Servidor de métricas — estado y configuración del nombre del servidor
  • Controles del servidor — iniciar/detener la transmisión BLE
  • Clientes conectados — cantidad de dispositivos suscritos
  • Métricas actuales — vista previa en tiempo real de los datos que se están transmitiendo

Tarjeta de estado del servidor de métricas

La tarjeta superior muestra:

  • Un indicador de ejecución — un punto de color con una etiqueta:
    • En ejecución (verde) — el servidor está anunciando y transmitiendo activamente.
    • Detenido (rojo) — el servidor no está anunciando.
  • Campo Nombre del servidor — un campo de texto editable que determina el nombre que verán otros dispositivos durante el descubrimiento BLE. Consulta Nombre del servidor y preajustes para más detalles.
  • Estado — Activo o Inactivo.
  • Estado de Bluetooth — el estado actual del radio Bluetooth (Encendido, Apagado, No autorizado, No compatible, Reiniciando, Desconocido).
  • Conectados — el número de dispositivos cliente actualmente suscritos al flujo de métricas.
  • Error — cualquier mensaje de error del stack BLE (solo se muestra cuando ocurre un error).

Nombre del servidor y preajustes

El nombre del servidor determina cómo aparece este dispositivo para los usuarios del cliente de métricas durante el descubrimiento. Puedes escribir cualquier nombre personalizado, o usar el menú desplegable Preajustes para aplicar rápidamente una de las opciones integradas:

PreajusteEjemplo
Nombre comercial + identificador de modeloiPhone 16 Pro Max (iPhone17,2)
Solo nombre comercialiPhone 16 Pro Max
Solo identificador de modeloiPhone17,2
Nombre del dispositivoiPhone 16ProMax de Rogerio

El valor predeterminado es Nombre comercial (Identificador de modelo) cuando está disponible.

Cambiar el nombre mientras el servidor está en ejecución reinicia automáticamente el anuncio BLE para que el nuevo nombre surta efecto inmediatamente.

Controles del servidor

La tarjeta de controles del servidor contiene un único botón Iniciar servidor / Detener servidor:

  • Iniciar servidor (verde) — comienza el anuncio BLE y empieza a recopilar métricas de CPU. El servidor comenzará a transmitir datos tan pronto como un cliente se suscriba.
  • Detener servidor (rojo) — detiene el anuncio BLE y para la recopilación de métricas.

Una descripción debajo del botón explica que el servidor transmite métricas a los clientes conectados a través de Bluetooth LE.

Clientes conectados

La tarjeta de clientes conectados muestra:

  • El número de dispositivos cliente actualmente suscritos (mostrado de forma prominente como un número grande).
  • Cuando no hay clientes conectados: un marcador de posición con un icono y un mensaje para iniciar el servidor y usar el cliente de métricas en otro dispositivo.
  • Cuando hay clientes conectados: un mensaje de confirmación mostrando la cantidad (ej. «1 cliente está recibiendo métricas»).

El servidor solo transmite datos cuando al menos un cliente está suscrito. Cuando no hay clientes conectados, el temporizador interno se pausa para conservar recursos.

Métricas actuales

La tarjeta de métricas actuales muestra una vista previa en tiempo real de los datos que se están transmitiendo:

CampoDescripción
Uso de CPUEl porcentaje actual de uso general de CPU de este dispositivo (ej. 30.0%).
Cantidad de núcleosEl número de núcleos de CPU en este dispositivo (ej. 6).
DispositivoEl nombre del dispositivo asignado por el usuario (ej. «iPhone 16ProMax de Rogerio»).

Debajo de estos campos, un gráfico de líneas de Historial de uso muestra el uso de CPU a lo largo del tiempo, dando una sensación visual de cómo fluctúa la carga de trabajo.

Datos transmitidos

El servidor transmite dos características de notificación BLE una vez por segundo a todos los clientes suscritos:

Característica de resumen

Contiene los siguientes campos en una carga binaria compacta:

CampoTipoDescripción
Nombre del servidorString (hasta 32 caracteres)El nombre configurable mostrado en la tarjeta de estado.
Modelo del dispositivoString (hasta 32 caracteres)El nombre comercial del dispositivo (ej. «iPhone 16 Pro Max»).
Nombre del dispositivoString (hasta 32 caracteres)El nombre del dispositivo asignado por el usuario desde Ajustes de iOS.
Uso de CPUFloat (32 bits)Uso general de CPU como porcentaje (0–100).
Cantidad de núcleosUInt16Número de núcleos de CPU.
Marca de tiempoUInt64Milisegundos desde la época Unix.

Característica por núcleo

Contiene datos de uso de CPU por núcleo:

CampoTipoDescripción
Cantidad de núcleosUInt8Número de núcleos (hasta 32).
Uso por núcleoFloat[]Un float de 32 bits por núcleo, representando el porcentaje de uso de ese núcleo.
Marca de tiempoUInt64Milisegundos desde la época Unix.

Cómo usar con el cliente de métricas

  1. En el dispositivo que deseas observar, abre Herramientas > Servidor de métricas y toca Iniciar servidor.
  2. En otro dispositivo, abre Herramientas > Cliente de métricas.
  3. En la pestaña Descubrimiento, encuentra el servidor en la lista y toca Conectar.
  4. El cliente cambia automáticamente a la pestaña Métricas para mostrar datos en tiempo real.

Detalles técnicos

  • El servidor actúa como un Periférico BLE usando CBPeripheralManager. Anuncia un servicio GATT personalizado con dos características de solo notificación (resumen y por núcleo).
  • Los datos se transmiten una vez por segundo cuando al menos un cliente está suscrito. El temporizador se pausa cuando no hay clientes conectados.
  • Todos los valores numéricos de múltiples bytes en la carga son little-endian, como los produce nativamente Swift en plataformas Apple.
  • El servidor usa restauración de estado de CoreBluetooth, lo que le permite recuperar el estado de anuncio si la app es relanzada por el sistema.
  • La contrapresión BLE se maneja elegantemente — si la cola de transmisión está llena, las actualizaciones se encolan y se drenan cuando el sistema señala disponibilidad a través de peripheralManagerIsReady(toUpdateSubscribers:).
  • Las métricas de CPU se muestrean del mismo ToolCPUViewModel usado por la herramienta Monitor de CPU, asegurando lecturas consistentes.

Notas y limitaciones

  • Esta herramienta usa Bluetooth LE, no redes Wi-Fi. Los dispositivos deben estar dentro del alcance BLE (típicamente 10–30 metros en interiores).
  • La disponibilidad de BLE, el comportamiento en segundo plano y la estabilidad de la conexión varían según el dispositivo y la versión del sistema operativo.
  • En visionOS, el servidor de métricas no está disponible porque el rol de periférico BLE no es compatible.
  • El nombre del servidor está limitado a 32 caracteres debido a restricciones de tamaño de la carga BLE.
  • Actualmente solo se transmiten métricas relacionadas con la CPU. Otras métricas del dispositivo (memoria, temperatura, etc.) no están incluidas en el flujo BLE.