Observability
Orisun exposes three operational signals: distributed traces, structured logs, and on-demand profiles.
Tracing​
Orisun emits OpenTelemetry traces and exports them over OTLP gRPC. This is the primary signal for understanding request flow and latency across the save, query, and publish paths.
| Variable | Default | Description |
|---|---|---|
ORISUN_OTEL_ENABLED | true | Enable OpenTelemetry tracing. |
ORISUN_OTEL_ENDPOINT | localhost:4317 | OTLP gRPC collector endpoint. |
ORISUN_OTEL_SERVICE_NAME | orisun | Service name attached to exported spans. |
Point ORISUN_OTEL_ENDPOINT at any OTLP-compatible collector (the OpenTelemetry Collector, Tempo, Jaeger with OTLP, Honeycomb, etc.). Traces are tagged with the service name so multiple nodes are distinguishable.
Orisun currently exports traces, not a built-in metrics endpoint. For request rates and latencies, derive them from spans in your tracing backend, or scrape the Go runtime via pprof. There is no Prometheus /metrics endpoint to scrape.
Logging​
Logs are structured and leveled. Set the level with ORISUN_LOGGING_LEVEL (DEBUG, INFO, WARN, ERROR; default INFO).
Operationally useful log lines include:
- effective
GOMAXPROCS,GOMEMLIMIT, andGOGCat startup, - admin boundary bootstrap and catalog replay,
- boundary provisioning failures and independent retry attempts,
- publisher boundary-lock acquisition and contention in clustered deployments,
- publisher checkpoint progress and any publish errors.
Use DEBUG to trace authentication, subscription handover, and per-call detail; keep INFO or higher in production.
Profiling​
The Go pprof server is available for CPU, heap, and goroutine profiling when you need to investigate a performance issue.
| Variable | Default | Description |
|---|---|---|
ORISUN_PPROF_ENABLED | false | Enable the pprof HTTP server. |
ORISUN_PPROF_PORT | 6060 | pprof listen port. |
go tool pprof http://localhost:6060/debug/pprof/heap
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
Leave pprof disabled in production unless you are actively profiling, and never expose its port publicly.
What to watch​
- Boundary readiness is the set of
PROVISIONINGorFAILEDentries fromAdmin/ListBoundaries. Alert on definitions that stay non-active and includelast_error,placement, andstatus_positionin diagnostics. - Publisher lag measures the gap between committed and published positions. Investigate with the Troubleshooting steps.
- Catch-up vs live tells you whether subscribers are repeatedly falling out of live delivery. If they are, the JetStream retention window may be too small for their pace. See Delivery Guarantees.
- Consistency conflicts show a high
ALREADY_EXISTSrate, which is a domain hotspot, not an error. Narrow the consistency context or add an index.