Skip to content

Commit

Permalink
feat(opentelemetry): move opentelemetry module to separate repository
Browse files Browse the repository at this point in the history
  • Loading branch information
karstenkoehler committed Nov 29, 2023
1 parent dcea814 commit df3b13d
Show file tree
Hide file tree
Showing 15 changed files with 119 additions and 95 deletions.
2 changes: 1 addition & 1 deletion app.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"strings"
"time"

"flamingo.me/flamingo/v3/framework/opentelemetry"
"flamingo.me/opentelemetry"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"

"flamingo.me/dingo"
Expand Down
7 changes: 3 additions & 4 deletions core/cache/httpFrontend.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"time"

"flamingo.me/flamingo/v3/framework/flamingo"
"flamingo.me/flamingo/v3/framework/opentelemetry"
"github.com/golang/groupcache/singleflight"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
Expand Down Expand Up @@ -80,7 +79,7 @@ func (hf *HTTPFrontend) Get(ctx context.Context, key string, loader HTTPLoader)
return nil, errors.New("NO backend in Cache")
}

ctx, span := opentelemetry.GetTracer().Start(ctx, "flamingo/cache/httpFrontend/Get")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "flamingo/cache/httpFrontend/Get")
span.AddEvent(key)
defer span.End()

Expand Down Expand Up @@ -115,12 +114,12 @@ func (hf *HTTPFrontend) load(ctx context.Context, key string, loader HTTPLoader,
oldSpan := trace.SpanFromContext(ctx)
newContext := trace.ContextWithSpan(context.Background(), oldSpan)

newContextWithSpan, span := opentelemetry.GetTracer().Start(newContext, "flamingo/cache/httpFrontend/load")
newContextWithSpan, span := otel.Tracer("flamingo.me/opentelemetry").Start(newContext, "flamingo/cache/httpFrontend/load")
span.AddEvent(key)
defer span.End()

data, err := hf.Do(key, func() (res interface{}, resultErr error) {
ctx, fetchRoutineSpan := opentelemetry.GetTracer().Start(newContextWithSpan, "flamingo/cache/httpFrontend/fetchRoutine")
ctx, fetchRoutineSpan := otel.Tracer("flamingo.me/opentelemetry").Start(newContextWithSpan, "flamingo/cache/httpFrontend/fetchRoutine")
fetchRoutineSpan.AddEvent(key)
defer fetchRoutineSpan.End()

Expand Down
8 changes: 3 additions & 5 deletions core/gotemplate/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import (
"sync"
"time"

"flamingo.me/flamingo/v3/framework/opentelemetry"

"flamingo.me/flamingo/v3/framework/flamingo"
)

Expand Down Expand Up @@ -61,7 +59,7 @@ func (e *engine) Inject(
}

func (e *engine) Render(ctx context.Context, name string, data interface{}) (io.Reader, error) {
ctx, span := opentelemetry.GetTracer().Start(ctx, "gotemplate/Render")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "gotemplate/Render")
defer span.End()

lock.Lock()
Expand All @@ -74,7 +72,7 @@ func (e *engine) Render(ctx context.Context, name string, data interface{}) (io.
}
lock.Unlock()

_, span = opentelemetry.GetTracer().Start(ctx, "gotemplate/Execute")
_, span = otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "gotemplate/Execute")
buf := &bytes.Buffer{}

if _, ok := e.templates[name+".html"]; !ok {
Expand All @@ -99,7 +97,7 @@ func (e *engine) Render(ctx context.Context, name string, data interface{}) (io.
}

func (e *engine) loadTemplates(ctx context.Context) error {
ctx, span := opentelemetry.GetTracer().Start(ctx, "gotemplate/loadTemplates")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "gotemplate/loadTemplates")
defer span.End()

e.templates = make(map[string]*template.Template, 0)
Expand Down
5 changes: 2 additions & 3 deletions core/oauth/interfaces/callback_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"flamingo.me/flamingo/v3/core/oauth/application"
"flamingo.me/flamingo/v3/core/oauth/domain"
"flamingo.me/flamingo/v3/framework/flamingo"
"flamingo.me/flamingo/v3/framework/opentelemetry"
"flamingo.me/flamingo/v3/framework/web"
"go.opentelemetry.io/otel/metric"
)
Expand Down Expand Up @@ -39,12 +38,12 @@ var (

func init() {
var err error
loginFailedCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/oauth/login_failed",
loginFailedCount, err = otel.Meter("flamingo.me/opentelemetry").Int64Counter("flamingo/oauth/login_failed",
metric.WithDescription("Count of failed login attempts"))
if err != nil {
panic(err)
}
loginSucceededCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/oauth/login_succeeded",
loginSucceededCount, err = otel.Meter("flamingo.me/opentelemetry").Int64Counter("flamingo/oauth/login_succeeded",
metric.WithDescription("Count of succeeded login attempts"))
if err != nil {
panic(err)
Expand Down
4 changes: 1 addition & 3 deletions core/requesttask/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"net/http"
"sync"

"flamingo.me/flamingo/v3/framework/opentelemetry"

"flamingo.me/flamingo/v3/framework/web"
)

Expand All @@ -32,7 +30,7 @@ func TryDo(ctx context.Context, r *web.Request, task func(ctx context.Context, r
wg.Add(1)

go func() {
ctx, span := opentelemetry.GetTracer().Start(ctx, "requestTask")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "requestTask")
task(ctx, r)
span.End()
wg.Done()
Expand Down
6 changes: 3 additions & 3 deletions core/zap/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import (
"context"
"fmt"

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

"flamingo.me/flamingo/v3/framework/flamingo"
"flamingo.me/flamingo/v3/framework/opentelemetry"
"flamingo.me/flamingo/v3/framework/web"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/trace"
Expand All @@ -24,7 +24,7 @@ var (

func init() {
var err error
logCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/zap/logs",
logCount, err = otel.Meter("flamingo.me/opentelemetry").Int64Counter("flamingo/zap/logs",
metric.WithDescription("Count of logs"))
if err != nil {
panic(err)
Expand Down Expand Up @@ -92,7 +92,7 @@ func (l *Logger) record(level string) {
return
}

logCount.Add(context.Background(), 1, metric.WithAttributes(attribute.String(opentelemetry.KeyArea.Key(), l.configArea), keyLevel.String(level)))
logCount.Add(context.Background(), 1, metric.WithAttributes(attribute.String(web.AreaKey.Key(), l.configArea), keyLevel.String(level)))
}

// Debug logs a message at debug level
Expand Down
13 changes: 7 additions & 6 deletions framework/prefixrouter/front_router.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import (
"strings"
"time"

"flamingo.me/flamingo/v3/framework/opentelemetry"
"flamingo.me/flamingo/v3/framework/web"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/baggage"
"go.opentelemetry.io/otel/metric"
)
Expand All @@ -16,7 +17,7 @@ var rtHistogram metric.Int64Histogram

func init() {
var err error
rtHistogram, err = opentelemetry.GetMeter().Int64Histogram("flamingo/prefixrouter/requesttimes",
rtHistogram, err = otel.Meter("flamingo.me/opentelemetry").Int64Histogram("flamingo/prefixrouter/requesttimes",
metric.WithDescription("prefixrouter request times"), metric.WithUnit("ms"))
if err != nil {
panic(err)
Expand Down Expand Up @@ -86,7 +87,7 @@ func (fr *FrontRouter) SetPrimaryHandlers(handlers []OptionalHandler) {

// ServeHTTP gets Router for Request and lets it handle it
func (fr *FrontRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
areaBaggage, _ := baggage.NewMember(opentelemetry.KeyArea.Key(), "-")
areaBaggage, _ := baggage.NewMember(web.AreaKey.Key(), "-")
bagg := baggage.FromContext(req.Context())
afterDeletionBagg := bagg.DeleteMember(areaBaggage.Key())
if afterDeletionBagg.Len() == bagg.Len() {
Expand All @@ -100,7 +101,7 @@ func (fr *FrontRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
rtHistogram.Record(req.Context(), time.Since(start).Nanoseconds()/1000000)
}()

ctx, span := opentelemetry.GetTracer().Start(req.Context(), "prefixrouter/ServeHTTP")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(req.Context(), "prefixrouter/ServeHTTP")
req = req.WithContext(ctx)
defer span.End()

Expand Down Expand Up @@ -131,7 +132,7 @@ func (fr *FrontRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
router := fr.router[prefix]

bagg := baggage.FromContext(req.Context())
areaBaggage, _ := baggage.NewMember(opentelemetry.KeyArea.Key(), router.area)
areaBaggage, _ := baggage.NewMember(web.AreaKey.Key(), router.area)
bagg, _ = bagg.SetMember(areaBaggage)
c := baggage.ContextWithBaggage(req.Context(), bagg)
req = req.WithContext(c)
Expand Down Expand Up @@ -162,7 +163,7 @@ func (fr *FrontRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
router := fr.router[prefix]

bagg := baggage.FromContext(req.Context())
areaBaggage, _ := baggage.NewMember(opentelemetry.KeyArea.Key(), router.area)
areaBaggage, _ := baggage.NewMember(web.AreaKey.Key(), router.area)
bagg, _ = bagg.SetMember(areaBaggage)
c := baggage.ContextWithBaggage(req.Context(), bagg)
req = req.WithContext(c)
Expand Down
2 changes: 1 addition & 1 deletion framework/prefixrouter/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"strings"
"time"

"flamingo.me/flamingo/v3/framework/opentelemetry"
"flamingo.me/opentelemetry"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"

"flamingo.me/dingo"
Expand Down
4 changes: 1 addition & 3 deletions framework/web/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@ package web
import (
"context"

"flamingo.me/flamingo/v3/framework/opentelemetry"

"go.opentelemetry.io/otel/trace"
)

// RunWithDetachedContext returns a context which is detached from the original deadlines, timeouts & co
func RunWithDetachedContext(origCtx context.Context, fnc func(ctx context.Context)) {
origCtx, span := opentelemetry.GetTracer().Start(origCtx, "flamingo/detachedContext")
origCtx, span := otel.Tracer("flamingo.me/opentelemetry").Start(origCtx, "flamingo/detachedContext")
defer span.End()

request := RequestFromContext(origCtx)
Expand Down
5 changes: 2 additions & 3 deletions framework/web/filter/request_metrics_filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"go.opentelemetry.io/otel/attribute"

"flamingo.me/flamingo/v3/framework/opentelemetry"
"go.opentelemetry.io/otel/metric"

"flamingo.me/flamingo/v3/framework/web"
Expand Down Expand Up @@ -39,12 +38,12 @@ var (

func init() {
var err error
responseBytesCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/response/bytes_count",
responseBytesCount, err = otel.Meter("flamingo.me/opentelemetry").Int64Counter("flamingo/response/bytes_count",
metric.WithDescription("Count of responses number of bytes"), metric.WithUnit("By"))
if err != nil {
panic(err)
}
responsesCount, err = opentelemetry.GetMeter().Int64Counter("flamingo/response/count",
responsesCount, err = otel.Meter("flamingo.me/opentelemetry").Int64Counter("flamingo/response/count",
metric.WithDescription("Count of number of responses"))
if err != nil {
panic(err)
Expand Down
17 changes: 9 additions & 8 deletions framework/web/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"strings"
"time"

"flamingo.me/flamingo/v3/framework/opentelemetry"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/baggage"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/metric"
Expand Down Expand Up @@ -42,6 +42,7 @@ type (
var (
// ControllerKey exposes the current controller/handler key
ControllerKey, _ = baggage.NewKeyProperty("controller")
AreaKey, _ = baggage.NewKeyProperty("area")

// RouterError defines error value for issues appearing during routing process
RouterError contextKeyType = "error"
Expand All @@ -50,7 +51,7 @@ var (

func init() {
var err error
rtHistogram, err = opentelemetry.GetMeter().Int64Histogram("flamingo/router/controller",
rtHistogram, err = otel.Meter("flamingo.me/opentelemetry").Int64Histogram("flamingo/router/controller",
metric.WithDescription("controller request times"), metric.WithUnit("ms"))
if err != nil {
panic(err)
Expand Down Expand Up @@ -105,7 +106,7 @@ func panicToError(p interface{}) error {

func (h *handler) ServeHTTP(rw http.ResponseWriter, httpRequest *http.Request) {
httpRequest.URL.Path = strings.TrimPrefix(httpRequest.URL.Path, h.prefix)
ctx, span := opentelemetry.GetTracer().Start(httpRequest.Context(), "router/ServeHTTP")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(httpRequest.Context(), "router/ServeHTTP")
defer span.End()

session, err := h.sessionStore.LoadByRequest(ctx, httpRequest)
Expand All @@ -117,13 +118,13 @@ func (h *handler) ServeHTTP(rw http.ResponseWriter, httpRequest *http.Request) {
}
}

_, span = opentelemetry.GetTracer().Start(ctx, "router/matchRequest")
_, span = otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "router/matchRequest")
controller, params, handler := h.routerRegistry.matchRequest(httpRequest)

if handler != nil {
bagg := baggage.FromContext(ctx)
ctrBaggage, _ := baggage.NewMember(ControllerKey.Key(), handler.GetHandlerName())
areaBaggage, _ := baggage.NewMember(opentelemetry.KeyArea.Key(), "-")
areaBaggage, _ := baggage.NewMember(AreaKey.Key(), "-")
bagg, _ = bagg.SetMember(ctrBaggage)
afterDeletionBagg := bagg.DeleteMember(areaBaggage.Key())
if afterDeletionBagg.Len() == bagg.Len() {
Expand Down Expand Up @@ -155,13 +156,13 @@ func (h *handler) ServeHTTP(rw http.ResponseWriter, httpRequest *http.Request) {

span.End() // router/matchRequest

ctx, span = opentelemetry.GetTracer().Start(ctx, "router/request")
ctx, span = otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "router/request")
defer span.End()

chain := &FilterChain{
filters: h.filter,
final: func(ctx context.Context, r *Request, rw http.ResponseWriter) (response Result) {
ctx, span := opentelemetry.GetTracer().Start(ctx, "router/controller")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "router/controller")
defer span.End()

defer func() {
Expand Down Expand Up @@ -197,7 +198,7 @@ func (h *handler) ServeHTTP(rw http.ResponseWriter, httpRequest *http.Request) {

var finalErr error
if result != nil {
ctx, span := opentelemetry.GetTracer().Start(ctx, "router/responseApply")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "router/responseApply")

func() {
//catch panic in Apply only
Expand Down
4 changes: 1 addition & 3 deletions framework/web/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ import (
"strconv"
"strings"

"flamingo.me/flamingo/v3/framework/opentelemetry"

"flamingo.me/flamingo/v3/framework/config"
"flamingo.me/flamingo/v3/framework/flamingo"
)
Expand Down Expand Up @@ -268,7 +266,7 @@ func dataParams(params map[interface{}]interface{}) RequestParams {

// Data calls a flamingo data controller
func (r *Router) Data(ctx context.Context, handler string, params map[interface{}]interface{}) interface{} {
ctx, span := opentelemetry.GetTracer().Start(ctx, "flamingo/router/data")
ctx, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "flamingo/router/data")
span.AddEvent(handler)
defer span.End()

Expand Down
6 changes: 3 additions & 3 deletions framework/web/sessionstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"io"
"net/http"

"flamingo.me/flamingo/v3/framework/opentelemetry"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"

"flamingo.me/flamingo/v3/framework/flamingo"
Expand Down Expand Up @@ -52,7 +52,7 @@ func (s *SessionStore) LoadByRequest(ctx context.Context, req *http.Request) (*S
return EmptySession(), nil
}

_, span := opentelemetry.GetTracer().Start(ctx, "flamingo/web/session/load")
_, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "flamingo/web/session/load")
defer span.End()
gs, err := s.sessionStore.New(req, s.sessionName)

Expand Down Expand Up @@ -136,7 +136,7 @@ func (s *SessionStore) Save(ctx context.Context, session *Session) (http.Header,
session.dirty = nil
}

_, span := opentelemetry.GetTracer().Start(ctx, "flamingo/web/session/save")
_, span := otel.Tracer("flamingo.me/opentelemetry").Start(ctx, "flamingo/web/session/save")
defer span.End()
rw := headerResponseWriter(make(http.Header))
if err := s.sessionStore.Save(s.requestFromID(session.s.ID), rw, gs); err != nil {
Expand Down
Loading

0 comments on commit df3b13d

Please sign in to comment.