Métricas Prometheus em Swift: monitoramento de 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)

Prometheus é um poderoso sistema de monitoramento e alerta de código aberto que coleta métricas de aplicativos alvo via HTTP. No ecossistema Swift para iOS e macOS, existem várias bibliotecas que permitem exportar métricas no formato Prometheus. Neste artigo, vamos explorar a biblioteca SwiftPrometheus — uma ferramenta leve para coleta e exportação de métricas em aplicativos Swift.



O que é SwiftPrometheus?

SwiftPrometheus é uma biblioteca cliente para Swift que implementa a especificação Prometheus. Ela permite criar três tipos principais de métricas: Counter (contador), Gauge (medidor) e Histogram (histograma). A biblioteca é totalmente escrita em Swift, suporta iOS 13+, macOS 10.15+, watchOS 6+ e tvOS 13+.



Instalação

Adicione a dependência ao seu Package.swift:

// swift-tools-version:5.5import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/QuickBirdEng/SwiftPrometheus.git", from: "2.0.0") ], targets: [ .target( name: "MyApp", dependencies: ["SwiftPrometheus"] ) ])


Ou via CocoaPods no Podfile:

pod 'SwiftPrometheus', '~> 2.0'


Tipos principais de métricas

  • Counter — contador monotonicamente crescente (ex.: número de requisições).
  • Gauge — valor que pode diminuir e aumentar (ex.: temperatura atual).
  • Histogram — distribuição de valores em intervalos definidos (ex.: tempo de resposta).


Exemplo de uso do Counter

import SwiftPrometheus

let prometheus = Prometheus()let httpRequests = prometheus.createCounter(for: "http_requests_total", help: "Total number of HTTP requests", labels: ["method", "path"])

httpRequests.inc() // +1httpRequests.inc(5) // +5httpRequests.labels(["GET", "/api/v1/users"]).inc() // com rótulos


Exemplo de uso do Gauge

let temperature = prometheus.createGauge(for: "device_temperature_celsius",                                         help: "Current device temperature")

temperature.set(36.5) // definir valortemperature.inc(2.0) // aumentar em 2temperature.dec(1.0) // diminuir em 1


Exemplo de uso do Histogram

let requestDuration = prometheus.createHistogram(for: "request_duration_seconds",                                                help: "Request duration in seconds",                                                buckets: [0.1, 0.5, 1.0, 2.5, 5.0])

requestDuration.observe(0.3) // registrar valor


Exportação de métricas no formato Prometheus

Para exportar, crie um endpoint HTTP que forneça as métricas em formato de texto. Exemplo para Vapor (lado do servidor):

import Vaporimport SwiftPrometheus

func routes(_ app: Application) throws { app.get("metrics") { req in let metrics = prometheus.collect() return Response(body: .init(string: metrics)) }}


Para aplicativos iOS/macOS, você pode usar o URLSession integrado para enviar métricas ao servidor Prometheus:

func sendMetrics() {    let metrics = prometheus.collect()    var request = URLRequest(url: URL(string: "https://pushgateway.example.org/metrics")!)    request.httpMethod = "POST"    request.httpBody = metrics.data(using: .utf8)    URLSession.shared.dataTask(with: request).resume()}


Recursos adicionais

  • Rótulos

Recommendations