Documentation
¶
Overview ¶
Package httptrace provides functionalities to trace HTTP requests that are commonly required and used across contrib/** integrations.
Index ¶
- Constants
- func BeforeHandle(cfg *ServeConfig, w http.ResponseWriter, r *http.Request) (http.ResponseWriter, *http.Request, func(), bool)
- func FinishRequestSpan(s tracer.Span, status int, errorFn func(int) bool, opts ...tracer.FinishOption)
- func GetErrorCodesFromInput(s string) func(statusCode int) bool
- func HeaderTagsFromRequest(req *http.Request, headerCfg *internal.LockMap) ddtrace.StartSpanOption
- func QueryStringRegexp() *regexp.Regexp
- func ResetCfg()
- func ResetStatusCode(w http.ResponseWriter)
- func StartRequestSpan(r *http.Request, opts ...ddtrace.StartSpanOption) (tracer.Span, context.Context)
- func UrlFromRequest(r *http.Request, queryString bool) string
- type ServeConfig
Constants ¶
const (
// EnvQueryStringRegexp is the name of the env var used to specify the regexp to use for query string obfuscation.
EnvQueryStringRegexp = "DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP"
)
The env vars described below are used to configure the http security tags collection. See https://docs.datadoghq.com/tracing/setup_overview/configure_data_security to learn how to use those properly.
Variables ¶
This section is empty.
Functions ¶
func BeforeHandle ¶ added in v1.69.1
func BeforeHandle(cfg *ServeConfig, w http.ResponseWriter, r *http.Request) (http.ResponseWriter, *http.Request, func(), bool)
BeforeHandle contains functionality that should be executed before a http.Handler runs. It returns the "traced" http.ResponseWriter and http.Request, an additional afterHandle function that should be executed after the Handler runs, and a handled bool that instructs if the request has been handled or not - in case it was handled, the original handler should not run.
func FinishRequestSpan ¶
func FinishRequestSpan(s tracer.Span, status int, errorFn func(int) bool, opts ...tracer.FinishOption)
FinishRequestSpan finishes the given HTTP request span and sets the expected response-related tags such as the status code. If not nil, errorFn will override the isStatusError method on httptrace for determining error codes. Any further span finish option can be added with opts.
func GetErrorCodesFromInput ¶ added in v1.69.0
GetErrorCodesFromInput parses a comma-separated string s to determine which codes are to be considered errors Its purpose is to support the DD_TRACE_HTTP_SERVER_ERROR_STATUSES env var If error condition cannot be determined from s, `nil` is returned e.g, input of "100,200,300-400" returns a function that returns true on 100, 200, and all values between 300-400, inclusive any input that cannot be translated to integer values returns nil
func HeaderTagsFromRequest ¶ added in v1.53.0
HeaderTagsFromRequest matches req headers to user-defined list of header tags and creates span tags based on the header tag target and the req header value
func QueryStringRegexp ¶ added in v1.72.0
func ResetCfg ¶ added in v1.70.0
func ResetCfg()
ResetCfg sets local variable cfg back to its defaults (mainly useful for testing)
func ResetStatusCode ¶ added in v1.71.0
func ResetStatusCode(w http.ResponseWriter)
ResetStatusCode resets the status code of the response writer.
func StartRequestSpan ¶
func StartRequestSpan(r *http.Request, opts ...ddtrace.StartSpanOption) (tracer.Span, context.Context)
StartRequestSpan starts an HTTP request span with the standard list of HTTP request span tags (http.method, http.url, http.useragent). Any further span start option can be added with opts.
func UrlFromRequest ¶ added in v1.72.0
UrlFromRequest returns the full URL from the HTTP request. If queryString is true, params are collected and they are obfuscated either by the default query string obfuscator or the custom obfuscator provided by the user (through DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP) See https://docs.datadoghq.com/tracing/configure_data_security/?tab=net#redact-query-strings for more information.
Types ¶
type ServeConfig ¶ added in v1.69.1
type ServeConfig struct { // Service specifies the service name to use. If left blank, the global service name // will be inherited. Service string // Resource optionally specifies the resource name for this request. Resource string // QueryParams should be true in order to append the URL query values to the "http.url" tag. QueryParams bool // Route is the request matched route if any, or is empty otherwise Route string // RouteParams specifies framework-specific route parameters (e.g. for route /user/:id coming // in as /user/123 we'll have {"id": "123"}). This field is optional and is used for monitoring // by AppSec. It is only taken into account when AppSec is enabled. RouteParams map[string]string // FinishOpts specifies any options to be used when finishing the request span. FinishOpts []ddtrace.FinishOption // SpanOpts specifies any options to be applied to the request starting span. SpanOpts []ddtrace.StartSpanOption // isStatusError allows customization of error code determination. IsStatusError func(int) bool }
ServeConfig specifies the tracing configuration when using TraceAndServe.