this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

move otel setup in to separate file

+84 -74
-74
cmd/relay/main.go
··· 1 1 package main 2 2 3 3 import ( 4 - "context" 5 4 "crypto/rand" 6 5 "encoding/base64" 7 6 "fmt" ··· 29 28 30 29 "github.com/carlmjohnson/versioninfo" 31 30 "github.com/urfave/cli/v2" 32 - "go.opentelemetry.io/otel" 33 - "go.opentelemetry.io/otel/attribute" 34 - "go.opentelemetry.io/otel/exporters/jaeger" 35 - "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" 36 - "go.opentelemetry.io/otel/sdk/resource" 37 - tracesdk "go.opentelemetry.io/otel/sdk/trace" 38 - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" 39 31 "gorm.io/plugin/opentelemetry/tracing" 40 32 ) 41 33 ··· 165 157 return app.Run(os.Args) 166 158 } 167 159 168 - func setupOTEL(cctx *cli.Context) error { 169 - 170 - env := cctx.String("env") 171 - if env == "" { 172 - env = "dev" 173 - } 174 - if cctx.Bool("jaeger") { 175 - jaegerUrl := "http://localhost:14268/api/traces" 176 - exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(jaegerUrl))) 177 - if err != nil { 178 - return err 179 - } 180 - tp := tracesdk.NewTracerProvider( 181 - // Always be sure to batch in production. 182 - tracesdk.WithBatcher(exp), 183 - // Record information about this application in a Resource. 184 - tracesdk.WithResource(resource.NewWithAttributes( 185 - semconv.SchemaURL, 186 - semconv.ServiceNameKey.String("bgs"), 187 - attribute.String("env", env), // DataDog 188 - attribute.String("environment", env), // Others 189 - attribute.Int64("ID", 1), 190 - )), 191 - ) 192 - 193 - otel.SetTracerProvider(tp) 194 - } 195 - 196 - // Enable OTLP HTTP exporter 197 - // For relevant environment variables: 198 - // https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace#readme-environment-variables 199 - // At a minimum, you need to set 200 - // OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 201 - if ep := cctx.String("otel-exporter-otlp-endpoint"); ep != "" { 202 - slog.Info("setting up trace exporter", "endpoint", ep) 203 - ctx, cancel := context.WithCancel(context.Background()) 204 - defer cancel() 205 - 206 - exp, err := otlptracehttp.New(ctx) 207 - if err != nil { 208 - slog.Error("failed to create trace exporter", "error", err) 209 - os.Exit(1) 210 - } 211 - defer func() { 212 - ctx, cancel := context.WithTimeout(context.Background(), time.Second) 213 - defer cancel() 214 - if err := exp.Shutdown(ctx); err != nil { 215 - slog.Error("failed to shutdown trace exporter", "error", err) 216 - } 217 - }() 218 - 219 - tp := tracesdk.NewTracerProvider( 220 - tracesdk.WithBatcher(exp), 221 - tracesdk.WithResource(resource.NewWithAttributes( 222 - semconv.SchemaURL, 223 - semconv.ServiceNameKey.String("bgs"), 224 - attribute.String("env", env), // DataDog 225 - attribute.String("environment", env), // Others 226 - attribute.Int64("ID", 1), 227 - )), 228 - ) 229 - otel.SetTracerProvider(tp) 230 - } 231 - 232 - return nil 233 - } 234 160 235 161 func runRelay(cctx *cli.Context) error { 236 162 // Trap SIGINT to trigger a shutdown.
+84
cmd/relay/otel.go
··· 1 + package main 2 + 3 + import ( 4 + "context" 5 + "log/slog" 6 + "os" 7 + "time" 8 + 9 + "github.com/urfave/cli/v2" 10 + "go.opentelemetry.io/otel" 11 + "go.opentelemetry.io/otel/attribute" 12 + "go.opentelemetry.io/otel/exporters/jaeger" 13 + "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" 14 + "go.opentelemetry.io/otel/sdk/resource" 15 + tracesdk "go.opentelemetry.io/otel/sdk/trace" 16 + semconv "go.opentelemetry.io/otel/semconv/v1.4.0" 17 + ) 18 + 19 + func setupOTEL(cctx *cli.Context) error { 20 + 21 + env := cctx.String("env") 22 + if env == "" { 23 + env = "dev" 24 + } 25 + if cctx.Bool("jaeger") { 26 + jaegerUrl := "http://localhost:14268/api/traces" 27 + exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(jaegerUrl))) 28 + if err != nil { 29 + return err 30 + } 31 + tp := tracesdk.NewTracerProvider( 32 + // Always be sure to batch in production. 33 + tracesdk.WithBatcher(exp), 34 + // Record information about this application in a Resource. 35 + tracesdk.WithResource(resource.NewWithAttributes( 36 + semconv.SchemaURL, 37 + semconv.ServiceNameKey.String("bgs"), 38 + attribute.String("env", env), // DataDog 39 + attribute.String("environment", env), // Others 40 + attribute.Int64("ID", 1), 41 + )), 42 + ) 43 + 44 + otel.SetTracerProvider(tp) 45 + } 46 + 47 + // Enable OTLP HTTP exporter 48 + // For relevant environment variables: 49 + // https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace#readme-environment-variables 50 + // At a minimum, you need to set 51 + // OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 52 + if ep := cctx.String("otel-exporter-otlp-endpoint"); ep != "" { 53 + slog.Info("setting up trace exporter", "endpoint", ep) 54 + ctx, cancel := context.WithCancel(context.Background()) 55 + defer cancel() 56 + 57 + exp, err := otlptracehttp.New(ctx) 58 + if err != nil { 59 + slog.Error("failed to create trace exporter", "error", err) 60 + os.Exit(1) 61 + } 62 + defer func() { 63 + ctx, cancel := context.WithTimeout(context.Background(), time.Second) 64 + defer cancel() 65 + if err := exp.Shutdown(ctx); err != nil { 66 + slog.Error("failed to shutdown trace exporter", "error", err) 67 + } 68 + }() 69 + 70 + tp := tracesdk.NewTracerProvider( 71 + tracesdk.WithBatcher(exp), 72 + tracesdk.WithResource(resource.NewWithAttributes( 73 + semconv.SchemaURL, 74 + semconv.ServiceNameKey.String("bgs"), 75 + attribute.String("env", env), // DataDog 76 + attribute.String("environment", env), // Others 77 + attribute.Int64("ID", 1), 78 + )), 79 + ) 80 + otel.SetTracerProvider(tp) 81 + } 82 + 83 + return nil 84 + }