Documentation ¶
Index ¶
Constants ¶
const (
// RequestIDHeaderKey 补充的RequestID Header Key
RequestIDHeaderKey = "X-Request-Id"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientOption ¶
type ClientOption func(*clientOptions)
ClientOption contols the behavior of TraceRequest.
func ClientSpanObserver ¶
func ClientSpanObserver(f func(span opentracing.Span, r *http.Request)) ClientOption
ClientSpanObserver returns a ClientOption that observes the span for the client-side span.
func ClientTrace ¶
func ClientTrace(enabled bool) ClientOption
ClientTrace returns a ClientOption that turns on or off extra instrumentation via httptrace.WithClientTrace.
func ComponentName ¶
func ComponentName(componentName string) ClientOption
ComponentName returns a ClientOption that sets the component name for the client-side span.
func InjectSpanContext ¶
func InjectSpanContext(enabled bool) ClientOption
InjectSpanContext returns a ClientOption that turns on or off injection of the Span context in the request HTTP headers. If this option is not used, the default behaviour is to inject the span context.
func OperationName ¶
func OperationName(operationName string) ClientOption
OperationName returns a ClientOption that sets the operation name for the client-side span.
type Tracer ¶
type Tracer struct {
// contains filtered or unexported fields
}
Tracer holds tracing details for one HTTP request.
func TraceRequest ¶
func TraceRequest(tr opentracing.Tracer, req *http.Request, options ...ClientOption) (*http.Request, *Tracer)
TraceRequest adds a ClientTracer to req, tracing the request and all requests caused due to redirects. When tracing requests this way you must also use Transport.
Example:
func AskGoogle(ctx context.Context) error { client := &http.Client{Transport: &nethttp.Transport{}} req, err := http.NewRequest("GET", "http://google.com", nil) if err != nil { return err } req = req.WithContext(ctx) // extend existing trace, if any req, ht := nethttp.TraceRequest(tracer, req) defer ht.Finish() res, err := client.Do(req) if err != nil { return err } res.Body.Close() return nil }
func TracerFromRequest ¶
TracerFromRequest retrieves the Tracer from the request. If the request does not have a Tracer it will return nil.
type Transport ¶
type Transport struct { // The actual RoundTripper to use for the request. A nil // RoundTripper defaults to http.DefaultTransport. http.RoundTripper }
Transport wraps a RoundTripper. If a request is being traced with Tracer, Transport will inject the current span into the headers, and set HTTP related tags on the span.