tracing.go 1.0 KB

123456789101112131415161718192021222324252627282930
  1. package tracing
  2. import (
  3. "go.opentelemetry.io/otel/exporters/jaeger"
  4. "go.opentelemetry.io/otel/sdk/resource"
  5. tracesdk "go.opentelemetry.io/otel/sdk/trace"
  6. semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
  7. )
  8. // NewTracerProvider returns an OpenTelemetry TracerProvider configured to use
  9. // the Jaeger exporter that will send spans to the provided url. The returned
  10. // TracerProvider will also use a Resource configured with all the information
  11. // about the application.
  12. func NewTracerProvider(serviceName, version, serviceID, url string) (*tracesdk.TracerProvider, error) {
  13. // Create the Jaeger exporter
  14. exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
  15. if err != nil {
  16. return nil, err
  17. }
  18. tp := tracesdk.NewTracerProvider(
  19. tracesdk.WithBatcher(exp),
  20. tracesdk.WithResource(resource.NewWithAttributes(
  21. semconv.SchemaURL,
  22. semconv.ServiceNameKey.String(serviceName),
  23. semconv.ServiceVersionKey.String(version),
  24. semconv.ServiceInstanceIDKey.String(serviceID),
  25. )),
  26. )
  27. return tp, nil
  28. }