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 is returned when the config could not be validated due to missing API key. ErrMissingAPIKey = errors.New("you must specify an API Key, either via a configuration file or the DD_API_KEY env var") // ErrMissingHostname is returned when the config could not be validated due to missing hostname. ErrMissingHostname = errors.New("failed to automatically set the hostname, you must specify it via configuration for or the DD_HOSTNAME env var") )
Functions ¶
func HasFeature ¶
HasFeature returns true if the feature f is present. Features are values of the DD_APM_FEATURES environment variable.
Types ¶
type AgentConfig ¶
type AgentConfig struct {
Enabled bool
// 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
MaxTPS 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
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
// 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
}
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) HTTPClient ¶
func (c *AgentConfig) HTTPClient() *http.Client
HTTPClient returns a new http.Client 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"`
// RemovePathDigits determines digits in path segments to be obfuscated.
RemovePathDigits bool `mapstructure:"remove_paths_with_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"`
}
JSONObfuscationConfig holds the obfuscation configuration for sensitive data found in JSON objects.
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"`
// 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 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.