gotosocial/vendor/github.com/technologize/otel-go-contrib/otelginmetrics/config.go
Tsuribori 1ba3e14b36
[feature] Initial Prometheus metrics implementation (#2334)
* feat: Initial OTEL metrics

* docs: add metrics documentation

* fix: metrics endpoint conditional check

* feat: metrics endpoint basic auth

* fix: make metrics-auth-enabled default false

* fix: go fmt helpers.gen.go

* fix: add metric-related env vars to envparsing.sh

* fix: metrics docs

* fix: metrics related stuff in envparsing.sh

* fix: metrics docs

* chore: metrics docs wording

* fix: metrics stuff in envparsing?

* bump otel versions

---------

Co-authored-by: Tsuribori <user@acertaindebian>
Co-authored-by: Tsuribori <none@example.org>
Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
2023-11-20 16:43:55 +01:00

45 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
}