feat(tracing): Continue on tracing implmentation
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
23
tracing/exporter/jaeger/exporter.go
Normal file
23
tracing/exporter/jaeger/exporter.go
Normal file
@ -0,0 +1,23 @@
|
||||
package jaeger
|
||||
|
||||
import (
|
||||
"github.com/juju/errors"
|
||||
"go.opentelemetry.io/otel/exporters/jaeger"
|
||||
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
)
|
||||
|
||||
// NewExporter will create a Jaeger exporter for tracing.
|
||||
func NewExporter(c *ConfigStruct) (sdktrace.SpanExporter, error) {
|
||||
|
||||
err := c.IsValid()
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
return jaeger.New(
|
||||
jaeger.WithCollectorEndpoint(
|
||||
jaeger.WithEndpoint(c.URL),
|
||||
),
|
||||
)
|
||||
}
|
21
tracing/exporter/zipkin/exporter.go
Normal file
21
tracing/exporter/zipkin/exporter.go
Normal file
@ -0,0 +1,21 @@
|
||||
package zipkin
|
||||
|
||||
import (
|
||||
"github.com/juju/errors"
|
||||
"go.opentelemetry.io/otel/exporters/zipkin"
|
||||
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
)
|
||||
|
||||
// NewExporter will create a Zipkin exporter for tracing.
|
||||
func NewExporter(c *ConfigStruct) (sdktrace.SpanExporter, error) {
|
||||
|
||||
err := c.IsValid()
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
return zipkin.New(
|
||||
c.URL,
|
||||
)
|
||||
}
|
@ -1,8 +1,11 @@
|
||||
package tracing
|
||||
|
||||
import (
|
||||
"git.dev.m-and-m.ovh/mderasse/gocommon/tracing/exporter/jaeger"
|
||||
"git.dev.m-and-m.ovh/mderasse/gocommon/tracing/exporter/zipkin"
|
||||
"github.com/juju/errors"
|
||||
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
@ -60,22 +63,70 @@ func InitFromCustomConfig(c *ConfigStruct) (*sdktrace.TracerProvider, error) {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
// if disabled, never sample
|
||||
if !c.Enabled {
|
||||
return sdktrace.NewTracerProvider(
|
||||
sdktrace.WithSampler(sdktrace.NeverSample()),
|
||||
), nil
|
||||
}
|
||||
|
||||
attributes := []attribute.KeyValue{
|
||||
semconv.ServiceNameKey.String(c.ServiceName),
|
||||
}
|
||||
|
||||
if c.ServiceVersion != "" {
|
||||
attributes = append(
|
||||
attributes,
|
||||
semconv.ServiceVersionKey.String(c.ServiceVersion),
|
||||
)
|
||||
}
|
||||
|
||||
if c.ServiceInstanceID != "" {
|
||||
attributes = append(
|
||||
attributes,
|
||||
semconv.ServiceInstanceIDKey.String(c.ServiceInstanceID),
|
||||
)
|
||||
}
|
||||
|
||||
for k, v := range c.Attributes {
|
||||
attributes = append(
|
||||
attributes,
|
||||
attribute.String(k, v),
|
||||
)
|
||||
}
|
||||
|
||||
// Ensure default SDK resources and the required service name are set.
|
||||
r, err := resource.Merge(
|
||||
resource.Default(),
|
||||
resource.NewWithAttributes(
|
||||
semconv.SchemaURL,
|
||||
semconv.ServiceNameKey.String("myService"),
|
||||
semconv.ServiceVersionKey.String("1.0.0"),
|
||||
semconv.ServiceInstanceIDKey.String("abcdef12345"),
|
||||
attributes...,
|
||||
),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
// Get the exporter
|
||||
var exporter sdktrace.SpanExporter
|
||||
|
||||
switch c.Exporter {
|
||||
case ExporterName_JAEGER:
|
||||
exporter, err = jaeger.NewExporter(c.JaegerConfig)
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
case ExporterName_ZIPKIN:
|
||||
exporter, err = zipkin.NewExporter(c.ZipkinConfig)
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
default:
|
||||
return nil, errors.BadRequestf("Exporter is not handled.")
|
||||
}
|
||||
|
||||
return sdktrace.NewTracerProvider(
|
||||
sdktrace.WithResource(r),
|
||||
sdktrace.WithBatcher(exporter),
|
||||
), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user