- Safe fallback if initialization fails (no-op tracer)
### Optional Configuration
@@ -146,9 +150,8 @@ When using Rails, the `Labkit::Tracing::RackMiddleware` is automatically inserte
**How it works:**
- Detected automatically via Rails Railtie
- Inserted after `Rails::Rack::Logger`(or at available position if Rails::Rack::Logger not found)
- Inserted after `Labkit::Middleware::Rack`for proper correlation ID propagation
- Only activates when `GITLAB_TRACING` is set
- Skips insertion if middleware is already manually configured
- Logs insertion to Rails logger for visibility
**Middleware Positioning:**
@@ -306,9 +309,16 @@ This automatically:
### Rails Components
**Note:** With auto-initialization enabled (when `GITLAB_TRACING` is set), these LabKit-specific instrumentations are automatically enabled alongside OpenTelemetry's instrumentation. You only need to call these methods manually if you've disabled auto-initialization or need to control when instrumentation starts.
Both OpenTelemetry and LabKit instrumentation run side-by-side, providing complementary trace data:
-**OpenTelemetry Rails instrumentation**: Provides standardized, method-level traces using semantic conventions
-**LabKit instrumentation**: Adds GitLab-specific details like SQL fingerprints, sanitized queries, and enhanced metadata
#### ActiveRecord (Database Queries)
```ruby
# Only needed if auto-initialization is disabled or you need manual control
@@ -566,26 +582,29 @@ Note: Middleware is still automatically inserted even with custom tracer initial
If you want to control exactly which components are instrumented instead of using `c.use_all()`, 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 instrumentation
# Override auto-initialization for selective OpenTelemetry instrumentation