Pular para o conteúdo principal
Versão: v0.2.2

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ávelUso
OTEL_EXPORTER_OTLP_ENDPOINTEndpoint OTLP HTTP para traces e métricas
OTEL_EXPORTER_OTLP_HEADERSCabeçalhos chave=valor separados por vírgula
OTEL_EXPORTER_OTLP_METRICS_ENDPOINTEndpoint alternativo apenas para métricas
OTEL_SERVICE_NAMENome 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.