Biblioteca de infraestrutura Go para monitoramento e observabilidade, com foco inicial em medir o tempo de execução de funções arbitrárias.
go get github.com/iamviniciuss/observability_goPara usar uma versão específica:
go get github.com/iamviniciuss/[email protected]import (
"fmt"
"github.com/iamviniciuss/observability_go/pkg/timer"
)
func main() {
// Medir tempo de execução de uma função
resultado, duracao := timer.TimeFunc(func() string {
// código a ser medido
return "resultado"
})
fmt.Printf("Resultado: %s, Duração: %s\n", resultado, duracao)
}import (
"fmt"
"github.com/iamviniciuss/observability_go/pkg/timer"
)
func main() {
// Decorar função com medição de tempo e callback personalizado
funcaoMedida := timer.WithTiming(
func() int {
// código a ser medido
return 42
},
func(duracao time.Duration) {
fmt.Printf("Função executada em: %s\n", duracao)
},
)
resultado := funcaoMedida()
fmt.Printf("Resultado: %d\n", resultado)
}import "github.com/iamviniciuss/observability_go/pkg/timer"
func minhaFuncao() {
// Medir tempo do escopo inteiro
defer timer.MeasureTime("operação completa")()
// Código...
{
// Medir tempo de um bloco específico
defer timer.MeasureTime("sub-operação")()
// Código do bloco
}
// Mais código...
}Veja exemplos completos no diretório examples.
Este projeto segue Versionamento Semântico 2.0.0:
- MAJOR: Alterações incompatíveis com versões anteriores
- MINOR: Adição de funcionalidades mantendo compatibilidade
- PATCH: Correções de bugs mantendo compatibilidade
Para mais informações sobre o processo de versionamento, consulte o guia de versionamento.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.
Para contribuir com o projeto:
- Faça um fork do repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Faça commit das suas alterações seguindo Conventional Commits
- Envie um pull request
- ✅ Implementação básica (medição de tempo)
- ⬜ Integração com OpenTelemetry
- ⬜ Exportação de métricas
- ⬜ Rastreamento de contexto
MIT