Documentation ¶
Index ¶
- Constants
- Variables
- func AgentURLFromEnv() *url.URL
- func BoolEnv(key string, def bool) bool
- func BoolVal(val string, def bool) bool
- func CleanGitMetadataTags(tags map[string]string)
- func ContainerID() string
- func DurationEnv(key string, def time.Duration) time.Duration
- func EntityID() 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 IntEnv(key string, def int) int
- func IsExecutionTraced(ctx context.Context) bool
- func ParseTagString(str string) map[string]string
- func RefreshGitMetadataTags()
- func WithExecutionNotTraced(ctx context.Context) context.Context
- func WithExecutionTraced(ctx context.Context) context.Context
- type LockMap
- type MetaStructValue
- type StatsdClient
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 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 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 DurationEnv ¶
DurationEnv returns the parsed duration value of an environment variable, 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 `cid-` and the inode with `in-`.
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 RefreshGitMetadataTags ¶
func RefreshGitMetadataTags()
RefreshGitMetadataTags reset cached metadata tags. NOT thread-safe, use for testing only
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.
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 Gauge(name string, value 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
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
dyngo
Package dyngo is the Go implementation of Datadog's Instrumentation Gateway which provides an event-based instrumentation API based on a stack representation of instrumented functions along with nested event listeners.
|
Package dyngo is the Go implementation of Datadog's Instrumentation Gateway which provides an event-based instrumentation API based on a stack representation of instrumented functions along with nested event listeners. |
emitter
Package emitter provides functions and types used to instrument go libraries to integrate them with Datadog AppSec features.
|
Package emitter provides functions and types used to instrument go libraries to integrate them with Datadog AppSec features. |
emitter/graphqlsec
Package graphql is the GraphQL instrumentation API and contract for AppSec defining an abstract run-time representation of AppSec middleware.
|
Package graphql is the GraphQL instrumentation API and contract for AppSec defining an abstract run-time representation of AppSec middleware. |
emitter/grpcsec
Package grpcsec is the gRPC instrumentation API and contract for AppSec defining an abstract run-time representation of gRPC handlers.
|
Package grpcsec is the gRPC instrumentation API and contract for AppSec defining an abstract run-time representation of gRPC handlers. |
emitter/httpsec
Package httpsec defines is the HTTP instrumentation API and contract for AppSec.
|
Package httpsec defines is the HTTP instrumentation API and contract for AppSec. |
civisibility
|
|
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 httpmem provides an in-memory HTTP server and client, for testing
|
Package httpmem provides an in-memory HTTP server and client, for testing |
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 |
Package telemetry implements a client for sending telemetry information to Datadog regarding usage of an APM library such as tracing or profiling.
|
Package telemetry implements a client for sending telemetry information to Datadog regarding usage of an APM library such as tracing or profiling. |
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. |
testapp
Package testapp has the protbuf/grpc definitions for the test application implemented in traceproftest.
|
Package testapp has the protbuf/grpc definitions for the test application implemented in traceproftest. |
traceproftest
Package traceproftest contains test cases and test helpers for testing cross-cutting tracer/profiler features such as code hotspots and endpoints.
|
Package traceproftest contains test cases and test helpers for testing cross-cutting tracer/profiler features such as code hotspots and endpoints. |