---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/recipes/ydb-sdk/debug-jaeger.md
  - https://ydb.tech/docs/ru/reference/ydb-sdk/observability/tracing/jaeger.md
  - href: en/recipes/ydb-sdk/debug-jaeger.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: en/core/recipes/ydb-sdk/debug-jaeger.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/en/llms.txt

# Enabling tracing in Jaeger

Below are examples of code for enabling tracing in Jaeger in different YDB SDKs.

{% list tabs %}

- C++

  The functionality is not supported at the moment.

- Go

  {% list tabs %}

  - Native SDK

      ```go
      package main

      import (
          "context"
          "time"

          "github.com/opentracing/opentracing-go"
          jaegerConfig "github.com/uber/jaeger-client-go/config"

          "github.com/ydb-platform/ydb-go-sdk/v3"
          "github.com/ydb-platform/ydb-go-sdk/v3/trace"

          tracing "github.com/ydb-platform/ydb-go-sdk-opentracing"
      )

      const (
          tracerURL   = "localhost:5775"
          serviceName = "ydb-go-sdk"
      )

      func main() {
          tracer, closer, err := jaegerConfig.Configuration{
              ServiceName: serviceName,
              Sampler: &jaegerConfig.SamplerConfig{
                  Type:  "const",
                  Param: 1,
              },
              Reporter: &jaegerConfig.ReporterConfig{
                  LogSpans:            true,
                  BufferFlushInterval: 1 * time.Second,
                  LocalAgentHostPort:  tracerURL,
              },
          }.NewTracer()
          if err != nil {
              panic(err)
          }

          defer closer.Close()

          // set global tracer of this application
          opentracing.SetGlobalTracer(tracer)

          span, ctx := opentracing.StartSpanFromContext(context.Background(), "client")
          defer span.Finish()

          db, err := ydb.Open(ctx,
              os.Getenv("YDB_CONNECTION_STRING"),
              tracing.WithTraces(tracing.WithDetails(trace.DetailsAll)),
          )
          if err != nil {
              panic(err)
          }
          defer db.Close(ctx)
          ...
      }
      ```

  - database/sql

      ```go
      package main

      import (
          "context"
          "database/sql"
          "time"

          "github.com/opentracing/opentracing-go"
          jaegerConfig "github.com/uber/jaeger-client-go/config"

          "github.com/ydb-platform/ydb-go-sdk/v3"
          "github.com/ydb-platform/ydb-go-sdk/v3/trace"

          tracing "github.com/ydb-platform/ydb-go-sdk-opentracing"
      )

      const (
          tracerURL   = "localhost:5775"
          serviceName = "ydb-go-sdk"
      )

      func main() {
          tracer, closer, err := jaegerConfig.Configuration{
              ServiceName: serviceName,
                  Sampler: &jaegerConfig.SamplerConfig{
                  Type:  "const",
                  Param: 1,
              },
              Reporter: &jaegerConfig.ReporterConfig{
                  LogSpans:            true,
                  BufferFlushInterval: 1 * time.Second,
                  LocalAgentHostPort:  tracerURL,
              },
          }.NewTracer()
          if err != nil {
              panic(err)
          }

          defer closer.Close()

          // set global tracer of this application
          opentracing.SetGlobalTracer(tracer)

          span, ctx := opentracing.StartSpanFromContext(context.Background(), "client")
          defer span.Finish()

          nativeDriver, err := ydb.Open(ctx,
              os.Getenv("YDB_CONNECTION_STRING"),
              tracing.WithTraces(tracing.WithDetails(trace.DetailsAll)),
          )
          if err != nil {
              panic(err)
          }
          defer nativeDriver.Close(ctx)

          connector, err := ydb.Connector(nativeDriver)
          if err != nil {
              panic(err)
          }

          db := sql.OpenDB(connector)
          defer db.Close()
          ...
      }
      ```

    {% endlist %}

- Java

  Feature not supported

- Python

  Feature not supported

- C#

  Feature not supported

- JavaScript

  Feature not supported

- Rust

  Feature not supported

  Use the [`tracing`](https://docs.rs/tracing) ecosystem and OpenTelemetry export ([#268](https://github.com/ydb-platform/ydb-rs-sdk/issues/268)).

- PHP

  Feature not supported

- Python

  This functionality is not currently supported.

{% endlist %}
