mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-11 20:12:45 +00:00
1ba3e14b36
* 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>
45 lines
1.1 KiB
Go
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
|
|
}
|