Métricas de Prometheus en Swift: integración para aplicaciones iOS/macOS

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Métricas de Prometheus en Swift (iOS/macOS): monitoreo de aplicaciones móviles y de escritorio



Prometheus es un sistema de monitoreo y alerta de código abierto que recopila métricas en forma de series temporales. En el ecosistema de Apple (iOS y macOS), el uso de Prometheus permite rastrear el rendimiento de las aplicaciones, el comportamiento de los usuarios, el estado de la red y otros indicadores importantes. En este artículo, veremos cómo implementar métricas de Prometheus en proyectos Swift, qué bibliotecas existen para ello y cómo configurar la exportación de datos.



¿Por qué son necesarias las métricas de Prometheus en aplicaciones móviles?



Las aplicaciones móviles y de escritorio a menudo funcionan en condiciones de recursos limitados y conexión inestable. La recopilación de métricas ayuda a:

  • Identificar cuellos de botella en el rendimiento (retrasos en la UI, fugas de memoria)
  • Rastrear la frecuencia y los tipos de errores (crash, errores de red)
  • Analizar el comportamiento del usuario (duración de la sesión, pantallas)
  • Configurar alertas sobre valores críticos (por ejemplo, tiempo de respuesta de la API > 5 seg)


Tipos principales de métricas de Prometheus



Prometheus admite cuatro tipos principales de métricas que se pueden implementar en Swift:



  • Counter (contador) — valor que aumenta monótonamente (número de solicitudes, errores)
  • Gauge (indicador) — valor arbitrario que puede aumentar y disminuir (memoria actual, usuarios activos)
  • Histogram (histograma) — distribución de valores en intervalos definidos (tiempo de ejecución de funciones)
  • Summary (resumen) — distribución con cuantiles (latencia)


Bibliotecas para Swift



Actualmente, la biblioteca más popular para trabajar con Prometheus en Swift es SwiftPrometheus. Proporciona una API simple para crear y registrar métricas, y también admite la exportación en un formato compatible con Prometheus.



Instalación a través de Swift Package Manager:

// Package.swiftdependencies: [    .package(url: "https://github.com/reddavis/SwiftPrometheus.git", from: "1.0.0")]


Ejemplos de código en Swift



1. Creación de un contador de solicitudes a la API



import SwiftPrometheus

let prometheus = Prometheus()let apiRequests = prometheus.createCounter( named: "api_requests_total", help: "Total number of API requests", labels: ["endpoint"])

// Incremento en cada solicitudapiRequests.inc(["endpoint": "/users"])apiRequests.inc(["endpoint": "/posts"])


2. Gauge para rastrear la memoria



let memoryGauge = prometheus.createGauge(    named: "app_memory_bytes",    help: "Current memory usage in bytes")

// Actualización al cambiar la memoriamemoryGauge.set(Double(reportMemoryUsage()))


3. Histograma del tiempo de carga de datos



let loadDuration = prometheus.createHistogram(    named: "data_load_duration_seconds",    help: "Histogram of data loading time",    buckets: [0.1, 0.5, 1.0, 2.0, 5.0])

let start = CFAbsoluteTimeGetCurrent()// ... carga de datoslet elapsed = CFAbsoluteTimeGetCurrent() - startloadDuration.observe(elapsed)


Exportación de métricas a Prometheus



Para que Prometheus pueda recopilar métricas, su aplicación debe proporcionar un endpoint que devuelva datos en formato de texto plano (plain text exposition format). Para iOS/macOS, esto se puede hacer a través de un servidor HTTP local (por ejemplo, usando Network.framework o bibliotecas de terceros).



Ejemplo de un servidor HTTP simple para exportación:



import SwiftPrometheusimport Network

class MetricsServer { let prometheus: Prometheus var listener: NWListener? init(prometheus: Prometheus, port: UInt16 = 9090) { self.prometheus = prometheus startServer(port: p

Recommendations