Skip to content

Analysis: OpenTelemetry distributed tracing integration for Zipkin/Jaeger#275

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/analyze-ot-export-requirements
Draft

Analysis: OpenTelemetry distributed tracing integration for Zipkin/Jaeger#275
Copilot wants to merge 2 commits intomainfrom
copilot/analyze-ot-export-requirements

Conversation

Copy link
Contributor

Copilot AI commented Jan 17, 2026

Analyzed requirements to add OpenTelemetry distributed tracing export to OJP, enabling integration with Zipkin, Jaeger, and other OTLP-compatible backends.

Analysis Document

Created comprehensive technical analysis (OPENTELEMETRY_TRACING_INTEGRATION_ANALYSIS.md) covering:

Current State

  • OJP has OpenTelemetry SDK 1.58.0 with SdkMeterProvider for Prometheus metrics
  • Lacks SdkTracerProvider and trace exporters

Integration Requirements

  • Dependencies: Add 3 exporter libraries (~500KB): opentelemetry-exporter-otlp, opentelemetry-exporter-zipkin, opentelemetry-exporter-jaeger
  • Code Changes: Enhance OjpServerTelemetry to configure trace provider; add 12 configuration properties to ServerConfiguration
  • Instrumentation: Automatic gRPC tracing (existing), optional database operation tracing
  • Performance: <1% CPU, <5MB memory with default sampling (1.0 ratio, 2048 queue size, 512 batch size)

Configuration Design

ojp.tracing.enabled=true
ojp.tracing.exporter.type=otlp  # otlp|zipkin|jaeger|logging
ojp.tracing.exporter.endpoint=http://localhost:4318/v1/traces
ojp.tracing.sampling.ratio=1.0
ojp.tracing.db.statements=true  # Include SQL in spans

Implementation Approach

// Enhance OjpServerTelemetry to create both meter and tracer providers
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
    .addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build())
    .setSampler(Sampler.traceIdRatioBased(samplingRatio))
    .setResource(resource)
    .build();

OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
    .setMeterProvider(meterProvider)
    .setTracerProvider(tracerProvider)
    .build();

Traced Operations

  • gRPC requests (automatic via existing GrpcTelemetry)
  • Database operations: connection acquisition, SQL execution, transactions
  • Connection pool lifecycle and health checks

Testing Strategy

  • Unit tests for exporter configuration (OTLP, Zipkin, Jaeger, logging)
  • Integration tests with mock backends
  • Docker examples for Jaeger (jaegertracing/all-in-one) and Zipkin (openzipkin/zipkin)

5-Week Implementation Timeline

  1. Dependencies and configuration (2 weeks)
  2. Core instrumentation (1 week)
  3. Testing and documentation (1 week)
  4. Beta release and feedback (1 week)

Documentation Updates

  • Added analysis to index with executive summary
  • Updated telemetry README to reference detailed analysis
  • Included deployment guides for Docker, Kubernetes, cloud providers
Original prompt

Do an analysis on what would be required to export tracing information via Open Telemetry so it can integrate with Zipkin or Jeager for example.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Co-authored-by: rrobetti <7221783+rrobetti@users.noreply.github.com>
Copilot AI changed the title [WIP] Analyze requirements for OpenTelemetry tracing export Analysis: OpenTelemetry distributed tracing integration for Zipkin/Jaeger Jan 17, 2026
Copilot AI requested a review from rrobetti January 17, 2026 13:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants