Documentation ¶
Overview ¶
Package setup defines the configuration of the agent
Index ¶
- Constants
- Variables
- func Datadog() pkgconfigmodel.Config
- func EnvVarAreSetAndNotEqual(lhsName string, rhsName string) bool
- func GetBindHost(config pkgconfigmodel.Reader) string
- func GetBindHostFromConfig(cfg pkgconfigmodel.Reader) string
- func GetDefaultSecurityProfilesDir() string
- func GetIPCAddress(config pkgconfigmodel.Reader) (string, error)
- func GetIPCPort() string
- func GetObsPipelineURL(datatype DataType, config pkgconfigmodel.Reader) (string, error)
- func GetProcessAPIAddressPort(config pkgconfigmodel.Reader) (string, error)
- func GetRemoteConfigurationAllowedIntegrations(cfg pkgconfigmodel.Reader) map[string]bool
- func GetSecurityAgentAPIAddressPort(config pkgconfigmodel.Reader) (string, error)
- func GetValidHostAliases(_ context.Context, config pkgconfigmodel.Reader) ([]string, error)
- func InitConfig(config pkgconfigmodel.Config)
- func InitSystemProbeConfig(cfg pkgconfigmodel.Config)
- func IsAgentTelemetryEnabled(cfg pkgconfigmodel.Reader) bool
- func IsCLCRunner(config pkgconfigmodel.Reader) bool
- func IsCloudProviderEnabled(cloudProviderName string, config pkgconfigmodel.Reader) bool
- func IsRemoteConfigEnabled(cfg pkgconfigmodel.Reader) bool
- func LoadCustom(config pkgconfigmodel.Config, additionalKnownEnvVars []string) error
- func LoadDatadogCustom(config pkgconfigmodel.Config, origin string, ...) (*pkgconfigmodel.Warnings, error)
- func LoadProxyFromEnv(config pkgconfigmodel.Config)
- func LoadWithSecret(config pkgconfigmodel.Config, secretResolver secrets.Component, ...) (*pkgconfigmodel.Warnings, error)
- func LoadWithoutSecret(config pkgconfigmodel.Config, additionalEnvVars []string) (*pkgconfigmodel.Warnings, error)
- func Merge(configPaths []string, config pkgconfigmodel.Config) error
- func OTLP(config pkgconfigmodel.Setup)
- func ResolveSecrets(config pkgconfigmodel.Config, secretResolver secrets.Component, origin string) error
- func SetDatadog(cfg pkgconfigmodel.Config)
- func SetSystemProbe(cfg pkgconfigmodel.Config)
- func SystemProbe() pkgconfigmodel.Config
- type ChangeChecker
- type ConfigurationProviders
- type DataType
- type Listeners
- type UnexpectedUnicodeCodepoint
Constants ¶
const ( // DefaultSite is the default site the Agent sends data to. DefaultSite = "datadoghq.com" // DefaultNumWorkers default number of workers for our check runner DefaultNumWorkers = 4 // MaxNumWorkers maximum number of workers for our check runner MaxNumWorkers = 25 // DefaultAPIKeyValidationInterval is the default interval of api key validation checks DefaultAPIKeyValidationInterval = 60 // DefaultForwarderRecoveryInterval is the default recovery interval, // also used if the user-provided value is invalid. DefaultForwarderRecoveryInterval = 2 // DefaultBatchWait is the default HTTP batch wait in second for logs DefaultBatchWait = 5 // DefaultBatchMaxConcurrentSend is the default HTTP batch max concurrent send for logs DefaultBatchMaxConcurrentSend = 0 // DefaultBatchMaxSize is the default HTTP batch max size (maximum number of events in a single batch) for logs DefaultBatchMaxSize = 1000 // DefaultInputChanSize is the default input chan size for events DefaultInputChanSize = 100 // DefaultBatchMaxContentSize is the default HTTP batch max content size (before compression) for logs // It is also the maximum possible size of a single event. Events exceeding this limit are dropped. DefaultBatchMaxContentSize = 5000000 // DefaultAuditorTTL is the default logs auditor TTL in hours DefaultAuditorTTL = 23 // DefaultRuntimePoliciesDir is the default policies directory used by the runtime security module DefaultRuntimePoliciesDir = "/etc/datadog-agent/runtime-security.d" // DefaultCompressorKind is the default compressor. Options available are 'zlib' and 'zstd' DefaultCompressorKind = "zlib" // DefaultZstdCompressionLevel is the default compression level for `zstd`. // Compression level 1 provides the lowest compression ratio, but uses much less RSS especially // in situations where we have a high value for `GOMAXPROCS`. DefaultZstdCompressionLevel = 1 // DefaultLogsSenderBackoffFactor is the default logs sender backoff randomness factor DefaultLogsSenderBackoffFactor = 2.0 // DefaultLogsSenderBackoffBase is the default logs sender base backoff time, seconds DefaultLogsSenderBackoffBase = 1.0 // DefaultLogsSenderBackoffMax is the default logs sender maximum backoff time, seconds DefaultLogsSenderBackoffMax = 120.0 // DefaultLogsSenderBackoffRecoveryInterval is the default logs sender backoff recovery interval DefaultLogsSenderBackoffRecoveryInterval = 2 // DefaultLocalProcessCollectorInterval is the interval at which processes are collected and sent to the workloadmeta // in the core agent if the process check is disabled. DefaultLocalProcessCollectorInterval = 1 * time.Minute // DefaultMaxMessageSizeBytes is the default value for max_message_size_bytes // If a log message is larger than this byte limit, the overflow bytes will be truncated. DefaultMaxMessageSizeBytes = 256 * 1000 // DefaultNetworkPathTimeout defines the default timeout for a network path test DefaultNetworkPathTimeout = 1000 // DefaultNetworkPathMaxTTL defines the default maximum TTL for traceroute tests DefaultNetworkPathMaxTTL = 30 )
const ( // DefaultUpdaterLogFile is the default updater log file DefaultUpdaterLogFile = "/var/log/datadog/updater.log" // DefaultSecurityAgentLogFile points to the log file that will be used by the security-agent if not configured DefaultSecurityAgentLogFile = "/var/log/datadog/security-agent.log" // DefaultProcessAgentLogFile is the default process-agent log file DefaultProcessAgentLogFile = "/var/log/datadog/process-agent.log" // DefaultOTelAgentLogFile is the default otel-agent log file DefaultOTelAgentLogFile = "/var/log/datadog/otel-agent.log" )
const ( OTLPSection = "otlp_config" OTLPTracesSubSectionKey = "traces" OTLPTracePort = OTLPSection + "." + OTLPTracesSubSectionKey + ".internal_port" OTLPTracesEnabled = OTLPSection + "." + OTLPTracesSubSectionKey + ".enabled" OTLPLogsSubSectionKey = "logs" OTLPLogsEnabled = OTLPSection + "." + OTLPLogsSubSectionKey + ".enabled" OTLPReceiverSubSectionKey = "receiver" OTLPReceiverSection = OTLPSection + "." + OTLPReceiverSubSectionKey OTLPMetricsSubSectionKey = "metrics" OTLPMetrics = OTLPSection + "." + OTLPMetricsSubSectionKey OTLPMetricsEnabled = OTLPSection + "." + OTLPMetricsSubSectionKey + ".enabled" OTLPTagCardinalityKey = OTLPMetrics + ".tag_cardinality" OTLPDebugKey = "debug" OTLPDebug = OTLPSection + "." + OTLPDebugKey )
OTLP configuration paths.
const ( // DefaultGRPCConnectionTimeoutSecs sets the default value for timeout when connecting to the agent DefaultGRPCConnectionTimeoutSecs = 60 // DefaultProcessQueueSize is the default max amount of process-agent checks that can be buffered in memory if the forwarder can't consume them fast enough (e.g. due to network disruption) // This can be fairly high as the input should get throttled by queue bytes first. // Assuming we generate ~8 checks/minute (for process/network), this should allow buffering of ~30 minutes of data assuming it fits within the queue bytes memory budget DefaultProcessQueueSize = 256 // DefaultProcessRTQueueSize is the default max amount of process-agent realtime checks that can be buffered in memory // We set a small queue size for real-time message because they get staled very quickly, thus we only keep the latest several payloads DefaultProcessRTQueueSize = 5 // DefaultProcessQueueBytes is the default amount of process-agent check data (in bytes) that can be buffered in memory // Allow buffering up to 60 megabytes of payload data in total DefaultProcessQueueBytes = 60 * 1000 * 1000 // DefaultProcessMaxPerMessage is the default maximum number of processes, or containers per message. Note: Only change if the defaults are causing issues. DefaultProcessMaxPerMessage = 100 // ProcessMaxPerMessageLimit is the maximum allowed value for maximum number of processes, or containers per message. ProcessMaxPerMessageLimit = 10000 // DefaultProcessMaxMessageBytes is the default max for size of a message containing processes or container data. Note: Only change if the defaults are causing issues. DefaultProcessMaxMessageBytes = 1000000 // ProcessMaxMessageBytesLimit is the maximum allowed value for the maximum size of a message containing processes or container data. ProcessMaxMessageBytesLimit = 4000000 // DefaultProcessExpVarPort is the default port used by the process-agent expvar server DefaultProcessExpVarPort = 6062 // DefaultProcessCmdPort is the default port used by process-agent to run a runtime settings server DefaultProcessCmdPort = 6162 // DefaultProcessEntityStreamPort is the default port used by the process-agent to expose Process Entities DefaultProcessEntityStreamPort = 6262 // DefaultProcessEndpoint is the default endpoint for the process agent to send payloads to DefaultProcessEndpoint = "https://process.datadoghq.com" // DefaultProcessEventsEndpoint is the default endpoint for the process agent to send event payloads to DefaultProcessEventsEndpoint = "https://process-events.datadoghq.com" // DefaultProcessEventStoreMaxItems is the default maximum amount of events that can be stored in the Event Store DefaultProcessEventStoreMaxItems = 200 // DefaultProcessEventStoreMaxPendingPushes is the default amount of pending push operations can be handled by the Event Store DefaultProcessEventStoreMaxPendingPushes = 10 // DefaultProcessEventStoreMaxPendingPulls is the default amount of pending pull operations can be handled by the Event Store DefaultProcessEventStoreMaxPendingPulls = 10 // DefaultProcessEventStoreStatsInterval is the default frequency at which the event store sends stats about expired events, in seconds DefaultProcessEventStoreStatsInterval = 20 // DefaultProcessEventsMinCheckInterval is the minimum interval allowed for the process_events check DefaultProcessEventsMinCheckInterval = time.Second // DefaultProcessEventsCheckInterval is the default interval used by the process_events check DefaultProcessEventsCheckInterval = 10 * time.Second // DefaultProcessDiscoveryHintFrequency is the default frequency in terms of number of checks which we send a process discovery hint DefaultProcessDiscoveryHintFrequency = 60 )
const DefaultSecurityAgentCmdPort = 5010
DefaultSecurityAgentCmdPort is the default port used by security-agent to run a runtime settings server
Variables ¶
var ( DefaultPython string // ForceDefaultPython has its value set to true at compile time if we should ignore // the Python version set in the configuration and use `DefaultPython` instead. // We use this to force Python 3 in the Agent 7 as it's the only one available. ForceDefaultPython string )
Variables to initialize at build time
var ( // DefaultDDAgentBin the process agent's binary DefaultDDAgentBin = filepath.Join(InstallPath, "bin/agent/agent") )
var ( // InstallPath is the default install path for the agent // It might be overridden at build time InstallPath = "/opt/datadog-agent" )
Variables to initialize at build time
var StandardJMXIntegrations = map[string]struct{}{
"activemq": {},
"activemq_58": {},
"cassandra": {},
"jmx": {},
"presto": {},
"solr": {},
"tomcat": {},
"kafka": {},
}
StandardJMXIntegrations is the list of standard jmx integrations. This list is used by the Agent to determine if an integration is JMXFetch-based, based only on the integration name. DEPRECATED: this list is only used for backward compatibility with older JMXFetch integration configs. All JMXFetch integrations should instead define `is_jmx: true` at the init_config or instance level.
var StandardStatsdPrefixes = []string{
"datadog.agent",
"datadog.dogstatsd",
"datadog.process",
"datadog.trace_agent",
"datadog.tracer",
"activemq",
"activemq_58",
"airflow",
"cassandra",
"confluent",
"hazelcast",
"hive",
"ignite",
"jboss",
"jvm",
"kafka",
"presto",
"sidekiq",
"solr",
"tomcat",
"runtime",
}
StandardStatsdPrefixes is a list of the statsd prefixes used by the agent and its components
var ( // StartTime is the agent startup time StartTime = time.Now() )
Variables to initialize at start time
Functions ¶
func EnvVarAreSetAndNotEqual ¶
EnvVarAreSetAndNotEqual returns true if two given variables are set in environment and are not equal.
func GetBindHost ¶
func GetBindHost(config pkgconfigmodel.Reader) string
GetBindHost returns `bind_host` variable or default value Not using `config.BindEnvAndSetDefault` as some processes need to know if value was default one or not (e.g. trace-agent)
func GetBindHostFromConfig ¶
func GetBindHostFromConfig(cfg pkgconfigmodel.Reader) string
GetBindHostFromConfig returns the bind_host value from the config
func GetDefaultSecurityProfilesDir ¶ added in v0.55.0
func GetDefaultSecurityProfilesDir() string
GetDefaultSecurityProfilesDir is the default directory used to store Security Profiles by the runtime security module
func GetIPCAddress ¶
func GetIPCAddress(config pkgconfigmodel.Reader) (string, error)
GetIPCAddress returns the IPC address or an error if the address is not local
func GetObsPipelineURL ¶
func GetObsPipelineURL(datatype DataType, config pkgconfigmodel.Reader) (string, error)
GetObsPipelineURL returns the URL under the 'observability_pipelines_worker.' prefix for the given datatype
func GetProcessAPIAddressPort ¶
func GetProcessAPIAddressPort(config pkgconfigmodel.Reader) (string, error)
GetProcessAPIAddressPort returns the API endpoint of the process agent
func GetRemoteConfigurationAllowedIntegrations ¶
func GetRemoteConfigurationAllowedIntegrations(cfg pkgconfigmodel.Reader) map[string]bool
GetRemoteConfigurationAllowedIntegrations returns the list of integrations that can be scheduled with remote-config
func GetSecurityAgentAPIAddressPort ¶ added in v0.55.0
func GetSecurityAgentAPIAddressPort(config pkgconfigmodel.Reader) (string, error)
GetSecurityAgentAPIAddressPort returns the API endpoint of the security agent
func GetValidHostAliases ¶
GetValidHostAliases validates host aliases set in `host_aliases` variable and returns only valid ones.
func InitConfig ¶
func InitConfig(config pkgconfigmodel.Config)
InitConfig initializes the config defaults on a config used by all agents (in particular more than just the serverless agent).
func InitSystemProbeConfig ¶
func InitSystemProbeConfig(cfg pkgconfigmodel.Config)
InitSystemProbeConfig declares all the configuration values normally read from system-probe.yaml.
func IsAgentTelemetryEnabled ¶ added in v0.57.0
func IsAgentTelemetryEnabled(cfg pkgconfigmodel.Reader) bool
IsAgentTelemetryEnabled returns true if Agent Telemetry ise enabled
func IsCLCRunner ¶
func IsCLCRunner(config pkgconfigmodel.Reader) bool
IsCLCRunner returns whether the Agent is in cluster check runner mode
func IsCloudProviderEnabled ¶
func IsCloudProviderEnabled(cloudProviderName string, config pkgconfigmodel.Reader) bool
IsCloudProviderEnabled checks the cloud provider family provided in pkg/util/<cloud_provider>.go against the value for cloud_provider: on the global config object Datadog
func IsRemoteConfigEnabled ¶
func IsRemoteConfigEnabled(cfg pkgconfigmodel.Reader) bool
IsRemoteConfigEnabled returns true if Remote Configuration should be enabled
func LoadCustom ¶
func LoadCustom(config pkgconfigmodel.Config, additionalKnownEnvVars []string) error
LoadCustom reads config into the provided config object
func LoadDatadogCustom ¶
func LoadDatadogCustom(config pkgconfigmodel.Config, origin string, secretResolver optional.Option[secrets.Component], additionalKnownEnvVars []string) (*pkgconfigmodel.Warnings, error)
LoadDatadogCustom loads the datadog config in the given config
func LoadProxyFromEnv ¶
func LoadProxyFromEnv(config pkgconfigmodel.Config)
LoadProxyFromEnv overrides the proxy settings with environment variables
func LoadWithSecret ¶
func LoadWithSecret(config pkgconfigmodel.Config, secretResolver secrets.Component, additionalEnvVars []string) (*pkgconfigmodel.Warnings, error)
LoadWithSecret reads config files and initializes config with decrypted secrets
func LoadWithoutSecret ¶
func LoadWithoutSecret(config pkgconfigmodel.Config, additionalEnvVars []string) (*pkgconfigmodel.Warnings, error)
LoadWithoutSecret reads configs files, initializes the config module without decrypting any secrets
func Merge ¶
func Merge(configPaths []string, config pkgconfigmodel.Config) error
Merge will merge additional configuration into an existing configuration
func ResolveSecrets ¶
func ResolveSecrets(config pkgconfigmodel.Config, secretResolver secrets.Component, origin string) error
ResolveSecrets merges all the secret values from origin into config. Secret values are identified by a value of the form "ENC[key]" where key is the secret key. See: https://github.com/DataDog/datadog-agent/blob/main/docs/agent/secrets.md
func SetDatadog ¶ added in v0.55.0
func SetDatadog(cfg pkgconfigmodel.Config)
SetDatadog sets the the reference to the agent configuration. This is currently used by the legacy converter and config mocks and should not be user anywhere else. Once the legacy converter and mock have been migrated we will remove this function.
func SetSystemProbe ¶ added in v0.57.0
func SetSystemProbe(cfg pkgconfigmodel.Config)
SetSystemProbe sets the the reference to the systemProbe configuration. This is currently used by the config mocks and should not be user anywhere else. Once the mocks have been migrated we will remove this function.
func SystemProbe ¶
func SystemProbe() pkgconfigmodel.Config
SystemProbe returns the current SystemProbe configuration
Types ¶
type ChangeChecker ¶ added in v0.59.0
type ChangeChecker struct {
// contains filtered or unexported fields
}
ChangeChecker checks the state of `config.Datadog` did not change between `NewChangeChecker()“ and `HasChanged()`. It is designed to be used in `TestMain` function as follow:
func TestMain(m *testing.M) { checker := testutil.NewConfigChangeChecker() exit := m.Run() if checker.HasChanged() { os.Exit(1) } os.Exit(exit) }
func NewChangeChecker ¶ added in v0.59.0
func NewChangeChecker() *ChangeChecker
NewChangeChecker creates a new instance of ConfigChangeChecker
func (*ChangeChecker) HasChanged ¶ added in v0.59.0
func (c *ChangeChecker) HasChanged() bool
HasChanged returns whether `config.Datadog` changed since `NewConfigChangeChecker`. If some changes are detected this function displays on the standard error what keys changed.
type ConfigurationProviders ¶
type ConfigurationProviders struct { Name string `mapstructure:"name"` Polling bool `mapstructure:"polling"` PollInterval string `mapstructure:"poll_interval"` TemplateURL string `mapstructure:"template_url"` TemplateDir string `mapstructure:"template_dir"` Username string `mapstructure:"username"` Password string `mapstructure:"password"` CAFile string `mapstructure:"ca_file"` CAPath string `mapstructure:"ca_path"` CertFile string `mapstructure:"cert_file"` KeyFile string `mapstructure:"key_file"` Token string `mapstructure:"token"` GraceTimeSeconds int `mapstructure:"grace_time_seconds"` DegradedDeadlineMinutes int `mapstructure:"degraded_deadline_minutes"` }
ConfigurationProviders helps unmarshalling `config_providers` config param
type DataType ¶
type DataType string
DataType represent the generic data type (e.g. metrics, logs) that can be sent by the Agent
const Traces DataType = "traces"
Traces specifies the data type used for Vector override. See https://vector.dev/docs/reference/configuration/sources/datadog_agent/ for additional details.
type Listeners ¶
Listeners helps unmarshalling `listeners` config param
func (*Listeners) IsProviderEnabled ¶
IsProviderEnabled returns whether a config provider is enabled
func (*Listeners) SetEnabledProviders ¶
SetEnabledProviders registers the enabled config providers in the listener config
type UnexpectedUnicodeCodepoint ¶
type UnexpectedUnicodeCodepoint struct {
// contains filtered or unexported fields
}
UnexpectedUnicodeCodepoint contains specifics about an occurrence of an unexpected unicode codepoint
func FindUnexpectedUnicode ¶
func FindUnexpectedUnicode(input string) []UnexpectedUnicodeCodepoint
FindUnexpectedUnicode reports any _unexpected_ unicode codepoints found in the given 'input' string Unexpected here generally means invisible whitespace and control chars