46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package otelginmetrics
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"go.opentelemetry.io/otel/attribute"
|
|
semconv "go.opentelemetry.io/otel/semconv/v1.7.0"
|
|
)
|
|
|
|
type config struct {
|
|
recordInFlight bool
|
|
recordSize bool
|
|
recordDuration bool
|
|
groupedStatus bool
|
|
recorder Recorder
|
|
attributes func(serverName, route string, request *http.Request) []attribute.KeyValue
|
|
shouldRecord func(serverName, route string, request *http.Request) bool
|
|
}
|
|
|
|
func defaultConfig() *config {
|
|
return &config{
|
|
recordInFlight: true,
|
|
recordDuration: true,
|
|
recordSize: true,
|
|
groupedStatus: true,
|
|
attributes: DefaultAttributes,
|
|
shouldRecord: func(_, _ string, _ *http.Request) bool {
|
|
return true
|
|
},
|
|
}
|
|
}
|
|
|
|
var DefaultAttributes = func(serverName, route string, request *http.Request) []attribute.KeyValue {
|
|
attrs := []attribute.KeyValue{
|
|
semconv.HTTPMethodKey.String(request.Method),
|
|
}
|
|
|
|
if serverName != "" {
|
|
attrs = append(attrs, semconv.HTTPServerNameKey.String(serverName))
|
|
}
|
|
if route != "" {
|
|
attrs = append(attrs, semconv.HTTPRouteKey.String(route))
|
|
}
|
|
return attrs
|
|
}
|