Observabilidade
colibri.InitializeApp() ativa OpenTelemetry quando OTEL_EXPORTER_OTLP_ENDPOINT está configurado.
Configurar exportação
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_SERVICE_NAME=school-module
Informe a URL base, sem /v1/traces ou /v1/metrics; o SDK adiciona os caminhos dos sinais.
| Variável | Uso |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint OTLP HTTP para traces e métricas |
OTEL_EXPORTER_OTLP_HEADERS | Cabeçalhos chave=valor separados por vírgula |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Endpoint alternativo apenas para métricas |
OTEL_SERVICE_NAME | Nome do serviço; usa APP_NAME por padrão |
Instrumentação automática
Quando o exportador está ativo, o SDK registra:
- requisições do servidor Fiber;
- chamadas do cliente HTTP;
- operações PostgreSQL;
- métricas de runtime do Go;
- produção e consumo de mensagens.
Criar um trace manual
import (
"github.com/colibriproject-dev/colibri-sdk-go/pkg/base/monitoring"
monitoringbase "github.com/colibriproject-dev/colibri-sdk-go/pkg/base/monitoring/colibri-monitoring-base"
)
transaction, traceCtx := monitoring.StartTransaction(
ctx,
"ProcessOrder",
monitoringbase.SpanKindInternal,
)
defer monitoring.EndTransaction(transaction)
segment := monitoring.StartTransactionSegment(
traceCtx,
"LoadCustomer",
map[string]string{"customer.type": "business"},
)
defer monitoring.EndTransactionSegment(segment)
Use o contexto retornado por StartTransaction para relacionar segmentos e operações instrumentadas.
Registrar erro
if err != nil {
monitoring.NoticeError(transaction, err)
return err
}
Métricas personalizadas
Declare os instrumentos uma vez:
var (
orders = monitoring.Counter(
"orders.processed",
"Processed orders",
"{order}",
)
duration = monitoring.Histogram(
"orders.processing.duration",
"Order processing duration",
"ms",
)
queueSize = monitoring.Gauge(
"orders.queue.size",
"Current queue size",
"{item}",
)
)
Registre valores:
orders.Add(ctx, 1, map[string]string{"status": "success"})
duration.Record(ctx, float64(elapsed.Milliseconds()), nil)
queueSize.Record(ctx, float64(size), nil)
Evite atributos com alta cardinalidade, como IDs únicos, e nunca envie dados pessoais ou segredos.
Para um ambiente local completo, consulte Monitoramento com Colibri e OpenTelemetry.