Documentation
¶
Index ¶
Constants ¶
const DefaultLogFilePath = "/var/log/datadog/trace-agent.log"
DefaultLogFilePath is where the agent will write logs if not overridden in the conf
Variables ¶
var ErrMissingAPIKey = errors.New("you must specify an API Key, either via a configuration file or the DD_API_KEY env var")
ErrMissingAPIKey is returned when the config could not be validated due to missing API key.
Functions ¶
This section is empty.
Types ¶
type AgentConfig ¶
type AgentConfig struct {
Enabled bool
FargateOrchestrator fargate.OrchestratorName
// Global
Hostname string
DefaultEnv string // the traces will default to this environment
ConfigPath string // the source of this config, if any
// Endpoints specifies the set of hosts and API keys where traces and stats
// will be uploaded to. The first endpoint is the main configuration endpoint;
// any following ones are read from the 'additional_endpoints' parts of the
// configuration file, if present.
Endpoints []*Endpoint
// Concentrator
BucketInterval time.Duration // the size of our pre-aggregation per bucket
ExtraAggregators []string
// Sampler configuration
ExtraSampleRate float64
TargetTPS float64
MaxEPS float64
// Receiver
ReceiverHost string
ReceiverPort int
ReceiverSocket string // if not empty, UDS will be enabled on unix://<receiver_socket>
ConnectionLimit int // for rate-limiting, how many unique connections to allow in a lease period (30s)
ReceiverTimeout int
MaxRequestBytes int64 // specifies the maximum allowed request size for incoming trace payloads
// Writers
SynchronousFlushing bool // Mode where traces are only submitted when FlushAsync is called, used for Serverless Extension
StatsWriter *WriterConfig
TraceWriter *WriterConfig
ConnectionResetInterval time.Duration // frequency at which outgoing connections are reset. 0 means no reset is performed
// internal telemetry
StatsdHost string
StatsdPort int
// logging
LogLevel string
LogFilePath string
LogThrottling bool
// watchdog
MaxMemory float64 // MaxMemory is the threshold (bytes allocated) above which program panics and exits, to be restarted
MaxCPU float64 // MaxCPU is the max UserAvg CPU the program should consume
WatchdogInterval time.Duration // WatchdogInterval is the delay between 2 watchdog checks
// http/s proxying
ProxyURL *url.URL
SkipSSLValidation bool
// filtering
Ignore map[string][]string
// ReplaceTags is used to filter out sensitive information from tag values.
// It maps tag keys to a set of replacements. Only supported in A6.
ReplaceTags []*ReplaceRule
// GlobalTags list metadata that will be added to all spans
GlobalTags map[string]string
// transaction analytics
AnalyzedRateByServiceLegacy map[string]float64
AnalyzedSpansByService map[string]map[string]float64
// infrastructure agent binary
DDAgentBin string
// Obfuscation holds sensitive data obufscator's configuration.
Obfuscation *ObfuscationConfig
// RequireTags specifies a list of tags which must be present on the root span in order for a trace to be accepted.
RequireTags []*Tag
// RejectTags specifies a list of tags which must be absent on the root span in order for a trace to be accepted.
RejectTags []*Tag
// OTLPReceiver holds the configuration for OpenTelemetry receiver.
OTLPReceiver *OTLP
// Profiling settings, or nil if profiling is disabled
ProfilingSettings *profiling.Settings
}
AgentConfig handles the interpretation of the configuration (with default behaviors) in one place. It is also a simple structure to share across all the Agent components, with 100% safe and reliable values. It is exposed with expvar, so make sure to exclude any sensible field from JSON encoding. Use New() to create an instance.
func Load ¶
func Load(path string) (*AgentConfig, error)
Load returns a new configuration based on the given path. The path must not necessarily exist and a valid configuration can be returned based on defaults and environment variables. If a valid configuration can not be obtained, an error is returned.
func (*AgentConfig) APIKey ¶
func (c *AgentConfig) APIKey() string
APIKey returns the first (main) endpoint's API key.
func (*AgentConfig) NewHTTPClient ¶ added in v0.9.0
func (c *AgentConfig) NewHTTPClient() *http.Client
NewHTTPClient returns a new http.Client to be used for outgoing connections to the Datadog API.
func (*AgentConfig) NewHTTPTransport ¶ added in v0.9.0
func (c *AgentConfig) NewHTTPTransport() *http.Transport
NewHTTPTransport returns a new http.Transport to be used for outgoing connections to the Datadog API.
type Enablable ¶
type Enablable struct {
Enabled bool `mapstructure:"enabled"`
}
Enablable can represent any option that has an "enabled" boolean sub-field.
type Endpoint ¶
type Endpoint struct {
APIKey string `json:"-"` // never marshal this
Host string
// NoProxy will be set to true when the proxy setting for the trace API endpoint
// needs to be ignored (e.g. it is part of the "no_proxy" list in the yaml settings).
NoProxy bool
}
Endpoint specifies an endpoint that the trace agent will write data (traces, stats & services) to.
type HTTPObfuscationConfig ¶
type HTTPObfuscationConfig struct {
// RemoveQueryStrings determines query strings to be removed from HTTP URLs.
RemoveQueryString bool `mapstructure:"remove_query_string" json:"remove_query_string"`
// RemovePathDigits determines digits in path segments to be obfuscated.
RemovePathDigits bool `mapstructure:"remove_paths_with_digits" json:"remove_path_digits"`
}
HTTPObfuscationConfig holds the configuration settings for HTTP obfuscation.
type JSONObfuscationConfig ¶
type JSONObfuscationConfig struct {
// Enabled will specify whether obfuscation should be enabled.
Enabled bool `mapstructure:"enabled"`
// KeepValues will specify a set of keys for which their values will
// not be obfuscated.
KeepValues []string `mapstructure:"keep_values"`
// ObfuscateSQLValues will specify a set of keys for which their values
// will be passed through SQL obfuscation
ObfuscateSQLValues []string `mapstructure:"obfuscate_sql_values"`
}
JSONObfuscationConfig holds the obfuscation configuration for sensitive data found in JSON objects.
type OTLP ¶ added in v0.9.0
type OTLP struct {
// BindHost specifies the host to bind the receiver to.
BindHost string `mapstructure:"-"`
// HTTPPort specifies the port to use for the plain HTTP receiver.
// If unset (or 0), the receiver will be off.
HTTPPort int `mapstructure:"http_port"`
// GRPCPort specifies the port to use for the plain HTTP receiver.
// If unset (or 0), the receiver will be off.
GRPCPort int `mapstructure:"grpc_port"`
// MaxRequestBytes specifies the maximum number of bytes that will be read
// from an incoming HTTP request.
MaxRequestBytes int64 `mapstructure:"-"`
}
OTLP holds the configuration for the OpenTelemetry receiver.
type ObfuscationConfig ¶
type ObfuscationConfig struct {
// ES holds the obfuscation configuration for ElasticSearch bodies.
ES JSONObfuscationConfig `mapstructure:"elasticsearch"`
// Mongo holds the obfuscation configuration for MongoDB queries.
Mongo JSONObfuscationConfig `mapstructure:"mongodb"`
// SQLExecPlan holds the obfuscation configuration for SQL Exec Plans. This is strictly for safety related obfuscation,
// not normalization. Normalization of exec plans is configured in SQLExecPlanNormalize.
SQLExecPlan JSONObfuscationConfig `mapstructure:"sql_exec_plan"`
// SQLExecPlanNormalize holds the normalization configuration for SQL Exec Plans.
SQLExecPlanNormalize JSONObfuscationConfig `mapstructure:"sql_exec_plan_normalize"`
// HTTP holds the obfuscation settings for HTTP URLs.
HTTP HTTPObfuscationConfig `mapstructure:"http"`
// RemoveStackTraces specifies whether stack traces should be removed.
// More specifically "error.stack" tag values will be cleared.
RemoveStackTraces bool `mapstructure:"remove_stack_traces"`
// Redis holds the configuration for obfuscating the "redis.raw_command" tag
// for spans of type "redis".
Redis Enablable `mapstructure:"redis"`
// Memcached holds the configuration for obfuscating the "memcached.command" tag
// for spans of type "memcached".
Memcached Enablable `mapstructure:"memcached"`
}
ObfuscationConfig holds the configuration for obfuscating sensitive data for various span types.
type ReplaceRule ¶
type ReplaceRule struct {
// Name specifies the name of the tag that the replace rule addresses. However,
// some exceptions apply such as:
// • "resource.name" will target the resource
// • "*" will target all tags and the resource
Name string `mapstructure:"name"`
// Pattern specifies the regexp pattern to be used when replacing. It must compile.
Pattern string `mapstructure:"pattern"`
// Re holds the compiled Pattern and is only used internally.
Re *regexp.Regexp `mapstructure:"-"`
// Repl specifies the replacement string to be used when Pattern matches.
Repl string `mapstructure:"repl"`
}
ReplaceRule specifies a replace rule.
type Subscriber ¶ added in v0.9.0
type Subscriber struct {
// contains filtered or unexported fields
}
Subscriber subscribes for configuration updates from agent-core. Provides to trace-agent clients the latest available configurations.
func NewSubscriber ¶ added in v0.9.0
func NewSubscriber() *Subscriber
NewSubscriber returns a new configuration store
func (*Subscriber) Get ¶ added in v0.9.0
func (s *Subscriber) Get(req *pbgo.GetConfigsRequest) (*pbgo.ConfigResponse, error)
Get returns the latest available configurations
func (*Subscriber) Stop ¶ added in v0.9.0
func (s *Subscriber) Stop()
Stop listening for new configurations
type WriterConfig ¶
type WriterConfig struct {
// ConnectionLimit specifies the maximum number of concurrent outgoing
// connections allowed for the sender.
ConnectionLimit int `mapstructure:"connection_limit"`
// QueueSize specifies the maximum number or payloads allowed to be queued
// in the sender.
QueueSize int `mapstructure:"queue_size"`
// FlushPeriodSeconds specifies the frequency at which the writer's buffer
// will be flushed to the sender, in seconds. Fractions are permitted.
FlushPeriodSeconds float64 `mapstructure:"flush_period_seconds"`
}
WriterConfig specifies configuration for an API writer.
Directories
¶
| Path | Synopsis |
|---|---|
|
configdefs
module
|
|
|
Package features provides an API for enabling features and checking if a given feature is enabled.
|
Package features provides an API for enabling features and checking if a given feature is enabled. |