observabilityx
observabilityx
observabilityx provides an optional unified facade for logging/tracing/metrics.
Roadmap
- Module roadmap: observabilityx roadmap
- Global roadmap: ArcGo roadmap
Why
- Keep
authx,eventx,configxAPIs stable. - Make observability backends optional.
- Avoid forcing business code into one telemetry stack.
Backends
observabilityx.Nop()- Default no-op backend.observabilityx/otel- OpenTelemetry backend (trace + metric).observabilityx/prometheus- Prometheus backend (metrics +/metricshandler).
Composing Multiple Backends
otelObs := otelobs.New()
promObs := promobs.New()
obs := observabilityx.Multi(otelObs, promObs)Adopting Packages
manager, _ := authx.NewManager(
authx.WithObservability(obs),
authx.WithProvider(provider),
)
bus := eventx.New(
eventx.WithObservability(obs),
)
var cfg AppConfig
_ = configx.Load(&cfg,
configx.WithObservability(obs),
configx.WithFiles("config.yaml"),
)Prometheus Metrics Endpoint
promObs := promobs.New()
stdAdapter := std.New(nil, adapter.HumaOptions{
DisableDocsRoutes: true,
})
metricsServer := httpx.New(
httpx.WithAdapter(stdAdapter),
)
stdAdapter.Router().Handle("/metrics", promObs.Handler())Examples
- multi: Compose OTel + Prometheus backends.