Métricas Prometheus em Swift: integração para aplicativos iOS/macOS

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Métricas Prometheus em Swift (iOS/macOS): monitoramento de aplicativos móveis e desktop



Prometheus é um sistema de monitoramento e alerta de código aberto que coleta métricas na forma de séries temporais. No ecossistema Apple (iOS e macOS), o uso do Prometheus permite rastrear o desempenho dos aplicativos, o comportamento do usuário, o estado da rede e outros indicadores importantes. Neste artigo, veremos como implementar métricas Prometheus em projetos Swift, quais bibliotecas existem para isso e como configurar a exportação de dados.



Por que usar métricas Prometheus em aplicativos móveis?



Aplicativos móveis e desktop geralmente operam em condições de recursos limitados e conexão instável. A coleta de métricas ajuda a:

  • Identificar gargalos de desempenho (atrasos na UI, vazamentos de memória)
  • Rastrear a frequência e os tipos de erros (crash, erros de rede)
  • Analisar o comportamento do usuário (tempo de sessão, telas)
  • Configurar alertas para valores críticos (por exemplo, tempo de resposta da API > 5 seg)


Principais tipos de métricas Prometheus



Prometheus suporta quatro tipos principais de métricas que podem ser implementadas em Swift:



  • Counter (contador) — valor monotonicamente crescente (número de requisições, erros)
  • Gauge (medidor) — valor arbitrário que pode aumentar e diminuir (memória atual, usuários ativos)
  • Histogram (histograma) — distribuição de valores em intervalos definidos (tempo de execução de funções)
  • Summary (sumário) — distribuição com quantis (latências)


Bibliotecas para Swift



Atualmente, a biblioteca mais popular para trabalhar com Prometheus em Swift é SwiftPrometheus. Ela fornece uma API simples para criar e registrar métricas, além de suportar exportação no formato compatível com Prometheus.



Instalação via Swift Package Manager:

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


Exemplos de código em Swift



1. Criando um contador de requisições à API



import SwiftPrometheus

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

// Incremento a cada requisiçãoapiRequests.inc(["endpoint": "/users"])apiRequests.inc(["endpoint": "/posts"])


2. Gauge para monitoramento de memória



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

// Atualização quando a memória mudamemoryGauge.set(Double(reportMemoryUsage()))


3. Histograma de tempo de carregamento de dados



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()// ... carregamento de dadoslet elapsed = CFAbsoluteTimeGetCurrent() - startloadDuration.observe(elapsed)


Exportação de métricas para Prometheus



Para que o Prometheus possa coletar métricas, seu aplicativo deve fornecer um endpoint que retorne dados no formato de texto simples (plain text exposition format). Para iOS/macOS, isso pode ser feito através de um servidor HTTP local (por exemplo, usando Network.framework ou bibliotecas de terceiros).



Exemplo de um servidor HTTP simples para exportação:



import SwiftPrometheusimport Network

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

Recommendations