Skip to content

Commit

Permalink
Fix lint issues
Browse files Browse the repository at this point in the history
  • Loading branch information
marcoshuck committed Feb 21, 2024
1 parent 7d1edf2 commit 23202ca
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 98 deletions.
13 changes: 8 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ require (
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0
go.opentelemetry.io/contrib/propagators/jaeger v1.22.0
go.opentelemetry.io/otel v1.22.0
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
go.opentelemetry.io/otel/sdk v1.22.0
go.opentelemetry.io/otel/trace v1.22.0
go.opentelemetry.io/otel v1.23.1
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1
go.opentelemetry.io/otel/sdk v1.23.1
go.opentelemetry.io/otel/trace v1.23.1
go.uber.org/zap v1.26.0
golang.org/x/crypto v0.18.0
google.golang.org/api v0.157.0
Expand Down Expand Up @@ -83,6 +83,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 // indirect
github.com/aws/smithy-go v1.19.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
Expand Down Expand Up @@ -119,7 +120,9 @@ require (
github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500 // indirect
github.com/stretchr/objx v0.5.0 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/otel/metric v1.22.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 // indirect
go.opentelemetry.io/otel/metric v1.23.1 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
go.uber.org/multierr v1.10.0 // indirect
golang.org/x/net v0.20.0 // indirect
golang.org/x/oauth2 v0.16.0 // indirect
Expand Down
30 changes: 18 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/caarlos0/env/v6 v6.10.1 h1:t1mPSxNpei6M5yAeu1qtRdPAK29Nbcf/n3G7x+b3/II=
github.com/caarlos0/env/v6 v6.10.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc=
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
Expand Down Expand Up @@ -301,18 +303,22 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfa
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw=
go.opentelemetry.io/contrib/propagators/jaeger v1.22.0 h1:bAHX+zN/inu+Rbqk51REmC8oXLl+Dw6pp9ldQf/onaY=
go.opentelemetry.io/contrib/propagators/jaeger v1.22.0/go.mod h1:bH9GkgkN21mscXcQP6lQJYI8XnEPDxlTN/ZOBuHDjqE=
go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y=
go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg=
go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY=
go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw=
go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc=
go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0=
go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo=
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
go.opentelemetry.io/otel v1.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY=
go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 h1:o8iWeVFa1BcLtVEV0LzrCxV2/55tB3xLxADr6Kyoey4=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1/go.mod h1:SEVfdK4IoBnbT2FXNM/k8yC08MrfbhWk3U4ljM8B3HE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1 h1:p3A5+f5l9e/kuEBwLOrnpkIDHQFlHmbiVxMURWRK6gQ=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1/go.mod h1:OClrnXUjBqQbInvjJFjYSnMxBSCXBF8r3b34WqjiIrQ=
go.opentelemetry.io/otel/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo=
go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI=
go.opentelemetry.io/otel/sdk v1.23.1 h1:O7JmZw0h76if63LQdsBMKQDWNb5oEcOThG9IrxscV+E=
go.opentelemetry.io/otel/sdk v1.23.1/go.mod h1:LzdEVR5am1uKOOwfBWFef2DCi1nu3SA8XQxx2IerWFk=
go.opentelemetry.io/otel/trace v1.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8=
go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI=
go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
Expand Down
10 changes: 4 additions & 6 deletions net/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import (
"context"
"errors"
"fmt"
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/recovery"
grpc_validator "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/validator"
grpc_tracing "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
"google.golang.org/grpc"
"log"
"net"
"net/http"
"time"

grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/recovery"
grpc_validator "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/validator"
"google.golang.org/grpc"
)

// Server is a web server to listen to incoming requests. It supports different types of transport mechanisms used through Gazebo projects.
Expand Down Expand Up @@ -106,7 +106,6 @@ func GRPC(register func(s grpc.ServiceRegistrar), streams []grpc.StreamServerInt
// DefaultStreamInterceptorsGRPC defines the base streams interceptors we usually use for our gRPC servers.
func DefaultStreamInterceptorsGRPC() []grpc.StreamServerInterceptor {
return []grpc.StreamServerInterceptor{
grpc_tracing.StreamServerInterceptor(),
grpc_recovery.StreamServerInterceptor(),
grpc_validator.StreamServerInterceptor(),
}
Expand All @@ -121,7 +120,6 @@ func GenerateStreamServerInterceptorsChainWithBase(interceptors ...grpc.StreamSe
// DefaultUnaryInterceptorsGRPC defines the base streams interceptors we usually use for our gRPC servers.
func DefaultUnaryInterceptorsGRPC() []grpc.UnaryServerInterceptor {
return []grpc.UnaryServerInterceptor{
grpc_tracing.UnaryServerInterceptor(),
grpc_recovery.UnaryServerInterceptor(),
grpc_validator.UnaryServerInterceptor(),
}
Expand Down
15 changes: 2 additions & 13 deletions telemetry/config.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package telemetry

import (
"errors"
"github.com/caarlos0/env/v6"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/trace"
Expand All @@ -19,7 +18,7 @@ type TracingConfig struct {
// Enabled defines if tracing should be enabled.
Enabled bool `env:"ENABLED" envDefault:"false"`

// ExportingStrategy contains the name of the strategy used to export traces. Defaults to collector.
// Deprecated: ExportingStrategy contains the name of the strategy used to export traces. Defaults to collector.
// Possible values: collector, agent.
ExportingStrategy string `env:"EXPORTING_STRATEGY" envDefault:"collector"`

Expand Down Expand Up @@ -56,17 +55,7 @@ func InitializeTracing(cfg TracingConfig) (propagation.TextMapPropagator, trace.

propagator := NewJaegerPropagator()

var tracerProvider trace.TracerProvider
var err error
switch cfg.ExportingStrategy {
case "collector":
tracerProvider, err = NewJaegerTracerProviderCollector(cfg.Service, cfg.CollectorURL, cfg.Environment)
case "agent":
tracerProvider, err = NewJaegerTracerProviderAgent(cfg.Service, cfg.AgentHost, cfg.AgentPort, cfg.Environment)
default:
return nil, nil, errors.New("invalid exporting strategy")
}

tracerProvider, err := NewJaegerTracerProviderCollector(cfg.Service, cfg.CollectorURL, cfg.Environment)
if err != nil {
return nil, nil, err
}
Expand Down
89 changes: 29 additions & 60 deletions telemetry/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@ package telemetry
import (
"context"
"fmt"
"net/http"

grpc_otel "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
jaegerPropagator "go.opentelemetry.io/contrib/propagators/jaeger"
"go.opentelemetry.io/otel/attribute"
jaegerExporter "go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
otlptracegrpc "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
tracesdk "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.10.0"
"go.opentelemetry.io/otel/trace"
"google.golang.org/grpc"
"net/http"
)

// NewJaegerTracerProviderCollector initializes a new Open Telemetry tracer provider for Jaeger using a Jaeger Collector.
Expand All @@ -25,42 +27,19 @@ import (
func NewJaegerTracerProviderCollector(service, url, environment string) (trace.TracerProvider, error) {
// Define where traces will be exported to.
// This block defines the endpoint to collect traces.
exporter, err := jaegerExporter.New(
jaegerExporter.WithCollectorEndpoint(
jaegerExporter.WithEndpoint(url),
),
)
if err != nil {
return nil, err
}

return newJaegerTracerProvider(service, environment, exporter)
}

// NewJaegerTracerProviderAgent initializes a new Open Telemetry tracer provider for Jaeger using a Jaeger Agent.
//
// service: Describes the service that will be exporting traces into Jaeger. Usually contains the service name.
// host: Contains the address where to publish traces to. For Jaeger, it's the agent's endpoint.
// port: Contains the port used alongside host to publish traces to. For Jaeger, it's the agent's port.
// environment: Used to identify the environment that a certain service is publishing traces from. Defaults to "development".
func NewJaegerTracerProviderAgent(service, host, port, environment string) (trace.TracerProvider, error) {
// Define where traces will be exported to.
// This block defines the endpoint to collect traces.
exporter, err := jaegerExporter.New(
jaegerExporter.WithAgentEndpoint(
jaegerExporter.WithAgentHost(host),
jaegerExporter.WithAgentPort(port),
),
exporter, err := otlptracegrpc.New(
context.Background(),
otlptracegrpc.WithEndpoint(url),
)
if err != nil {
return nil, err
}

return newJaegerTracerProvider(service, environment, exporter)
return newTracerProvider(service, environment, exporter)
}

// newJaegerTracerProvider initializes a generic tracer provider with the given jaeger exporter.
func newJaegerTracerProvider(service string, environment string, exporter *jaegerExporter.Exporter) (trace.TracerProvider, error) {
func newTracerProvider(service string, environment string, exporter *otlptrace.Exporter) (trace.TracerProvider, error) {
// Set a default environment if no environment is provided.
if environment == "" {
environment = "development"
Expand Down Expand Up @@ -114,50 +93,40 @@ func NewChildSpan(ctx context.Context, name string) (context.Context, trace.Span
return span.TracerProvider().Tracer("").Start(ctx, name)
}

// NewClientInterceptor initializes a new client interceptor for gRPC using the given propagator and tracer provider.
func NewClientInterceptor(p propagation.TextMapPropagator, tp trace.TracerProvider) (grpc.UnaryClientInterceptor, grpc.StreamClientInterceptor) {
return grpc_otel.UnaryClientInterceptor(
grpc_otel.WithPropagators(p),
// NewClientStatsHandler initializes a new dial option for gRPC using the given propagator and tracer provider.
func NewClientStatsHandler(p propagation.TextMapPropagator, tp trace.TracerProvider) grpc.DialOption {
return grpc.WithStatsHandler(
grpc_otel.NewClientHandler(
grpc_otel.WithTracerProvider(tp),
),
grpc_otel.StreamClientInterceptor(
grpc_otel.WithPropagators(p),
grpc_otel.WithTracerProvider(tp),
)
),
)
}

// NewServerInterceptor initializes a new server interceptor for gRPC using the given propagator and tracer provider.
func NewServerInterceptor(p propagation.TextMapPropagator, tp trace.TracerProvider) (grpc.UnaryServerInterceptor, grpc.StreamServerInterceptor) {
return grpc_otel.UnaryServerInterceptor(
grpc_otel.WithPropagators(p),
grpc_otel.WithTracerProvider(tp),
),
grpc_otel.StreamServerInterceptor(
grpc_otel.WithPropagators(p),
grpc_otel.WithTracerProvider(tp),
)
// NewServerStatsHandler initializes a new server option using the given propagator and tracer provider.
func NewServerStatsHandler(p propagation.TextMapPropagator, tp trace.TracerProvider) grpc.ServerOption {
return grpc.StatsHandler(grpc_otel.NewServerHandler(
grpc_otel.WithPropagators(p),
grpc_otel.WithTracerProvider(tp),
))
}

// AppendDialOptions appends unary and stream interceptors using the given propagator and tracer provider.
// AppendDialOptions appends dial options using the given propagator and tracer provider.
// If either propagator or tracerProvider are nil, this function returns the given opts as they were provided.
func AppendDialOptions(opts []grpc.DialOption, propagator propagation.TextMapPropagator, tracerProvider trace.TracerProvider) []grpc.DialOption {
if propagator != nil && tracerProvider != nil {
unaryInterceptor, streamInterceptor := NewClientInterceptor(propagator, tracerProvider)
opts = append(opts, grpc.WithUnaryInterceptor(unaryInterceptor), grpc.WithStreamInterceptor(streamInterceptor))
opts = append(opts, NewClientStatsHandler(propagator, tracerProvider))
}
return opts
}

// AppendServerInterceptors appends unary and stream interceptors using the given propagator and tracer provider.
// If either propagator or tracerProvider are nil, this function returns the given streams and unaries as they were provided.
func AppendServerInterceptors(unaries []grpc.UnaryServerInterceptor, streams []grpc.StreamServerInterceptor,
p propagation.TextMapPropagator, tp trace.TracerProvider) ([]grpc.UnaryServerInterceptor, []grpc.StreamServerInterceptor) {
if p != nil && tp != nil {
unaryInterceptor, streamInterceptor := NewServerInterceptor(p, tp)
streams = append(streams, streamInterceptor)
unaries = append(unaries, unaryInterceptor)
// AppendServerOptions appends server options using the given propagator and tracer provider.
// If either propagator or tracerProvider are nil, this function returns the given opts as they were provided.
func AppendServerOptions(opts []grpc.ServerOption, propagator propagation.TextMapPropagator, tracerProvider trace.TracerProvider) []grpc.ServerOption {
if propagator != nil && tracerProvider != nil {
opts = append(opts, NewServerStatsHandler(propagator, tracerProvider))
}
return unaries, streams
return opts
}

// setupHTTPServerOptions initializes the server options for HTTP handlers.
Expand Down
2 changes: 0 additions & 2 deletions utility.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import (
"sort"
"strings"
"text/template"
"time"

"github.com/form3tech-oss/jwt-go"
gzerrors "github.com/gazebo-web/gz-go/v9/errors"
Expand Down Expand Up @@ -141,7 +140,6 @@ func Trace(skip int) string {
// RandomString creates a random string of a given length.
// Ref: https://siongui.github.io/2015/04/13/go-generate-random-string/
func RandomString(strlen int) string {
rand.Seed(time.Now().UTC().UnixNano())
const chars = "abcdefghijklmnopqrstuvwxyz"
result := make([]byte, strlen)
for i := 0; i < strlen; i++ {
Expand Down

0 comments on commit 23202ca

Please sign in to comment.