mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-12 22:37:27 -08:00
chore: add tcp events to remote store span
Signed-off-by: Juraj Michalek <juraj.michalek132@gmail.com>
This commit is contained in:
parent
f131cdd4c5
commit
2e7c739d44
|
@ -18,8 +18,10 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptrace"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -279,7 +281,36 @@ func (c *Client) Store(ctx context.Context, req []byte, attempt int) (WriteRespo
|
|||
ctx, span := otel.Tracer("").Start(ctx, "Remote Store", trace.WithSpanKind(trace.SpanKindClient))
|
||||
defer span.End()
|
||||
|
||||
httpResp, err := c.Client.Do(httpReq.WithContext(ctx))
|
||||
httpReqTrace := &httptrace.ClientTrace{
|
||||
GetConn: func(hostPort string) {
|
||||
span.AddEvent("GetConn", trace.WithAttributes(attribute.String("host", hostPort)))
|
||||
},
|
||||
GotConn: func(info httptrace.GotConnInfo) {
|
||||
span.AddEvent("GotConn", trace.WithAttributes(
|
||||
attribute.Bool("reused", info.Reused),
|
||||
attribute.Bool("wasIdle", info.WasIdle),
|
||||
//attribute.Duration("idleTime", info.IdleTime),
|
||||
))
|
||||
},
|
||||
DNSStart: func(info httptrace.DNSStartInfo) {
|
||||
span.AddEvent("DNSStart", trace.WithAttributes(attribute.String("host", info.Host)))
|
||||
},
|
||||
DNSDone: func(info httptrace.DNSDoneInfo) {
|
||||
span.AddEvent("DNSDone", trace.WithAttributes(attribute.Bool("coalesced", info.Coalesced)))
|
||||
},
|
||||
ConnectStart: func(network, addr string) {
|
||||
span.AddEvent("ConnectStart", trace.WithAttributes(attribute.String("network", network), attribute.String("addr", addr)))
|
||||
},
|
||||
ConnectDone: func(network, addr string, err error) {
|
||||
attrs := []attribute.KeyValue{attribute.String("network", network), attribute.String("addr", addr)}
|
||||
if err != nil {
|
||||
attrs = append(attrs, attribute.String("error", err.Error()))
|
||||
}
|
||||
span.AddEvent("ConnectDone", trace.WithAttributes(attrs...))
|
||||
},
|
||||
}
|
||||
|
||||
httpResp, err := c.Client.Do(httpReq.WithContext(httptrace.WithClientTrace(ctx, httpReqTrace)))
|
||||
if err != nil {
|
||||
// Errors from Client.Do are from (for example) network errors, so are
|
||||
// recoverable.
|
||||
|
|
Loading…
Reference in a new issue