Move internal/otelutil to daemon/internal/otelutil

Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
Derek McGowan
2025-07-24 12:14:30 -07:00
parent b62b542c2e
commit c3b0e0130a
17 changed files with 13 additions and 13 deletions

View File

@@ -1,43 +0,0 @@
package otelutil
import (
"context"
"github.com/containerd/log"
"go.opentelemetry.io/otel/baggage"
)
// TriggerKey is the key used for the 'trigger' member in the baggage. It is
// used to know what triggered a code path (e.g. API call, libnet init, etc...)
const TriggerKey = "trigger"
// MustNewBaggage creates an OTel Baggage containing the provided members. It
// panics if the baggage cannot be created.
//
// DO NOT USE this function with dynamic values.
func MustNewBaggage(members ...baggage.Member) baggage.Baggage {
b, err := baggage.New(members...)
if err != nil {
log.G(context.Background()).WithFields(log.Fields{
"error": err,
"members": members,
}).Fatal("OTel baggage creation failure")
}
return b
}
// MustNewMemberRaw creates an OTel Baggage member with the provided key and
// value. It panics if the key or value aren't valid UTF-8 strings.
//
// DO NOT USE this function with dynamic key/value.
func MustNewMemberRaw(key, value string) baggage.Member {
m, err := baggage.NewMemberRaw(key, value)
if err != nil {
log.G(context.Background()).WithFields(log.Fields{
"error": err,
"key": key,
"value": value,
}).Fatal("OTel baggage member creation failure")
}
return m
}

View File

@@ -1,71 +0,0 @@
package otelutil
import (
"os"
)
const (
traceParentKey = "traceparent"
traceStateKey = "tracestate"
// See https://github.com/open-telemetry/opentelemetry-specification/issues/740
// and https://github.com/open-telemetry/oteps/pull/258.
traceParentEnvVar = "TRACEPARENT"
traceStateEnvVar = "TRACESTATE"
)
type EnvironCarrier struct {
TraceParent, TraceState string
}
// Get returns the value associated with the passed key.
func (c *EnvironCarrier) Get(key string) string {
switch key {
case traceParentKey:
return c.TraceParent
case traceStateKey:
return c.TraceState
}
return ""
}
// Set stores the key-value pair.
func (c *EnvironCarrier) Set(key, value string) {
switch key {
case traceParentKey:
c.TraceParent = value
case traceStateKey:
c.TraceState = value
}
// Other keys are not supported at this time.
}
// Keys lists the keys stored in this carrier.
func (c *EnvironCarrier) Keys() []string {
var k []string
if c.TraceParent != "" {
k = append(k, traceParentKey)
}
if c.TraceState != "" {
k = append(k, traceStateKey)
}
return k
}
func (c *EnvironCarrier) Environ() []string {
var env []string
if c.TraceParent != "" {
env = append(env, traceParentEnvVar+"="+c.TraceParent)
}
if c.TraceState != "" {
env = append(env, traceStateEnvVar+"="+c.TraceState)
}
return env
}
func PropagateFromEnvironment() *EnvironCarrier {
return &EnvironCarrier{
TraceParent: os.Getenv(traceParentEnvVar),
TraceState: os.Getenv(traceStateEnvVar),
}
}

View File

@@ -1,39 +0,0 @@
package otelutil
import (
"context"
"github.com/containerd/log"
"github.com/moby/buildkit/util/tracing/detect"
"go.opentelemetry.io/contrib/processors/baggagecopy"
"go.opentelemetry.io/otel/baggage"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/trace/noop"
)
func NewTracerProvider(ctx context.Context, allowNoop bool) (trace.TracerProvider, func(context.Context) error) {
noopShutdown := func(ctx context.Context) error { return nil }
exp, err := detect.NewSpanExporter(ctx)
if err != nil {
log.G(ctx).WithError(err).Warn("Failed to initialize tracing, skipping")
if allowNoop {
return noop.NewTracerProvider(), noopShutdown
}
}
if allowNoop && detect.IsNoneSpanExporter(exp) {
log.G(ctx).Info("OTEL tracing is not configured, using no-op tracer provider")
return noop.NewTracerProvider(), noopShutdown
}
tp := sdktrace.NewTracerProvider(
sdktrace.WithResource(resource.Default()),
sdktrace.WithSyncer(detect.Recorder),
sdktrace.WithBatcher(exp),
sdktrace.WithSpanProcessor(baggagecopy.NewSpanProcessor(func(member baggage.Member) bool { return true })),
)
return tp, tp.Shutdown
}

View File

@@ -1,17 +0,0 @@
package otelutil
import (
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)
// RecordStatus records the status of a span based on the error provided.
//
// If err is nil, the span status is unmodified. If err is not nil, the span
// takes status Error, and the error message is recorded.
func RecordStatus(span trace.Span, err error) {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, err.Error())
}
}