mirror of
https://github.com/nais/wonderwall.git
synced 2026-02-14 09:39:52 +00:00
feat(http): propagate traceparent for httpclient
Co-authored-by: tronghn <trong.huu.nguyen@nav.no>
This commit is contained in:
committed by
Trong Huu Nguyen
parent
bf83a58795
commit
ca77435d6a
1
go.mod
1
go.mod
@@ -23,6 +23,7 @@ require (
|
||||
github.com/spf13/viper v1.19.0
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/uptrace/opentelemetry-go-extra/otellogrus v0.3.2
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0
|
||||
go.opentelemetry.io/otel v1.34.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0
|
||||
go.opentelemetry.io/otel/sdk v1.34.0
|
||||
|
||||
2
go.sum
2
go.sum
@@ -158,6 +158,8 @@ github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M
|
||||
github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
|
||||
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
|
||||
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60=
|
||||
|
||||
27
internal/http/transport.go
Normal file
27
internal/http/transport.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
||||
)
|
||||
|
||||
var (
|
||||
defaultTransport *http.Transport
|
||||
once sync.Once
|
||||
)
|
||||
|
||||
func Transport() http.RoundTripper {
|
||||
once.Do(func() {
|
||||
t := http.DefaultTransport.(*http.Transport).Clone()
|
||||
t.MaxIdleConns = 200
|
||||
t.MaxIdleConnsPerHost = 100
|
||||
t.IdleConnTimeout = 5 * time.Second
|
||||
|
||||
defaultTransport = t
|
||||
})
|
||||
|
||||
return otelhttp.NewTransport(defaultTransport)
|
||||
}
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/nais/wonderwall/pkg/handler/acr"
|
||||
"github.com/nais/wonderwall/pkg/handler/autologin"
|
||||
mw "github.com/nais/wonderwall/pkg/middleware"
|
||||
"github.com/nais/wonderwall/pkg/server"
|
||||
"github.com/nais/wonderwall/pkg/session"
|
||||
"github.com/nais/wonderwall/pkg/url"
|
||||
)
|
||||
@@ -76,7 +75,7 @@ func NewReverseProxy(upstream *urllib.URL, preserveInboundHostHeader bool) *Reve
|
||||
r.Out.Header.Set("X-Wonderwall-Id-Token", idToken)
|
||||
}
|
||||
},
|
||||
Transport: server.DefaultTransport(),
|
||||
Transport: httpinternal.Transport(),
|
||||
}
|
||||
return &ReverseProxy{
|
||||
ReverseProxy: rp,
|
||||
|
||||
@@ -10,6 +10,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
httpinternal "github.com/nais/wonderwall/internal/http"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/lestrrat-go/jwx/v2/jwk"
|
||||
"github.com/lestrrat-go/jwx/v2/jwt"
|
||||
@@ -17,7 +19,6 @@ import (
|
||||
|
||||
"github.com/nais/wonderwall/pkg/openid"
|
||||
openidconfig "github.com/nais/wonderwall/pkg/openid/config"
|
||||
"github.com/nais/wonderwall/pkg/server"
|
||||
urlpkg "github.com/nais/wonderwall/pkg/url"
|
||||
)
|
||||
|
||||
@@ -55,7 +56,7 @@ func NewClient(cfg openidconfig.Config, jwksProvider JwksProvider) *Client {
|
||||
|
||||
httpClient := &http.Client{
|
||||
Timeout: time.Second * 10,
|
||||
Transport: server.DefaultTransport(),
|
||||
Transport: httpinternal.Transport(),
|
||||
}
|
||||
|
||||
return &Client{
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
@@ -16,25 +15,6 @@ import (
|
||||
"github.com/nais/wonderwall/pkg/config"
|
||||
)
|
||||
|
||||
var (
|
||||
defaultTransport *http.Transport
|
||||
once sync.Once
|
||||
)
|
||||
|
||||
// TODO: use otel to propagate trace_id
|
||||
func DefaultTransport() *http.Transport {
|
||||
once.Do(func() {
|
||||
t := http.DefaultTransport.(*http.Transport).Clone()
|
||||
t.MaxIdleConns = 200
|
||||
t.MaxIdleConnsPerHost = 100
|
||||
t.IdleConnTimeout = 5 * time.Second
|
||||
|
||||
defaultTransport = t
|
||||
})
|
||||
|
||||
return defaultTransport
|
||||
}
|
||||
|
||||
func Start(cfg *config.Config, r chi.Router) error {
|
||||
server := http.Server{
|
||||
Addr: cfg.BindAddress,
|
||||
|
||||
Reference in New Issue
Block a user