59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package tracer
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/gofiber/fiber/v2"
|
|
fiberOpentelemetry "github.com/psmarcin/fiber-opentelemetry/pkg/fiber-otel"
|
|
"go.opentelemetry.io/otel/attribute"
|
|
trace "go.opentelemetry.io/otel/trace"
|
|
"runtime"
|
|
)
|
|
|
|
func Handler(fc *fiber.Ctx) (context.Context, trace.Span) {
|
|
spanName := fmt.Sprint(fc.OriginalURL())
|
|
simpleCtx, span := fiberOpentelemetry.Tracer.Start(fc.UserContext(), spanName)
|
|
|
|
fc.SetUserContext(simpleCtx)
|
|
|
|
_, file, line, _ := runtime.Caller(1)
|
|
span.SetAttributes(
|
|
attribute.String("service.layer", "handler"),
|
|
attribute.String("file", file),
|
|
attribute.String("line", fmt.Sprintf("%d", line)),
|
|
)
|
|
|
|
return simpleCtx, span
|
|
}
|
|
|
|
func Service(c context.Context, spanName string) (context.Context, trace.Span) {
|
|
simpleCtx, span := fiberOpentelemetry.Tracer.Start(c, spanName)
|
|
var attribs []attribute.KeyValue
|
|
|
|
_, file, line, _ := runtime.Caller(1)
|
|
attribs = append(
|
|
attribs,
|
|
attribute.String("service.layer", "service"),
|
|
attribute.String("file", file),
|
|
attribute.String("line", fmt.Sprintf("%d", line)),
|
|
)
|
|
|
|
span.SetAttributes(attribs...)
|
|
|
|
return simpleCtx, span
|
|
}
|
|
|
|
func Repository(c context.Context, spanName string) (context.Context, trace.Span) {
|
|
ctx2, span := fiberOpentelemetry.Tracer.Start(c, spanName)
|
|
var attribs []attribute.KeyValue
|
|
|
|
_, file, line, _ := runtime.Caller(1)
|
|
attribs = append(attribs,
|
|
attribute.String("file", file),
|
|
attribute.String("line", fmt.Sprintf("%d", line)),
|
|
)
|
|
span.SetAttributes(attribs...)
|
|
|
|
return ctx2, span
|
|
}
|