Documentation
¶
Index ¶
- Constants
- Variables
- func AgentURLFromEnv() *url.URL
- func BoolEnv(key string, def bool) bool
- func BoolEnvNoDefault(key string) (bool, bool)
- func BoolVal(val string, def bool) bool
- func CleanGitMetadataTags(tags map[string]string)
- func ContainerID() string
- func CreateMemfd(name string, data []byte) (int, error)
- func CreateOtelProcessContextMapping(data []byte) error
- func DefaultDialer(timeout time.Duration) *net.Dialer
- func DefaultHTTPClient(timeout time.Duration, disableKeepAlives bool) *http.Client
- func DurationEnv(key string, def time.Duration) time.Duration
- func DurationEnvWithUnit(key string, unit string, def time.Duration) time.Duration
- func EntityID() string
- func ExternalEnvironment() string
- func FloatEnv(key string, def float64) float64
- func ForEachStringTag(str string, delimiter string, fn func(key string, val string))
- func GetGitMetadataTags() map[string]string
- func GetTracerGitMetadataTags() map[string]string
- func IPEnv(key string, def net.IP) net.IP
- func IntEnv(key string, def int) int
- func IsExecutionTraced(ctx context.Context) bool
- func ParseTagString(str string) map[string]string
- func PopExecutionTraced()
- func RefreshGitMetadataTags()
- func ScopedExecutionNotTraced(ctx context.Context) (context.Context, func())
- func SetTracerInitialized(val bool)
- func ToFloat64(value any) (f float64, ok bool)
- func ToInt64(val any) (int64, error)
- func ToUint64(val any) (uint64, error)
- func TracerInitialized() bool
- func UDSClient(socketPath string, timeout time.Duration) *http.Client
- func UnixDataSocketURL(path string) *url.URL
- func VerifyTraceSourceEnabled(hexStr string, target TraceSource) bool
- func WithExecutionNotTraced(ctx context.Context) context.Context
- func WithExecutionTraced(ctx context.Context) context.Context
- type LockMap
- type MetaStructValue
- type StatsdClient
- type TraceSource
- type TraceSourceTagValue
- type XSyncMapCounterMap
Constants ¶
const ( DefaultAgentHostname = "localhost" DefaultTraceAgentPort = "8126" )
const ( // EnvGitMetadataEnabledFlag specifies the environment variable name for enable/disable EnvGitMetadataEnabledFlag = "DD_TRACE_GIT_METADATA_ENABLED" // EnvGitRepositoryURL specifies the environment variable name for git repository URL EnvGitRepositoryURL = "DD_GIT_REPOSITORY_URL" // EnvGitCommitSha specifies the environment variable name git commit sha EnvGitCommitSha = "DD_GIT_COMMIT_SHA" // EnvDDTags specifies the environment variable name global tags EnvDDTags = "DD_TAGS" // TagRepositoryURL specifies the tag name for git repository URL TagRepositoryURL = "git.repository_url" // TagCommitSha specifies the tag name for git commit sha TagCommitSha = "git.commit.sha" // TagGoPath specifies the tag name for go module path TagGoPath = "go_path" // TraceTagRepositoryURL specifies the trace tag name for git repository URL TraceTagRepositoryURL = "_dd.git.repository_url" // TraceTagCommitSha specifies the trace tag name for git commit sha TraceTagCommitSha = "_dd.git.commit.sha" // TraceTagGoPath specifies the trace tag name for go module path TraceTagGoPath = "_dd.go_path" )
const ( // These two constants are not in x/sys/unix by default; copy them from <linux/prctl.h>. //nolint:revive PR_SET_VMA = 0x53564D41 //nolint:revive PR_SET_VMA_ANON_NAME = 0 )
const DDTagsDelimiter = ":"
DDTagsDelimiter is the separator between key-val pairs for DD env vars
const DefaultDogstatsdAddr = "localhost:8125"
const OtelTagsDelimeter = "="
OtelTagsDelimeter is the separator between key-val pairs for OTEL env vars
Variables ¶
var ActiveSpanKey = contextKey{}
ActiveSpanKey is used to set tracer context on a context.Context objects with a unique key
var DefaultTraceAgentUDSPath = "/var/run/datadog/apm.socket"
This is a variable rather than a constant so it can be replaced in unit tests
Functions ¶
func AgentURLFromEnv ¶
AgentURLFromEnv resolves the URL for the trace agent based on the default host/port and UDS path, and via standard environment variables. AgentURLFromEnv has the following priority order:
- First, DD_TRACE_AGENT_URL if it is set
- Then, if either of DD_AGENT_HOST and DD_TRACE_AGENT_PORT are set, use http://DD_AGENT_HOST:DD_TRACE_AGENT_PORT, defaulting to localhost and 8126, respectively
- Then, DefaultTraceAgentUDSPath, if the path exists
- Finally, localhost:8126
func BoolEnv ¶
BoolEnv returns the parsed boolean value of an environment variable, or def otherwise.
func BoolEnvNoDefault ¶ added in v2.3.0
BoolEnvNoDefault returns the parsed boolean value of an environment variable. The second returned bool signals if the value was set and was a correct boolean value.
func CleanGitMetadataTags ¶
CleanGitMetadataTags cleans up tags from git metadata
func ContainerID ¶
func ContainerID() string
ContainerID attempts to return the container ID from /proc/self/cgroup or empty on failure.
func CreateOtelProcessContextMapping ¶ added in v2.5.0
func DefaultHTTPClient ¶ added in v2.5.0
func DurationEnv ¶
DurationEnv returns the parsed duration value of an environment variable, or def otherwise.
func DurationEnvWithUnit ¶ added in v2.3.0
DurationEnvWithUnit returns the parsed duration value of an environment variable with the specified unit, or def otherwise.
func EntityID ¶
func EntityID() string
EntityID attempts to return the container ID or the cgroup node controller's inode if the container ID is not available. The cid is prefixed with `ci-` and the inode with `in-`.
func ExternalEnvironment ¶
func ExternalEnvironment() string
ExternalEnvironment returns the value of the DD_EXTERNAL_ENV environment variable.
func FloatEnv ¶
FloatEnv returns the parsed float64 value of an environment variable, or def otherwise.
func ForEachStringTag ¶
ForEachStringTag runs fn on every key val pair encountered in str. str may contain multiple key val pairs separated by either space or comma (but not a mixture of both), and each key val pair is separated by a delimiter.
func GetGitMetadataTags ¶
GetGitMetadataTags returns git metadata tags. Returned map is read-only
func GetTracerGitMetadataTags ¶
GetTracerGitMetadataTags returns git metadata tags for tracer NB: Currently tracer inject tags with some workaround (only with _dd prefix and only for the first span in payload) So we provide different tag names
func IsExecutionTraced ¶
IsExecutionTraced returns whether ctx is associated with an execution trace task, as indicated via WithExecutionTraced.
func ParseTagString ¶
ParseTagString returns tags parsed from string as map
func PopExecutionTraced ¶
func PopExecutionTraced()
PopExecutionTraced pops the top executionTracedKey value from the GLS context stack. Must be called to pair with WithExecutionTraced or WithExecutionNotTraced when the associated scope ends.
func RefreshGitMetadataTags ¶
func RefreshGitMetadataTags()
RefreshGitMetadataTags reset cached metadata tags. NOT thread-safe, use for testing only
func ScopedExecutionNotTraced ¶
ScopedExecutionNotTraced marks ctx as not covered by an execution trace task and returns a cleanup function that pops the GLS entry. Unlike using WithExecutionNotTraced + PopExecutionTraced separately, the returned cleanup is goroutine-safe: it captures the pushing goroutine's GLS contextStack pointer and only pops if called from the same goroutine. This makes it safe for use with spans that may be finished on a different goroutine than the one that created them.
func SetTracerInitialized ¶
func SetTracerInitialized(val bool)
func ToFloat64 ¶
ToFloat64 attempts to convert value into a float64. If the value is an integer greater or equal to 2^53 or less than or equal to -2^53, it will not be converted into a float64 to avoid losing precision. If it succeeds in converting, toFloat64 returns the value and true, otherwise 0 and false.
func TracerInitialized ¶
func TracerInitialized() bool
func UDSClient ¶ added in v2.5.0
UDSClient returns a new http.Client which connects using the given UDS socket path.
func UnixDataSocketURL ¶
func VerifyTraceSourceEnabled ¶
func VerifyTraceSourceEnabled(hexStr string, target TraceSource) bool
func WithExecutionNotTraced ¶
WithExecutionNotTraced marks that the context is *not* covered by an execution trace task. This is intended to prevent child spans (which inherit information from ctx) from being considered covered by a task, when an integration may create its own child span with its own execution trace task.
When orchestrion is enabled, this pushes a value onto the per-goroutine GLS stack (unless the fast path is taken because no prior traced value exists). The caller must call PopExecutionTraced when the scope ends to avoid leaking GLS entries on long-lived goroutines.
func WithExecutionTraced ¶
WithExecutionTraced marks ctx as being associated with an execution trace task. It is assumed that ctx already contains a trace task. The caller is responsible for ending the task.
This is intended for a specific case where the database/sql contrib package only creates spans *after* an operation, in case the operation was unavailable, and thus execution trace tasks tied to the span only capture the very end. This function enables creating a task *before* creating a span, and communicating to the APM tracer that it does not need to create a task. In general, APM instrumentation should prefer creating tasks around the operation rather than after the fact, if possible.
Types ¶
type LockMap ¶
LockMap uses an RWMutex to synchronize map access to allow for concurrent access. This should not be used for cases with heavy write load and performance concerns.
func NewLockMap ¶
type MetaStructValue ¶
type MetaStructValue struct {
Value any // TODO: further constraining Value's type, especially if it becomes public
}
MetaStructValue is a custom type wrapper used to send metadata to the agent via the `meta_struct` field instead of the `meta` inside a span.
type StatsdClient ¶
type StatsdClient interface {
Incr(name string, tags []string, rate float64) error
Count(name string, value int64, tags []string, rate float64) error
CountWithTimestamp(name string, value int64, tags []string, rate float64, timestamp time.Time) error
Gauge(name string, value float64, tags []string, rate float64) error
GaugeWithTimestamp(name string, value float64, tags []string, rate float64, timestamp time.Time) error
DistributionSamples(name string, values []float64, tags []string, rate float64) error
Timing(name string, value time.Duration, tags []string, rate float64) error
Flush() error
Close() error
}
func NewStatsdClient ¶
func NewStatsdClient(addr string, globalTags []string) (StatsdClient, error)
NewStatsdClient returns a new statsd client with the provided address and globaltags
type TraceSource ¶
type TraceSource uint8
TraceSource represents the 8-bit bitmask for the _dd.p.ts tag
const ( APMTraceSource TraceSource = 0x01 ASMTraceSource TraceSource = 0x02 DSMTraceSource TraceSource = 0x04 DJMTraceSource TraceSource = 0x08 DBMTraceSource TraceSource = 0x10 )
func ParseTraceSource ¶
func ParseTraceSource(hexStr string) (TraceSource, error)
ParseTraceSource parses a hexadecimal string into a TraceSource bitmask
func (TraceSource) IsSet ¶
func (ts TraceSource) IsSet(src TraceSource) bool
IsSet checks if a specific TraceSource (bit) is enabled
func (*TraceSource) Set ¶
func (ts *TraceSource) Set(src TraceSource)
Set enables specific TraceSource (bit) in the bitmask
func (TraceSource) String ¶
func (ts TraceSource) String() string
String converts the bitmask to a two-character hexadecimal string
func (*TraceSource) Unset ¶
func (ts *TraceSource) Unset(src TraceSource)
Unset disables specific TraceSource (bit) in the bitmask
type TraceSourceTagValue ¶
type TraceSourceTagValue struct {
Value TraceSource
}
TraceSourceTagValue is a custom type wrapper used to create the trace source (_dd.p.ts) tag that will be propagated to downstream distributed traces via the `X-Datadog-Tags` HTTP header for example. It is represented as a 2 character hexadecimal string
type XSyncMapCounterMap ¶
type XSyncMapCounterMap struct {
// contains filtered or unexported fields
}
XSyncMapCounterMap uses xsync protect counter increments and reads during concurrent access. Implementation and related tests were taken/inspired by felixge/countermap https://github.com/felixge/countermap/pull/2
func NewXSyncMapCounterMap ¶
func NewXSyncMapCounterMap() *XSyncMapCounterMap
func (*XSyncMapCounterMap) GetAndReset ¶
func (cm *XSyncMapCounterMap) GetAndReset() map[string]int64
func (*XSyncMapCounterMap) Inc ¶
func (cm *XSyncMapCounterMap) Inc(key string)
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
limiter
Package limiter provides simple rate limiting primitives, and an implementation of a token bucket rate limiter.
|
Package limiter provides simple rate limiting primitives, and an implementation of a token bucket rate limiter. |
|
Package globalconfig stores configuration which applies globally to both the tracer and integrations.
|
Package globalconfig stores configuration which applies globally to both the tracer and integrations. |
|
cachedfetch
Package cachedfetch provides a read-through cache for fetched values.
|
Package cachedfetch provides a read-through cache for fetched values. |
|
validate
Package validate provides hostname validation helpers
|
Package validate provides hostname validation helpers |
|
Package log provides logging utilities for the tracer.
|
Package log provides logging utilities for the tracer. |
|
Package namingschema allows to use the naming schema from the integrations to set different service and span/operation names based on the value of the DD_TRACE_SPAN_ATTRIBUTE_SCHEMA environment variable.
|
Package namingschema allows to use the naming schema from the integrations to set different service and span/operation names based on the value of the DD_TRACE_SPAN_ATTRIBUTE_SCHEMA environment variable. |
|
Package normalizer provides tag normalization
|
Package normalizer provides tag normalization |
|
generator
command
This program generates the `orchestrion.tool.go` file at `./orchestrion/all` from the root of the repository, which contains the necessary directives to facilitate onboarding of orchestrion.
|
This program generates the `orchestrion.tool.go` file at `./orchestrion/all` from the root of the repository, which contains the necessary directives to facilitate onboarding of orchestrion. |
|
matrix
command
|
|
|
Package stableconfig provides utilities to load and manage APM configurations loaded from YAML configuration files
|
Package stableconfig provides utilities to load and manage APM configurations loaded from YAML configuration files |
|
Package telemetry provides a telemetry client that is thread-safe burden-less telemetry client following the specification of the instrumentation telemetry from Datadog.
|
Package telemetry provides a telemetry client that is thread-safe burden-less telemetry client following the specification of the instrumentation telemetry from Datadog. |
|
internal/knownmetrics/generator
command
|
|
|
log
Package log provides secure telemetry logging with strict security controls.
|
Package log provides secure telemetry logging with strict security controls. |
|
telemetrytest
Package telemetrytest provides a mock implementation of the telemetry client for testing purposes
|
Package telemetrytest provides a mock implementation of the telemetry client for testing purposes |
|
Package traceprof contains shared logic for cross-cutting tracer/profiler features.
|
Package traceprof contains shared logic for cross-cutting tracer/profiler features. |
|
Package urlsanitizer provides utilities for sanitizing URLs and DSNs by removing sensitive information.
|
Package urlsanitizer provides utilities for sanitizing URLs and DSNs by removing sensitive information. |