diff --git a/containers/container.go b/containers/container.go index d753d1ca..a4ae3ba5 100644 --- a/containers/container.go +++ b/containers/container.go @@ -613,8 +613,8 @@ func (c *Container) onL7Request(pid uint32, fd uint64, timestamp uint64, r *l7.R switch r.Protocol { case l7.ProtocolHTTP: stats.observe(r.Status.Http(), "", r.Duration) - method, path := l7.ParseHttp(r.Payload) - trace.HttpRequest(method, path, r.Status, r.Duration) + method, path, payload := l7.ParseHttpAndRest(r.Payload) + trace.HttpRequest(method, path, r.Status, r.Duration, r.PayloadSize, payload) case l7.ProtocolHTTP2: if conn.http2Parser == nil { conn.http2Parser = l7.NewHttp2Parser() diff --git a/tracing/tracing.go b/tracing/tracing.go index 98a7fce3..386e113b 100644 --- a/tracing/tracing.go +++ b/tracing/tracing.go @@ -98,7 +98,7 @@ func (t *Trace) createSpan(name string, duration time.Duration, error bool, attr span.End(trace.WithTimestamp(end)) } -func (t *Trace) HttpRequest(method, path string, status l7.Status, duration time.Duration) { +func (t *Trace) HttpRequest(method, path string, status l7.Status, duration time.Duration, requestSize uint64, requestBody string) { if t == nil || method == "" { return } @@ -106,6 +106,8 @@ func (t *Trace) HttpRequest(method, path string, status l7.Status, duration time semconv.HTTPURL(fmt.Sprintf("http://%s%s", t.destination.String(), path)), semconv.HTTPMethod(method), semconv.HTTPStatusCode(int(status)), + semconv.HTTPRequestContentLength(int(requestSize)), + attribute.Key("http.request_body").String(requestBody), ) }