Sobes.tech
Senior

Que métricas? Com que ferramentas vamos a registrar essas métricas?

sobes.tech IA

Resposta da IA

As métricas são indicadores quantitativos que permitem monitorizar o estado e o desempenho de uma aplicação ou sistema. No contexto do Golang e do desenvolvimento de serviços, geralmente recolhem-se métricas como tempo de resposta, número de pedidos, erros, uso de memória e CPU.

Para recolher e exportar métricas, frequentemente utilizam-se ferramentas e bibliotecas, por exemplo:

  • Prometheus — sistema de monitorização e recolha de métricas com suporte ao modelo pull.
  • OpenTelemetry — padrão para recolha de telemetria (métricas, logs, rastreamentos).
  • Bibliotecas cliente de Go — por exemplo, prometheus/client_golang para integração com Prometheus.

Exemplo de uso do Prometheus em 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 pedidos 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("Olá, métricas!"))
}

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

Desta forma, as métricas ajudam a monitorizar o estado da aplicação e a reagir atempadamente a problemas.