2025-12-31 21:54:03 +01:00
# otelsetup
Shared Go library for OpenTelemetry setup across all microservices.
## Shared Documentation
@../docs/claude/architecture.md
@../docs/claude/go-services.md
@../docs/claude/conventions.md
## Library Information
### Purpose
Provides standardized OpenTelemetry configuration for tracing, metrics, and logging. Used by all Go microservices to enable observability.
### Usage
```go
2026-01-09 14:29:31 +01:00
import "gitea.unbound.se/shiny/otelsetup"
2025-12-31 21:54:03 +01:00
// Bootstrap OpenTelemetry SDK
shutdown , err := otelsetup . SetupOTelSDK ( ctx , enabled , serviceName , buildVersion , environment )
if err != nil {
log . Fatal ( err )
}
defer shutdown ( ctx )
// Wrap HTTP handlers with tracing
http . Handle ( "/" , otelsetup . Handler ( myHandler ))
```
### Features
- **Tracing** - OTLP HTTP exporter with batch processing
- **Metrics** - OTLP HTTP exporter with periodic reader
- **Logging** - Stdout log exporter
- **Propagation** - TraceContext and Baggage propagation
- **HTTP Handler** - Middleware for automatic span creation
### Environment Variables
- `OTEL_RESOURCE_ATTRIBUTES` - Auto-set if not provided (service.name, service.version, service.environment)
- Standard OTLP environment variables for endpoint configuration
2026-09-19 13:51:36 +00:00
- The trace and metric exporters use our own HTTP client (idle connections closed after 30s, before the collector's 1m idle timeout), so `OTEL_EXPORTER_OTLP_*TIMEOUT` and the `OTEL_EXPORTER_OTLP_*CERTIFICATE` / `*CLIENT_*` TLS variables are ignored