Monitoramento com colibri-sdk-go e OpenTelemetry
Aprenda, em minutos, a instrumentar seus serviços Go com colibri-sdk-go e OpenTelemetry. Suba o stack com docker-compose, configure as variáveis de ambiente e visualize seus traces no Jaeger — com exemplos práticos, módulos reais e dicas de melhores práticas para observabilidade de ponta a ponta.
Estrutura do exemplo
-
Módulos de exemplo:
- school-module
- finantial-module
-
Serviços de apoio (dev/):
- otel-collector
- localstack
- postgres
Pré‑requisitos
- Docker e Docker Compose
- Go 1.24+
- Make
Como subir o ambiente de observabilidade
O projeto de exemplo já fornece um docker-compose com os serviços necessários prontos para uso.
- Faça o clone do repositório
git clone https://github.com/colibriproject-dev/colibri-sdk-go-examples.git
- Compile os projetos com o comando:
make build
- Suba os serviços de infraestrutura com o comando:
make start
- Acesse o Jeager na url http://localhost:16686/
Configuração OpenTelemetry no SDK
O SDK colibri-sdk-go já inclui integração com OTel. Veja o arquivo:
Os módulos de exemplo consomem essa configuração. Ao iniciar cada serviço, o SDK inicializa o provedor de traces e exportadores conforme as variáveis de ambiente.
Variáveis de ambiente relevantes (exemplos)
- OTEL_EXPORTER_OTLP_ENDPOINT: apontar para o Collector (ex.: http://otel-collector:4317)
- OTEL_SERVICE_NAME: nome do serviço (ex.: school-api)
- OTEL_RESOURCE_ATTRIBUTES: atributos extras (ex.: deployment.environment=dev)
- COLIBRI_LOG_LEVEL: nível de log
Confira os arquivos .env em cada módulo:
- school-module/.env
- finantial-module/.env
Gerando tracing
- Crie um curso no school-module:
curl --request POST \
--url http://localhost:8080/public/v1/courses \
--header 'Content-Type: application/json' \
--data '{"name": "Course 001","value": 100}'
- Com o id retornado na criação do curso, execute uma busca:
curl --request GET --url http://localhost:8080/public/v1/courses/fe6fa672-8ce0-11f0-a8e8-a3ca18a3537e
-
Para mais requests veja a documentação dos projetos:
- School Swagger UI: http://localhost:8080/swagger/index.html
- Financial Swagger UI: http://localhost:8081/swagger/index.html
-
Acesse o Jaeger na url http://localhost:16686/ e veja os traces gerados.
Explorando métricas e traces
Exemplo de tracing para a chamada REST de busca de curso por id:
Boas práticas
- Nomeie OTEL_SERVICE_NAME por módulo para facilitar filtros.
- Propague context.Context em toda a call stack.
- Anexe atributos-chave (user_id, order_id) como span attributes quando relevante.
- Defina sampling apropriado no Collector para ambientes de produção.