Skip to content

Commit 1ca1f56

Browse files
feat(opentelemetry): upgrade to latest API versions
1 parent 574271d commit 1ca1f56

File tree

9 files changed

+113
-95
lines changed

9 files changed

+113
-95
lines changed

core/cache/httpFrontend.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ import (
99
"net/http"
1010
"time"
1111

12-
"flamingo.me/flamingo/v3/framework/opentelemetry"
13-
"go.opentelemetry.io/otel/attribute"
14-
1512
"flamingo.me/flamingo/v3/framework/flamingo"
13+
"flamingo.me/flamingo/v3/framework/opentelemetry"
1614
"github.com/golang/groupcache/singleflight"
15+
"go.opentelemetry.io/otel/attribute"
1716
"go.opentelemetry.io/otel/trace"
1817
)
1918

@@ -113,14 +112,14 @@ func (hf *HTTPFrontend) Get(ctx context.Context, key string, loader HTTPLoader)
113112
}
114113

115114
func (hf *HTTPFrontend) load(ctx context.Context, key string, loader HTTPLoader, keepExistingEntry bool) (cachedResponse, error) {
116-
oldSpan := trace.FromContext(ctx)
117-
newContext := trace.NewContext(context.Background(), oldSpan)
115+
oldSpan := trace.SpanFromContext(ctx)
116+
newContext := trace.ContextWithSpan(context.Background(), oldSpan)
118117

119118
newContextWithSpan, span := opentelemetry.GetTracer().Start(newContext, "flamingo/cache/httpFrontend/load")
120119
span.AddEvent(key)
121120
defer span.End()
122121

123-
data, err, _ := hf.Do(key, func() (res interface{}, resultErr error) {
122+
data, err := hf.Do(key, func() (res interface{}, resultErr error) {
124123
ctx, fetchRoutineSpan := opentelemetry.GetTracer().Start(newContextWithSpan, "flamingo/cache/httpFrontend/fetchRoutine")
125124
fetchRoutineSpan.AddEvent(key)
126125
defer fetchRoutineSpan.End()

core/oauth/interfaces/callback_controller.go

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@ import (
66
"fmt"
77
"net/url"
88

9-
"flamingo.me/flamingo/v3/framework/opentelemetry"
10-
"go.opentelemetry.io/otel/metric/instrument"
11-
"go.opentelemetry.io/otel/metric/instrument/syncint64"
12-
"go.opentelemetry.io/otel/metric/unit"
13-
149
"flamingo.me/flamingo/v3/core/oauth/application"
1510
"flamingo.me/flamingo/v3/core/oauth/domain"
1611
"flamingo.me/flamingo/v3/framework/flamingo"
12+
"flamingo.me/flamingo/v3/framework/opentelemetry"
1713
"flamingo.me/flamingo/v3/framework/web"
14+
"go.opentelemetry.io/otel/metric"
1815
)
1916

2017
type (
@@ -35,20 +32,20 @@ type (
3532

3633
var (
3734
// loginFailedCount counts the failed login attempts
38-
loginFailedCount syncint64.Counter
35+
loginFailedCount metric.Int64Counter
3936
// loginSucceededCount counts the successful login attempts
40-
loginSucceededCount syncint64.Counter
37+
loginSucceededCount metric.Int64Counter
4138
)
4239

4340
func init() {
4441
var err error
45-
loginFailedCount, err = opentelemetry.GetMeter().SyncInt64().Counter("flamingo/oauth/login_failed",
46-
instrument.WithDescription("Count of failed login attempts"), instrument.WithUnit(unit.Dimensionless))
42+
loginFailedCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/oauth/login_failed",
43+
metric.WithDescription("Count of failed login attempts"))
4744
if err != nil {
4845
panic(err)
4946
}
50-
loginSucceededCount, err = opentelemetry.GetMeter().SyncInt64().Counter("flamingo/oauth/login_succeeded",
51-
instrument.WithDescription("Count of succeeded login attempts"), instrument.WithUnit(unit.Dimensionless))
47+
loginSucceededCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/oauth/login_succeeded",
48+
metric.WithDescription("Count of succeeded login attempts"))
5249
if err != nil {
5350
panic(err)
5451
}

core/zap/logger.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@ import (
66

77
"go.opentelemetry.io/otel/attribute"
88

9-
"flamingo.me/flamingo/v3/framework/opentelemetry"
10-
"go.opentelemetry.io/otel/metric/instrument"
11-
"go.opentelemetry.io/otel/metric/instrument/syncint64"
12-
"go.opentelemetry.io/otel/metric/unit"
13-
149
"flamingo.me/flamingo/v3/framework/flamingo"
10+
"flamingo.me/flamingo/v3/framework/opentelemetry"
1511
"flamingo.me/flamingo/v3/framework/web"
12+
"go.opentelemetry.io/otel/metric"
1613
"go.opentelemetry.io/otel/trace"
1714
"go.uber.org/zap"
1815
"go.uber.org/zap/zapcore"
@@ -21,14 +18,14 @@ import (
2118
type Option func(*Logger)
2219

2320
var (
24-
logCount syncint64.Counter
21+
logCount metric.Int64Counter
2522
keyLevel attribute.Key = "level"
2623
)
2724

2825
func init() {
2926
var err error
30-
logCount, err = opentelemetry.GetMeter().SyncInt64().Counter("flamingo/zap/logs",
31-
instrument.WithDescription("Count of logs"), instrument.WithUnit(unit.Dimensionless))
27+
logCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/zap/logs",
28+
metric.WithDescription("Count of logs"))
3229
if err != nil {
3330
panic(err)
3431
}
@@ -95,8 +92,7 @@ func (l *Logger) record(level string) {
9592
return
9693
}
9794

98-
logCount.Add(context.Background(), 1, attribute.String(opentelemetry.KeyArea.Key(), l.configArea),
99-
keyLevel.String(level))
95+
logCount.Add(context.Background(), 1, metric.WithAttributes(attribute.String(opentelemetry.KeyArea.Key(), l.configArea), keyLevel.String(level)))
10096
}
10197

10298
// Debug logs a message at debug level

framework/opentelemetry/module.go

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ import (
88
"go.opentelemetry.io/otel/baggage"
99

1010
runtimemetrics "go.opentelemetry.io/contrib/instrumentation/runtime"
11-
"go.opentelemetry.io/otel/sdk/metric/aggregator/histogram"
12-
"go.opentelemetry.io/otel/sdk/metric/export/aggregation"
13-
1411
"go.opentelemetry.io/otel/metric"
12+
sdkMetric "go.opentelemetry.io/otel/sdk/metric"
1513
"go.opentelemetry.io/otel/trace"
1614

1715
"flamingo.me/dingo"
@@ -24,11 +22,7 @@ import (
2422
"go.opentelemetry.io/otel/exporters/jaeger"
2523
"go.opentelemetry.io/otel/exporters/prometheus"
2624
"go.opentelemetry.io/otel/exporters/zipkin"
27-
"go.opentelemetry.io/otel/metric/global"
2825
"go.opentelemetry.io/otel/propagation"
29-
controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
30-
processor "go.opentelemetry.io/otel/sdk/metric/processor/basic"
31-
selector "go.opentelemetry.io/otel/sdk/metric/selector/simple"
3226
"go.opentelemetry.io/otel/sdk/resource"
3327
tracesdk "go.opentelemetry.io/otel/sdk/trace"
3428
)
@@ -111,27 +105,19 @@ func (m *Module) Configure(injector *dingo.Injector) {
111105
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
112106

113107
// metrics
114-
config := prometheus.Config{
115-
DefaultHistogramBoundaries: []float64{1, 2, 5, 10, 20, 50},
116-
}
117-
c := controller.New(
118-
processor.NewFactory(
119-
selector.NewWithHistogramDistribution(
120-
histogram.WithExplicitBoundaries(config.DefaultHistogramBoundaries),
121-
),
122-
aggregation.CumulativeTemporalitySelector(),
123-
processor.WithMemory(true),
124-
),
125-
controller.WithResource(resource.NewWithAttributes(
126-
schemaURL,
127-
attribute.String("service.name", m.serviceName),
128-
)),
129-
)
130-
exp, err := prometheus.New(config, c)
108+
109+
// DefaultHistogramBoundaries: []float64{1, 2, 5, 10, 20, 50},
110+
// aggregation.CumulativeTemporalitySelector(),
111+
// processor.WithMemory(true),
112+
// controller.WithResource(resource.NewWithAttributes(schemaURL, attribute.String("service.name", m.serviceName))),
113+
114+
exp, err := prometheus.New()
131115
if err != nil {
132116
log.Fatalf("Failed to initialize Prometheus exporter: %v", err)
133117
}
134-
global.SetMeterProvider(exp.MeterProvider())
118+
119+
meterProvider := sdkMetric.NewMeterProvider(sdkMetric.WithReader(exp))
120+
otel.SetMeterProvider(meterProvider)
135121
if err := runtimemetrics.Start(); err != nil {
136122
log.Fatal(err)
137123
}
@@ -172,7 +158,7 @@ func GetTracer() trace.Tracer {
172158

173159
func GetMeter() metric.Meter {
174160
createMeterOnce.Do(func() {
175-
mp := global.MeterProvider()
161+
mp := otel.GetMeterProvider()
176162
meter = mp.Meter(name, metric.WithInstrumentationVersion(SemVersion()))
177163
})
178164
return meter

framework/prefixrouter/front_router.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,15 @@ import (
99

1010
"flamingo.me/flamingo/v3/framework/opentelemetry"
1111
"go.opentelemetry.io/otel/baggage"
12-
"go.opentelemetry.io/otel/metric/instrument"
13-
"go.opentelemetry.io/otel/metric/instrument/syncint64"
14-
"go.opentelemetry.io/otel/metric/unit"
12+
"go.opentelemetry.io/otel/metric"
1513
)
1614

17-
var rtHistogram syncint64.Histogram
15+
var rtHistogram metric.Int64Histogram
1816

1917
func init() {
2018
var err error
21-
rtHistogram, err = opentelemetry.GetMeter().SyncInt64().Histogram("flamingo/prefixrouter/requesttimes",
22-
instrument.WithDescription("prefixrouter request times"), instrument.WithUnit(unit.Milliseconds))
19+
rtHistogram, err = opentelemetry.GetMeter().Int64Histogram("flamingo/prefixrouter/requesttimes",
20+
metric.WithDescription("prefixrouter request times"), metric.WithUnit("ms"))
2321
if err != nil {
2422
panic(err)
2523
}

framework/web/filter/request_metrics_filter.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import (
88
"go.opentelemetry.io/otel/attribute"
99

1010
"flamingo.me/flamingo/v3/framework/opentelemetry"
11-
"go.opentelemetry.io/otel/metric/instrument"
12-
"go.opentelemetry.io/otel/metric/instrument/syncint64"
13-
"go.opentelemetry.io/otel/metric/unit"
11+
"go.opentelemetry.io/otel/metric"
1412

1513
"flamingo.me/flamingo/v3/framework/web"
1614
)
@@ -32,23 +30,22 @@ type (
3230

3331
var (
3432
// responseBytesCount counts the total number of bytes served by the application
35-
responseBytesCount syncint64.Counter
36-
33+
responseBytesCount metric.Int64Counter
3734
// responseCount count the number of responses served by the application
38-
responsesCount syncint64.Counter
35+
responsesCount metric.Int64Counter
3936
// keyHTTPStatus defines response http status code
4037
keyHTTPStatus attribute.Key = "status_code"
4138
)
4239

4340
func init() {
4441
var err error
45-
responseBytesCount, err = opentelemetry.GetMeter().SyncInt64().Counter("flamingo/response/bytes_count",
46-
instrument.WithDescription("Count of responses number of bytes"), instrument.WithUnit(unit.Bytes))
42+
responseBytesCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/response/bytes_count",
43+
metric.WithDescription("Count of responses number of bytes"), metric.WithUnit("By"))
4744
if err != nil {
4845
panic(err)
4946
}
50-
responsesCount, err = opentelemetry.GetMeter().SyncInt64().Counter("flamingo/response/count",
51-
instrument.WithDescription("Count of number of responses"), instrument.WithUnit(unit.Dimensionless))
47+
responsesCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/response/count",
48+
metric.WithDescription("Count of number of responses"))
5249
if err != nil {
5350
panic(err)
5451
}
@@ -84,8 +81,8 @@ func (r responseMetrics) Apply(ctx context.Context, rw http.ResponseWriter) erro
8481
}
8582

8683
statusAttribute := keyHTTPStatus.String(strconv.Itoa(responseWriter.status/100) + "xx")
87-
responseBytesCount.Add(ctx, responseWriter.bytes, statusAttribute)
88-
responsesCount.Add(ctx, 1, statusAttribute)
84+
responseBytesCount.Add(ctx, responseWriter.bytes, metric.WithAttributes(statusAttribute))
85+
responsesCount.Add(ctx, 1, metric.WithAttributes(statusAttribute))
8986

9087
return err
9188
}

framework/web/handler.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ import (
1313
"flamingo.me/flamingo/v3/framework/opentelemetry"
1414
"go.opentelemetry.io/otel/baggage"
1515
"go.opentelemetry.io/otel/codes"
16-
"go.opentelemetry.io/otel/metric/instrument"
17-
"go.opentelemetry.io/otel/metric/instrument/syncint64"
18-
"go.opentelemetry.io/otel/metric/unit"
16+
"go.opentelemetry.io/otel/metric"
1917

2018
"flamingo.me/flamingo/v3/framework/flamingo"
2119
"github.com/gorilla/securecookie"
@@ -47,13 +45,13 @@ var (
4745

4846
// RouterError defines error value for issues appearing during routing process
4947
RouterError contextKeyType = "error"
50-
rtHistogram syncint64.Histogram
48+
rtHistogram metric.Int64Histogram
5149
)
5250

5351
func init() {
5452
var err error
55-
rtHistogram, err = opentelemetry.GetMeter().SyncInt64().Histogram("flamingo/router/controller",
56-
instrument.WithDescription("controller request times"), instrument.WithUnit(unit.Milliseconds))
53+
rtHistogram, err = opentelemetry.GetMeter().Int64Histogram("flamingo/router/controller",
54+
metric.WithDescription("controller request times"), metric.WithUnit("ms"))
5755
if err != nil {
5856
panic(err)
5957
}

go.mod

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ require (
1212
github.com/ghodss/yaml v1.0.0
1313
github.com/gofrs/uuid v4.3.1+incompatible
1414
github.com/golang-jwt/jwt/v4 v4.5.0
15+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
1516
github.com/google/go-cmp v0.5.9
1617
github.com/gorilla/securecookie v1.1.1
1718
github.com/gorilla/sessions v1.2.1
@@ -27,6 +28,17 @@ require (
2728
github.com/stretchr/testify v1.8.4
2829
github.com/zemirco/memorystore v0.0.0-20160308183530-ecd57e5134f6
2930
go.opencensus.io v0.24.0
31+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0
32+
go.opentelemetry.io/contrib/instrumentation/runtime v0.45.0
33+
go.opentelemetry.io/otel v1.19.0
34+
go.opentelemetry.io/otel/bridge/opencensus v0.42.0
35+
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
36+
go.opentelemetry.io/otel/exporters/prometheus v0.42.0
37+
go.opentelemetry.io/otel/exporters/zipkin v1.19.0
38+
go.opentelemetry.io/otel/metric v1.19.0
39+
go.opentelemetry.io/otel/sdk v1.19.0
40+
go.opentelemetry.io/otel/sdk/metric v1.19.0
41+
go.opentelemetry.io/otel/trace v1.19.0
3042
go.uber.org/automaxprocs v1.5.3
3143
go.uber.org/zap v1.25.0
3244
golang.org/x/oauth2 v0.11.0
@@ -40,31 +52,33 @@ require (
4052
github.com/cockroachdb/apd/v2 v2.0.1 // indirect
4153
github.com/davecgh/go-spew v1.1.1 // indirect
4254
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
55+
github.com/felixge/httpsnoop v1.0.3 // indirect
4356
github.com/go-jose/go-jose/v3 v3.0.0 // indirect
4457
github.com/go-kit/log v0.2.1 // indirect
4558
github.com/go-logfmt/logfmt v0.5.1 // indirect
46-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
59+
github.com/go-logr/logr v1.2.4 // indirect
60+
github.com/go-logr/stdr v1.2.2 // indirect
4761
github.com/golang/protobuf v1.5.3 // indirect
4862
github.com/hashicorp/logutils v1.0.0 // indirect
4963
github.com/inconshreveable/mousetrap v1.1.0 // indirect
5064
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 // indirect
51-
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
65+
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
5266
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect
5367
github.com/pelletier/go-toml v1.9.4 // indirect
5468
github.com/pkg/errors v0.9.1 // indirect
5569
github.com/pmezard/go-difflib v1.0.0 // indirect
56-
github.com/prometheus/client_golang v1.13.0 // indirect
57-
github.com/prometheus/client_model v0.2.0 // indirect
58-
github.com/prometheus/common v0.37.0 // indirect
59-
github.com/prometheus/procfs v0.8.0 // indirect
70+
github.com/prometheus/client_golang v1.17.0 // indirect
71+
github.com/prometheus/client_model v0.5.0 // indirect
72+
github.com/prometheus/common v0.44.0 // indirect
73+
github.com/prometheus/procfs v0.12.0 // indirect
6074
github.com/prometheus/statsd_exporter v0.22.7 // indirect
6175
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect
6276
github.com/stretchr/objx v0.5.0 // indirect
6377
github.com/uber/jaeger-client-go v2.25.0+incompatible // indirect
6478
go.uber.org/multierr v1.10.0 // indirect
6579
golang.org/x/crypto v0.12.0 // indirect
6680
golang.org/x/net v0.14.0 // indirect
67-
golang.org/x/sys v0.11.0 // indirect
81+
golang.org/x/sys v0.13.0 // indirect
6882
golang.org/x/text v0.12.0 // indirect
6983
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
7084
google.golang.org/api v0.84.0 // indirect

0 commit comments

Comments
 (0)