Skip to content

Commit

Permalink
Merge pull request #85 from negz/bomp
Browse files Browse the repository at this point in the history
Update gqlgen and otel dependencies
  • Loading branch information
negz committed Nov 9, 2021
2 parents 05daa52 + 8266941 commit 0d1331d
Show file tree
Hide file tree
Showing 6 changed files with 2,678 additions and 659 deletions.
2 changes: 1 addition & 1 deletion build
59 changes: 35 additions & 24 deletions cmd/xgql/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,20 @@ import (
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/handler/apollotracing"
"github.com/99designs/gqlgen/graphql/playground"
texporter "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace"
google "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
otelruntime "go.opentelemetry.io/contrib/instrumentation/runtime"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/exporters/metric/prometheus"
"go.opentelemetry.io/otel/exporters/trace/jaeger"
"go.opentelemetry.io/otel/sdk/metric/controller/basic"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/metric/global"
export "go.opentelemetry.io/otel/sdk/export/metric"
controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
processor "go.opentelemetry.io/otel/sdk/metric/processor/basic"
selector "go.opentelemetry.io/otel/sdk/metric/selector/simple"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
"gopkg.in/alecthomas/kingpin.v2"
Expand Down Expand Up @@ -109,37 +114,43 @@ func main() {

kingpin.FatalIfError(otelruntime.Start(), "cannot add OpenTelemetry runtime instrumentation")

// Observing a log line during startup as follows:
// 2021/06/08 10:03:26 <nil>
// This appears to be fixed with https://github.com/open-telemetry/opentelemetry-go/pull/1851
// However, there is no release for opentelemetry-go with this fix yet.
res := resource.NewWithAttributes(attribute.String("service.name", "crossplane.io/gql"))
res := resource.NewSchemaless(attribute.String("service.name", "crossplane.io/xgql"))

// OpenTelemetry metrics.
prom, err := prometheus.InstallNewPipeline(prometheus.Config{}, basic.WithResource(res))
prom, err := prometheus.New(prometheus.Config{}, controller.New(processor.NewFactory(
selector.NewWithHistogramDistribution(),
export.CumulativeExportKindSelector(),
processor.WithMemory(true))))
kingpin.FatalIfError(err, "cannot create OpenTelemetry Prometheus exporter")

tpOpts := []trace.TracerProviderOption{
trace.WithSampler(trace.ParentBased(trace.TraceIDRatioBased(*ratio))),
trace.WithResource(res),
}
// TODO(negz): Can we avoid this global? Should we?
global.SetMeterProvider(prom.MeterProvider())

switch *tracer {
case "jaeger":
if *agent != nil {
log.Debug("Enabling Jaeger tracer")
exp, err := jaeger.NewRawExporter(jaeger.WithAgentEndpoint(jaeger.WithAgentHost((*agent).IP.String()), jaeger.WithAgentPort(strconv.Itoa((*agent).Port))))
kingpin.FatalIfError(err, "cannot create OpenTelemetry Jaeger exporter")
jp := trace.NewTracerProvider(append(tpOpts, trace.WithSyncer(exp))...)
defer func() {
kingpin.FatalIfError(jp.Shutdown(context.Background()), "cannot shutdown Jaeger exporter")
}()
// We require the Jaeger agent address to be specified in order
// to enable Jaeger for backward compatibility with older xgql
// versions that only supported Jaeger.
if *agent == nil {
break
}
log.Debug("Enabling Jaeger tracer")
exp, err := jaeger.New(jaeger.WithAgentEndpoint(jaeger.WithAgentHost((*agent).IP.String()), jaeger.WithAgentPort(strconv.Itoa((*agent).Port))))
kingpin.FatalIfError(err, "cannot create OpenTelemetry Jaeger exporter")
tp := trace.NewTracerProvider(trace.WithSampler(trace.ParentBased(trace.TraceIDRatioBased(*ratio))), trace.WithResource(res), trace.WithBatcher(exp))
defer func() {
kingpin.FatalIfError(tp.Shutdown(context.Background()), "cannot shutdown Jaeger exporter")
}()
otel.SetTracerProvider(tp)
case "gcp":
log.Debug("Enabling GCP tracer")
_, shutdown, err := texporter.InstallNewPipeline([]texporter.Option{}, tpOpts...)
exp, err := google.New()
kingpin.FatalIfError(err, "cannot create OpenTelemetry GCP exporter")
defer shutdown()
tp := trace.NewTracerProvider(trace.WithSampler(trace.ParentBased(trace.TraceIDRatioBased(*ratio))), trace.WithResource(res), trace.WithBatcher(exp))
defer func() {
kingpin.FatalIfError(tp.Shutdown(context.Background()), "cannot shutdown GCP exporter")
}()
otel.SetTracerProvider(tp)
}

// NOTE(negz): This handler is called when a cache can't watch a type that
Expand Down
25 changes: 13 additions & 12 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,26 @@ module github.com/upbound/xgql
go 1.16

require (
github.com/99designs/gqlgen v0.13.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v0.20.1
github.com/99designs/gqlgen v0.14.1-0.20211024211745-3bbc2a342fc7
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.0.0
github.com/crossplane/crossplane v1.2.1
github.com/crossplane/crossplane-runtime v0.13.0
github.com/go-chi/chi/v5 v5.0.3
github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170
github.com/google/go-cmp v0.5.6
github.com/kjk/smaz v0.0.0-20151202183815-c61c680e82ff
github.com/pkg/errors v0.9.1
github.com/vektah/gqlparser/v2 v2.1.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0
go.opentelemetry.io/contrib/instrumentation/runtime v0.20.0
go.opentelemetry.io/otel v0.20.0
go.opentelemetry.io/otel/exporters/metric/prometheus v0.20.0
go.opentelemetry.io/otel/exporters/trace/jaeger v0.20.0
go.opentelemetry.io/otel/metric v0.20.0
go.opentelemetry.io/otel/sdk v0.20.0
go.opentelemetry.io/otel/sdk/metric v0.20.0
go.opentelemetry.io/otel/trace v0.20.0
github.com/vektah/gqlparser/v2 v2.2.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.25.0
go.opentelemetry.io/contrib/instrumentation/runtime v0.25.0
go.opentelemetry.io/otel v1.0.1
go.opentelemetry.io/otel/exporters/jaeger v1.0.1
go.opentelemetry.io/otel/exporters/prometheus v0.24.0
go.opentelemetry.io/otel/metric v0.24.0
go.opentelemetry.io/otel/sdk v1.0.1
go.opentelemetry.io/otel/sdk/export/metric v0.24.0
go.opentelemetry.io/otel/sdk/metric v0.24.0
go.opentelemetry.io/otel/trace v1.0.1
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba
gopkg.in/alecthomas/kingpin.v2 v2.2.6
k8s.io/api v0.20.2
Expand Down

0 comments on commit 0d1331d

Please sign in to comment.