Sobes.tech
Senior

¿Qué métricas? ¿Con qué herramientas vamos a registrar estas métricas?

sobes.tech AI

Respuesta de la IA

Las métricas son indicadores cuantitativos que permiten monitorear el estado y el rendimiento de una aplicación o sistema. En el contexto de Golang y el desarrollo de servicios, generalmente se recopilan métricas como tiempo de respuesta, número de solicitudes, errores, uso de memoria y CPU.

Para recopilar y exportar métricas, a menudo se utilizan herramientas y bibliotecas, por ejemplo:

  • Prometheus — sistema de monitoreo y recopilación de métricas con soporte para modelo pull.
  • OpenTelemetry — estándar para la recopilación de telemetría (métricas, logs, trazas).
  • Bibliotecas cliente de Go — por ejemplo, prometheus/client_golang para integración con Prometheus.

Ejemplo de uso de Prometheus en Go:

import (
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
    "net/http"
)

var (
    requestCount = prometheus.NewCounterVec(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Número total de solicitudes HTTP",
        },
        []string{"path"},
    )
)

func init() {
    prometheus.MustRegister(requestCount)
}

func handler(w http.ResponseWriter, r *http.Request) {
    requestCount.WithLabelValues(r.URL.Path).Inc()
    w.Write([]byte("¡Hola, métricas!"))
}

func main() {
    http.HandleFunc("/", handler)
    http.Handle("/metrics", promhttp.Handler())
    http.ListenAndServe(":8080", nil)
}

De esta manera, las métricas ayudan a monitorear el estado de la aplicación y a reaccionar oportunamente ante problemas.