Skip to content
observabilityx

observabilityx

observabilityx

observabilityx provides an optional unified facade for logging/tracing/metrics.

Roadmap

Why

  • Keep authx, eventx, configx APIs 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 + /metrics handler).

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.