Servidor de métricas
Transmite métricas del dispositivo en tiempo real a dispositivos cercanos a través de Bluetooth LE.
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
- Tarjeta de estado del servidor de métricas
- Nombre del servidor y preajustes
- Controles del servidor
- Clientes conectados
- Métricas actuales
- Datos transmitidos
- Cómo usar con el cliente de métricas
- Detalles técnicos
- Notas y limitaciones
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:
| Preajuste | Ejemplo |
|---|---|
| Nombre comercial + identificador de modelo | iPhone 16 Pro Max (iPhone17,2) |
| Solo nombre comercial | iPhone 16 Pro Max |
| Solo identificador de modelo | iPhone17,2 |
| Nombre del dispositivo | iPhone 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:
| Campo | Descripción |
|---|---|
| Uso de CPU | El porcentaje actual de uso general de CPU de este dispositivo (ej. 30.0%). |
| Cantidad de núcleos | El número de núcleos de CPU en este dispositivo (ej. 6). |
| Dispositivo | El 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:
| Campo | Tipo | Descripción |
|---|---|---|
| Nombre del servidor | String (hasta 32 caracteres) | El nombre configurable mostrado en la tarjeta de estado. |
| Modelo del dispositivo | String (hasta 32 caracteres) | El nombre comercial del dispositivo (ej. «iPhone 16 Pro Max»). |
| Nombre del dispositivo | String (hasta 32 caracteres) | El nombre del dispositivo asignado por el usuario desde Ajustes de iOS. |
| Uso de CPU | Float (32 bits) | Uso general de CPU como porcentaje (0–100). |
| Cantidad de núcleos | UInt16 | Número de núcleos de CPU. |
| Marca de tiempo | UInt64 | Milisegundos desde la época Unix. |
Característica por núcleo
Contiene datos de uso de CPU por núcleo:
| Campo | Tipo | Descripción |
|---|---|---|
| Cantidad de núcleos | UInt8 | Número de núcleos (hasta 32). |
| Uso por núcleo | Float[] | Un float de 32 bits por núcleo, representando el porcentaje de uso de ese núcleo. |
| Marca de tiempo | UInt64 | Milisegundos desde la época Unix. |
Cómo usar con el cliente de métricas
- En el dispositivo que deseas observar, abre Herramientas > Servidor de métricas y toca Iniciar servidor.
- En otro dispositivo, abre Herramientas > Cliente de métricas.
- En la pestaña Descubrimiento, encuentra el servidor en la lista y toca Conectar.
- 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
ToolCPUViewModelusado 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.