4
ozono
1 min de leitura ·

[Projeto] GoLens: Métricas easy-config para Go usando apenas a biblioteca padrão

Olá pessoal,

Para resolver a necessidade de monitorar métricas nos meus projetos pessoais, escrevi o GoLens, um pacote em Go inspirado no Swagger que permite fazer o acompanhamento de métricas de forma simples e rápida, tal como o Swagger o faz para documentação e descrição de APIs, endpoints e schemas.

A ideia principal é aproveitar o que o Go tem de melhor: footprint super leve e facilidade de deploy em um único binário. Em vez de subir uma stack inteira de monitoramento só para ver o que está acontecendo na aplicação, o GoLens resolve isso no próprio serviço.

O que ele traz out-of-the-box:

  • Um dashboard interativo (feito com HTMX) e fácil de apresentar na rota /metrics.
  • Coleta automática de métricas RED (Rate, Errors, Duration) usando um middleware easy-config.
  • Ingestão non-blocking (usando canais limitados) para garantir que a coleta nunca impacte a performance das requisições.
  • Suporte nativo a OTLP, para quando o projeto crescer e você precisar exportar os dados para um Prometheus ou Grafana.

Quem tiver interesse em dar uma olhada, usar ou até deixar um feedback, o código está aberto no GitHub

Carregando publicação patrocinada...
3

Achei boa a proposta de não obrigar uma stack inteira de observabilidade logo no começo. Para projetos pequenos em Go, às vezes o custo operacional de Prometheus, Grafana e exporters é maior do que o problema inicial.

Uma dúvida: como você está pensando em tratar cardinalidade nas métricas?

Mesmo em um dashboard simples, labels como rota dinâmica, usuário, tenant ou erro bruto podem crescer rápido e deixar a coleta menos previsível. Talvez valha ter algum limite ou normalização por padrão, para manter essa ideia de footprint leve também no volume de dados.

1

O que já está feito cobre a minha necessidade até o momento, mas são pontos interessantes a considerar caso a intenção seja de tornar a lib completa.
Agradeço a sugestão.

2
1