When `GITLAB_TRACING` is set, LabKit automatically creates and configures a tracer when the gem is loaded. No manual initialization is required in most cases.
When `GITLAB_TRACING` is set, LabKit automatically creates and configures a tracer:
-**Rails applications**: Railtie automatically inserts Labkit::Tracing::RackMiddleware into the middleware stack
-**Non-Rails applications**: Works automatically with no additional configuration
Auto-initialization provides:
- Automatic tracer creation with connection string settings
- Automatic tracer creation with connection string settings (sampler, exporter, service name)
- Service name from `service_name` query parameter (defaults to `"labkit-service"`)
- All available OpenTelemetry instrumentation enabled by default (`c.use_all()`)
@@ -73,6 +78,12 @@ The following connection string formats and query parameters are supported:
-**Behavior**: Outputs spans immediately to stdout with no remote export
-**Benefits**: No external collector required, instant feedback, simple debugging
**HTTPS Enforcement:** For security, non-localhost OTLP connections are automatically upgraded to HTTPS. Localhost addresses (`localhost`, `127.0.0.1`, `::1`) use plain HTTP. For example:
- Auto-initialization happens automatically when `require 'gitlab-labkit'` is called, so no manual setup is needed.
Auto-initialization:
- Creates tracer with connection string settings (sampler, exporter, endpoints)
- Uses service name from `service_name` query parameter (defaults to `"labkit-service"`)
- Enables all available OpenTelemetry instrumentation
- Enables selective OpenTelemetry instrumentation (non-conflicting with LabKit's own)
- Enables LabKit instrumentation for ActiveRecord, ActionView, ActiveSupport, Redis, and External HTTP
- Sets up the global `OpenTelemetry.tracer_provider`
**No application code changes required** - just set the environment variable.
### Automatic Rails Middleware Insertion
When using Rails, the `Labkit::Tracing::RackMiddleware` is automatically inserted into your middleware stack when `GITLAB_TRACING` is set. No manual configuration needed!
@@ -214,8 +233,8 @@ You can override auto-initialization by calling `Factory.create_tracer` in your
# config/initializers/tracing.rb
# Override auto-initialization with custom configuration
Note: Middleware is still automatically inserted even with custom tracer initialization.
### With Selective Instrumentation (Manual Override)
### With Custom Instrumentation (Manual Override)
If you want to control exactly which components are instrumented instead of using `c.use_all()`, override tracer initialization:
If you want to control exactly which OTel components are instrumented, override tracer initialization:
**Important:** When you manually call `Factory.create_tracer`, auto-initialization still runs but is replaced by your manual configuration. The LabKit-specific instrumentation (Rails, Redis, ExternalHttp) is still automatically enabled unless you explicitly disable auto-initialization.
```ruby
# config/initializers/tracing.rb
# Override auto-initialization for selective OpenTelemetry instrumentation
# Override auto-initialization for custom OpenTelemetry instrumentation