tracing: update semconv, better error checking

This commit is contained in:
2024-01-19 22:59:29 -08:00
parent 232a6f98df
commit df2285d355
3 changed files with 61 additions and 22 deletions

View File

@@ -18,7 +18,7 @@ import (
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
otelsdktrace "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.21.0"
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
"go.opentelemetry.io/otel/trace"
)
@@ -72,10 +72,15 @@ func InitTracer(ctx context.Context, cfg *TracerConfig) (TpShutdownFunc, error)
return emptyTpShutdownFunc, nil
}
resource, err := newResource(cfg)
if err != nil {
return nil, err
}
tp := otelsdktrace.NewTracerProvider(
otelsdktrace.WithSampler(otelsdktrace.AlwaysSample()),
otelsdktrace.WithBatcher(exporter),
otelsdktrace.WithResource(newResource(cfg)),
otelsdktrace.WithResource(resource),
)
otel.SetTracerProvider(tp)
@@ -125,19 +130,33 @@ func newOLTPExporter(ctx context.Context, cfg *TracerConfig) (otelsdktrace.SpanE
// }
// newResource returns a resource describing this application.
func newResource(cfg *TracerConfig) *resource.Resource {
func newResource(cfg *TracerConfig) (*resource.Resource, error) {
log := logger.Setup()
defaultResource := resource.Default()
log.Debug("default semconv", "url", defaultResource.SchemaURL())
newResource := resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String(cfg.ServiceName),
semconv.ServiceVersionKey.String(version.Version()),
attribute.String("environment", cfg.Environment),
)
log.Debug("new resource semconv", "url", newResource.SchemaURL())
r, err := resource.Merge(
resource.Default(),
resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String(cfg.ServiceName),
semconv.ServiceVersionKey.String(version.Version()),
attribute.String("environment", cfg.Environment),
),
defaultResource,
newResource,
)
if err != nil {
panic(err)
log.Error("could not setup otel resource",
"err", err,
"default", defaultResource.SchemaURL(),
"local", newResource.SchemaURL(),
)
}
return r
return r, nil
}