Skip to content

Commit

Permalink
monitoring/tracing: refactor initialization for re-use.
Browse files Browse the repository at this point in the history
  • Loading branch information
hugosantos committed Jul 15, 2023
1 parent ab6ed01 commit 95780fb
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 23 deletions.
38 changes: 24 additions & 14 deletions std/monitoring/tracing/wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
t "go.opentelemetry.io/otel/trace"
"namespacelabs.dev/foundation/schema"
"namespacelabs.dev/foundation/std/core/types"
"namespacelabs.dev/foundation/std/go/core"
)

Expand Down Expand Up @@ -60,19 +61,18 @@ func ProvideExporter(_ context.Context, args *ExporterArgs, _ ExtensionDeps) (Ex
return Exporter{args.Name}, nil
}

func Prepare(ctx context.Context, deps ExtensionDeps) error {
var opts []trace.TracerProviderOption

exporters := consumeExporters()
func CreateProvider(ctx context.Context, serverInfo *types.ServerInfo, exporters []trace.SpanExporter) (*trace.TracerProvider, error) {
if len(exporters) == 0 {
out, err := stdouttrace.New()
if err != nil {
return err
return nil, err
}

exporters = append(exporters, out)
}

var opts []trace.TracerProviderOption

for _, exp := range exporters {
if core.EnvIs(schema.Environment_PRODUCTION) {
opts = append(opts, trace.WithBatcher(exp, trace.WithBatchTimeout(10*time.Second)))
Expand All @@ -81,8 +81,6 @@ func Prepare(ctx context.Context, deps ExtensionDeps) error {
}
}

serverResources := core.ServerResourcesFrom(ctx)

// XXX use pod name
instanceID := uuid.NewString()

Expand All @@ -94,21 +92,33 @@ func Prepare(ctx context.Context, deps ExtensionDeps) error {
resource.WithProcessRuntimeVersion(),
resource.WithProcessRuntimeDescription(),
resource.WithAttributes(
semconv.ServiceNameKey.String(deps.ServerInfo.ServerName),
semconv.ServiceVersionKey.String(deps.ServerInfo.GetVcs().GetRevision()),
semconv.ServiceNameKey.String(serverInfo.ServerName),
semconv.ServiceVersionKey.String(serverInfo.GetVcs().GetRevision()),
semconv.ServiceInstanceIDKey.String(instanceID),
semconv.DeploymentEnvironmentKey.String(deps.ServerInfo.EnvName),
attribute.String("environment", deps.ServerInfo.EnvName),
semconv.DeploymentEnvironmentKey.String(serverInfo.EnvName),
attribute.String("environment", serverInfo.EnvName),
),
)
if err != nil {
return fmt.Errorf("failed to create resource: %w", err)
return nil, fmt.Errorf("failed to create resource: %w", err)
}

opts = append(opts, trace.WithResource(resource))

provider := trace.NewTracerProvider(opts...)
serverResources.Add(close{provider})
return trace.NewTracerProvider(opts...), nil
}

func Prepare(ctx context.Context, deps ExtensionDeps) error {
provider, err := CreateProvider(ctx, deps.ServerInfo, consumeExporters())
if err != nil {
return err
}

serverResources := core.ServerResourcesFrom(ctx)

if serverResources != nil {
serverResources.Add(close{provider})
}

deps.Interceptors.ForServer(
otelgrpc.UnaryServerInterceptor(otelgrpc.WithTracerProvider(provider), otelgrpc.WithPropagators(propagators)),
Expand Down
22 changes: 13 additions & 9 deletions universe/monitoring/honeycomb/wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,27 @@ import (
"google.golang.org/grpc/credentials"
)

func Prepare(ctx context.Context, deps ExtensionDeps) error {
xHoneycombTeam := os.Getenv("MONITORING_HONEYCOMB_X_HONEYCOMB_TEAM")
if xHoneycombTeam == "" {
// No secret specified.
return nil
}

func Create(ctx context.Context, key string) (*otlptrace.Exporter, error) {
opts := []otlptracegrpc.Option{
otlptracegrpc.WithEndpoint("api.honeycomb.io:443"),
otlptracegrpc.WithHeaders(map[string]string{
"x-honeycomb-team": xHoneycombTeam,
"x-honeycomb-team": key,
}),
otlptracegrpc.WithTLSCredentials(credentials.NewClientTLSFromCert(nil, "")),
}

client := otlptracegrpc.NewClient(opts...)
exporter, err := otlptrace.New(ctx, client)
return otlptrace.New(ctx, client)
}

func Prepare(ctx context.Context, deps ExtensionDeps) error {
xHoneycombTeam := os.Getenv("MONITORING_HONEYCOMB_X_HONEYCOMB_TEAM")
if xHoneycombTeam == "" {
// No secret specified.
return nil
}

exporter, err := Create(ctx, xHoneycombTeam)
if err != nil {
return err
}
Expand Down

0 comments on commit 95780fb

Please sign in to comment.