Skip to content

Configuring DogStatsD on Agent Data Plane

The DogStatsD implementation on ADP has been redesigned in Rust for better resource guarantees and efficiency. Because the architecture is different from the original implementation, certain configuration values may behave differently, be planned but not yet implemented, or not apply at all. This page documents those nuances.

ADP is designed to be transparent: customers configure DogStatsD the same way they always have. The sections below call out the cases where that is either not yet true, or not quite possible.

If you find an error on this page, please open an issue.

Unsupported Settings

Being Worked On

The following settings are not yet supported in ADP but are planned with GitHub issue links for tracking.

Config KeyDescriptionIssue
dogstatsd_experimental_http.enabledEnable experimental HTTP/H2C DSD listener#1682
dogstatsd_experimental_http.listen_addressBind address for experimental HTTP DSD listener#1682
dogstatsd_pipe_nameWindows named pipe path#1466
dogstatsd_windows_pipe_security_descriptorWindows named pipe ACL descriptor#1466
observability_pipelines_worker.metrics.use_v3_api.seriesOPW metrics v3 series API opt-in#1468
serializer_experimental_use_v3_api.compression_levelV3 API zstd compression level#1468
serializer_experimental_use_v3_api.series.endpointsEndpoints enabled for V3 series API#1468
serializer_experimental_use_v3_api.series.shadow_sample_rateV3 series shadow mode sample rate#1468
serializer_experimental_use_v3_api.series.shadow_sitesV3 series shadow mode enabled sites#1468
serializer_experimental_use_v3_api.series.validateDual-send v2+v3 series for validation#1468
serializer_experimental_use_v3_api.sketches.endpointsEndpoints enabling v3 sketches API#1468
serializer_experimental_use_v3_api.sketches.validateDual-send v2+v3 sketches for validation#1468
tls_handshake_timeoutHTTP TLS handshake timeout#178
use_v3_api.series.enabledGlobal default for series intake API version#1468
use_v3_api.series.endpointsPer-URL override map for series intake version#1468
vector.metrics.use_v3_api.seriesOPW metrics v3 series API opt-in (legacy alias)#1468

Not Planned

The following settings exist in the core agent but are not planned for ADP, typically because ADP's architecture is fundamentally different or the feature is platform-specific.

Config KeyDescriptionReason
aggregator_buffer_sizeChannel buffer depth for aggregator queuesSee below
aggregator_flush_metrics_and_serialize_in_parallel_buffer_sizeParallel flush: series/sketch buffer sizeSee below
aggregator_flush_metrics_and_serialize_in_parallel_chan_sizeParallel flush: channel sizeSee below
aggregator_use_tags_storeEnable shared tag deduplication storeSee below
config_idFleet Automation config ID tagCore Agent uses this only on Agent HA telemetry metrics.
data_plane.telemetry_enabledADP telemetry toggleSee below
data_plane.telemetry_listen_addrADP telemetry listen addressSee below
dogstatsd_host_socket_pathHost UDS socket dir for DSDNot read by DSD server; admission controller only.
dogstatsd_mem_based_rate_limiter.enabledMemory-based rate limiter toggleSee below
dogstatsd_mem_based_rate_limiter.go_gcMemory rate limiter GC percentGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.high_soft_limitMemory rate limiter high soft limitGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.low_soft_limitMemory rate limiter low soft limitGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.memory_ballastMemory rate limiter heap ballast sizeGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.rate_check.factorMemory rate limiter check factorGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.rate_check.maxMemory rate limiter check max intervalGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.rate_check.minMemory rate limiter check min intervalGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.soft_limit_freeos_check.factorMemory rate limiter FreeOS check factorGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.soft_limit_freeos_check.maxMemory rate limiter FreeOS check maxGo GC-specific; ADP uses memory_limit instead.
dogstatsd_mem_based_rate_limiter.soft_limit_freeos_check.minMemory rate limiter FreeOS check minGo GC-specific; ADP uses memory_limit instead.
dogstatsd_no_aggregation_pipeline_batch_sizeNo-aggregation pipeline batch sizeFixed in ADP topology.
dogstatsd_packet_buffer_flush_timeoutPacket buffer flush timeoutADP decodes inline.
dogstatsd_packet_buffer_sizeDatagrams per packet bufferADP decodes inline.
dogstatsd_pipeline_autoadjustAuto-adjust pipeline workersADP uses async tasks.
dogstatsd_pipeline_countParallel processing pipelinesADP uses async tasks.
dogstatsd_queue_sizePacket channel buffer sizeADP uses async tasks.
dogstatsd_stats_bufferInternal stats buffer sizeADP does not expose the core agent's packet-per-second expvar endpoint, so there is no persistent stats endpoint buffer to configure.
dogstatsd_stats_enableEnable internal stats endpointSee below
dogstatsd_stats_portInternal stats endpoint portADP does not expose the core agent's packet-per-second expvar endpoint, so dogstatsd_stats_port has no effect.
dogstatsd_telemetry_enabled_listener_idPer-listener telemetry taggingNot feasible to thread listener identity through ADP's async decode pipeline.
dogstatsd_workers_countNumber of DSD processing workersADP uses async tasks.
enable_json_stream_shared_compressor_buffersPre-allocate shared compressor buffersADP does not use a shared compressor buffer pool; Rust request builders own fixed-capacity scratch and compression buffers.
entity_idAgent pod entity IDADP internal DogStatsD telemetry uses OpenMetrics.
forwarder_requeue_buffer_sizeIn-memory re-queue buffer sizeSee below
heroku_dynoHeroku dyno telemetry modeSee below
logging_frequencyTransaction success log intervalThe core agent uses logging_frequency to throttle repetitive successful transaction logs. ADP logs successful forwarder operations below the default info level, so there is no matching info-level success-log stream to throttle. This key is intentionally unused.
use_dogstatsdMaster DogStatsD enable toggleCore Agent evaluates and sets data_plane.dogstatsd.enabled.

aggregator_buffer_size

The core Agent uses aggregator_buffer_size to size bounded Go channels feeding the aggregator and DogStatsD time sampler workers.

ADP has no equivalent operator-facing setting. Its aggregate transform receives data through the Saluki topology interconnects, which are configured at topology construction time rather than by per-component Agent config keys. The default event interconnect capacity is 128 buffers, and each event buffer can hold up to 1024 events.

Setting aggregator_buffer_size has no effect in ADP.

aggregator_flush_metrics_and_serialize_in_parallel_buffer_size

The core Agent uses aggregator_flush_metrics_and_serialize_in_parallel_buffer_size during aggregator flushes, not for the aggregator's input queues. It controls how many flushed series or sketch objects are grouped into each internal buffered-channel slice while one goroutine produces flushed metrics and another goroutine serializes them.

ADP has no equivalent flush-and-serialize iterable pipeline. The aggregate transform emits aggregated Metric events into the Saluki topology through EventsBuffer batches, and downstream encoder components serialize those events independently of the aggregate transform.

The closest internal ADP buffering is topology-wide: EventsBuffer can hold up to 1024 events, and event interconnects default to 128 buffers. These are not configured through aggregator_flush_metrics_and_serialize_in_parallel_buffer_size, and setting this key has no effect in ADP.

aggregator_flush_metrics_and_serialize_in_parallel_chan_size

The core Agent uses aggregator_flush_metrics_and_serialize_in_parallel_chan_size during aggregator flushes, together with aggregator_flush_metrics_and_serialize_in_parallel_buffer_size. The buffer size controls how many flushed series or sketch objects are grouped into each internal slice, while the channel size controls how many of those slices can queue between the flush producer goroutine and the consumer goroutine that serializes them.

ADP has no equivalent flush-and-serialize iterable pipeline. The aggregate transform emits aggregated Metric events into the Saluki topology through EventsBuffer batches, and downstream encoder components serialize those events independently of the aggregate transform.

The closest internal ADP buffering is topology-wide: EventsBuffer can hold up to 1024 events, and event interconnects default to 128 buffers. These are not configured through aggregator_flush_metrics_and_serialize_in_parallel_chan_size, and setting this key has no effect in ADP.

aggregator_use_tags_store

The core Agent uses aggregator_use_tags_store to enable an aggregator-local, ref-counted tag store. The store deduplicates repeated tag slices across aggregator contexts: contexts retain shared tag entries while active, release them when they expire, and periodic shrinking removes entries that are no longer referenced.

ADP does not have an aggregator-local tag store and does not need this toggle. Metrics reach the aggregate transform with Saluki Context values that already carry ADP-native tag structures. Tag reuse is handled before aggregation by the context resolver, the tags resolver, and SharedTagSet structural sharing.

Related ADP-specific tuning is exposed through context/tag-set resolver settings such as dogstatsd_cached_tagsets_limit, not through aggregator_use_tags_store. Setting aggregator_use_tags_store has no effect in ADP.

data_plane.telemetry_enabled

Deprecated. ADP previously read this key to enable its internal Prometheus telemetry endpoint, but no longer does so. The key is silently ignored.

data_plane.telemetry_listen_addr

Deprecated. ADP previously read this key to configure the address of its internal Prometheus telemetry endpoint, but no longer does so. The key is silently ignored.

dogstatsd_mem_based_rate_limiter.enabled

The Core Agent exposes 11 keys under this prefix to apply backpressure when the Go process approaches its memory limit. They work by manipulating Go's garbage collector (debug.SetGCPercent, debug.FreeOSMemory), allocating a large heap ballast to adjust GC heuristics, and blocking goroutines to slow packet ingestion. None of these mechanisms have an equivalent in Rust, and ADP does not use a Go runtime.

ADP takes a different approach to the same problem using explicit static memory accounting and a process-level RSS limit. All 11 dogstatsd_mem_based_rate_limiter.* keys are not planned. See Memory Management for details.

DogStatsD statistics (dogstatsd_stats_enable / dogstatsd_metrics_stats_enable)

The core agent has two DogStatsD statistics mechanisms with different scopes. dogstatsd_stats_enable enables packet-level throughput statistics from a ring buffer, exposed as Go expvar data on dogstatsd_stats_port (default 5000). Operators must configure an OpenMetrics check to scrape that endpoint before the data is submitted. dogstatsd_metrics_stats_enable enables runtime-toggleable metric-level debug statistics that track count and last-seen time per unique metric and tag combination. That data powers the core agent's dogstatsd-stats CLI command and HTTP endpoint.

ADP does not mirror the packet-level statistics config path. Instead, ADP provides an on-demand metric-level view through a DogStatsD statistics destination that is always wired into the topology, but only collects data during a time-bounded request. To collect statistics, run agent-data-plane dogstatsd stats --duration-secs N or call the privileged /dogstatsd/stats?collection_duration_secs=N API. The handler waits for the requested collection window, then returns count and last-seen time per metric context inline as JSON. The CLI uses the same API and renders the result as either summary or cardinality analysis.

ADP also exposes aggregate DogStatsD counters through its internal telemetry scrape endpoint. This endpoint is separate from /dogstatsd/stats: it does not return the per-metric count and last-seen map, and it is not controlled by the core agent's dogstatsd_stats_* keys. See Scraping internal telemetry for endpoint details and scrape examples.

ADP does not expose the core agent's packet-per-second expvar endpoint or a persistent per-metric DogStatsD statistics endpoint to scrape. You do not need to set up scraper configuration for this per-metric data. The config keys dogstatsd_stats_enable, dogstatsd_stats_buffer, and dogstatsd_stats_port have no effect in ADP. See #1352.

forwarder_requeue_buffer_size

ADP does not implement forwarder_requeue_buffer_size. The core Agent uses this setting to size a separate count-bounded handoff channel from forwarder workers to the retry manager. ADP's endpoint I/O loop handles send failures that need to be retried and owns the retry queue, so ADP does not need a separate queue for worker-to-retry-manager communication. Those failures are re-enqueued into the low-priority retry queue, which is bounded by payload bytes via forwarder_retry_queue_payloads_max_size and optional disk persistence settings. See #1755.

heroku_dyno

The heroku_dyno setting affects the core Agent's self-telemetry heartbeat. It changes the Agent flavor used by the core Agent aggregator so the running heartbeat is emitted as datadog.heroku_agent.running.

ADP does not run in the supported Heroku Agent package path: the Heroku Agent package excludes the agent-data-plane dependency, and the Heroku Datadog launch script starts the core Agent, trace Agent, and optionally process Agent without launching an agent-data-plane process. ADP also does not emit the core Agent's datadog.<agentName>.running series.

Because the affected heartbeat is core-Agent-owned and ADP is not part of the supported Heroku deployment path, ADP does not implement heroku_dyno. See #1753.

Behavioral Differences

The following settings are recognized by both ADP and the core agent, but with different behavior or default values.

Config KeyDescription
aggregator_stop_timeoutTimeout (s) for aggregator flush on stop
dogstatsd_mapper_cache_sizeMapper result LRU cache size
dogstatsd_metrics_stats_enableEnable per-metric debug stats
forwarder_apikey_validation_intervalAPI key check interval (minutes)
forwarder_high_prio_buffer_sizeHigh-priority request queue size
forwarder_num_workersConcurrent forwarder workers
forwarder_stop_timeoutTimeout (s) for forwarder graceful stop
log_levelLog verbosity directives
min_tls_versionMinimum TLS version for HTTPS connections
multi_region_failover.enabledEnable multi-region failover mode
serializer_zstd_compressor_levelZstd compression level
skip_ssl_validationSkip TLS cert validation
statsd_forward_hostUDP packet forwarding destination host

aggregator_stop_timeout

The core Agent uses aggregator_stop_timeout as the shutdown grace period for the aggregator's final flush. During shutdown, the core Agent tries to flush aggregated metrics, events, service checks, and related data to the forwarder before stopping. If dogstatsd_flush_incomplete_buckets is enabled, the same timeout also bounds draining in-flight DogStatsD time sampler batches before that final flush.

ADP uses aggregator_stop_timeout together with forwarder_stop_timeout to configure its topology-wide graceful shutdown timeout. The default is 2 + 2 = 4 seconds. Set data_plane.stop_timeout to override the combined timeout directly.

Support is partial because ADP does not apply this timeout only to an aggregator component. Shutdown is coordinated by the Saluki topology: sources stop first, downstream inputs close, and the aggregate transform performs its final flush when its input stream ends. Whether open aggregation windows are included is controlled by aggregate_flush_open_windows, also aliased as dogstatsd_flush_incomplete_buckets.

dogstatsd_mapper_cache_size

ADP and the core agent both cache mapper results to skip regex evaluation on repeat metric names. With the default value of 1000, and with any positive integer, behavior matches the core agent: results are cached in an LRU keyed by the original metric name, including a negative-cache entry for names that match no profile.

The two implementations diverge when this setting is 0. In the core agent, 0 is rejected by the underlying LRU library, which causes the entire mapper to be silently disabled: mapping profiles configured by dogstatsd_mapper_profiles are not applied. In ADP, 0 disables the result cache only; mapping profiles still run, so each metric pays the regex evaluation cost without amortization.

If you previously set dogstatsd_mapper_cache_size: 0 in the core agent to turn off the mapper, clear dogstatsd_mapper_profiles instead when running ADP.

dogstatsd_metrics_stats_enable

See dogstatsd_stats_enable

forwarder_apikey_validation_interval

ADP supports forwarder_apikey_validation_interval for Datadog intake forwarding. The value is in minutes, defaults to 60, and falls back to that default for non-positive values.

ADP validates configured API keys when the forwarder starts, periodically at the configured interval, and after API-key-related runtime config updates. Validation controls readiness only: confirmed invalid keys can make the forwarder not ready, but the forwarder keeps running and transient validation failures do not prove that keys are invalid.

Support is partial because ADP only tracks additional_endpoints domains present at forwarder startup. Runtime updates can rotate keys for those domains, but brand-new domains are not added or validated until restart.

forwarder_high_prio_buffer_size

ADP implements forwarder_high_prio_buffer_size and matches the core agent's default of 100. The value sizes ADP's per-endpoint high-priority pending queue.

forwarder_num_workers

ADP uses forwarder_max_concurrent_requests to control endpoint concurrency. forwarder_num_workers is still read for HTTP connection pool sizing but no longer controls the maximum number of concurrent requests per endpoint.

forwarder_stop_timeout

The core Agent uses forwarder_stop_timeout as the shutdown grace period for the forwarder.

ADP uses forwarder_stop_timeout together with aggregator_stop_timeout to configure its topology-wide graceful shutdown timeout. The default is 2 + 2 = 4 seconds. Set data_plane.stop_timeout to override the combined timeout directly.

Support is partial because ADP does not apply this timeout only to a forwarder component. It bounds graceful shutdown for the full Saluki topology.

log_level

ADP accepts log_level as the startup logging control. A plain level applies to ADP-owned and Saluki-owned targets only, including agent_data_plane, saluki_*, and runtime crates under lib/.

yaml
log_level: debug

This keeps third-party dependencies such as hyper, tokio, and tonic at their default filtering unless you opt them in.

To control dependency logs or set a global fallback, use advanced EnvFilter directives in log_level. ADP applies those directive strings as configured:

yaml
log_level: warn,agent_data_plane=debug,hyper=warn

min_tls_version

ADP supports min_tls_version for Datadog intake forwarding through the shared Datadog forwarder. The default is tlsv1.2, which allows TLS 1.2 and TLS 1.3. To require TLS 1.3 only, set min_tls_version: tlsv1.3 or DD_MIN_TLS_VERSION=tlsv1.3.

The core agent also accepts tlsv1.0 and tlsv1.1. ADP accepts those values for configuration compatibility, but clamps them to TLS 1.2 because ADP uses rustls, which does not support TLS 1.0 or TLS 1.1.

This setting does not affect ADP IPC, local privileged APIs, ADP control-plane clients, OTLP proxying to the core agent, or unrelated HTTP clients.

multi_region_failover.enabled

ADP supports multi-region failover for metrics. When multi_region_failover.enabled and multi_region_failover.failover_metrics are both true, ADP forwards metrics to the primary Datadog endpoint and to a second MRF endpoint.

To enable the MRF metrics branch at startup, configure multi_region_failover.api_key and one of multi_region_failover.site or multi_region_failover.dd_url. If the MRF endpoint configuration is incomplete, ADP skips the MRF branch and continues forwarding to the primary endpoint.

ADP does not fall back to the primary api_key, site, or dd_url for MRF traffic. multi_region_failover.enabled and endpoint selection are resolved at startup. multi_region_failover.failover_metrics, multi_region_failover.metric_allowlist, and multi_region_failover.api_key can refresh from live configuration after the MRF branch is enabled.

Config KeyBehaviorDefault
multi_region_failover.enabledEnables multi-region failover mode.false
multi_region_failover.failover_metricsEnables metrics forwarding to the failover region when MRF is enabled.false
multi_region_failover.metric_allowlistExact metric names to forward to MRF. Empty or unset forwards all metrics.[]
multi_region_failover.api_keyAPI key for the failover-region endpoint.unset
multi_region_failover.siteDatadog site for the failover region, used as https://app.mrf.<site>.unset
multi_region_failover.dd_urlExplicit failover intake URL. Takes precedence over site when set.unset

serializer_zstd_compressor_level

ADP defaults to level 3 vs Agent level 1. ADP intentionally compresses better. Key is recognized by both; default divergence is intentional.

skip_ssl_validation

ADP supports skip_ssl_validation for Datadog intake forwarding through the shared Datadog forwarder. The default is false, which preserves normal server certificate validation. When enabled, this setting affects the Datadog intake clients used by metrics, logs, traces, events, and service checks that flow through the shared forwarder.

This setting does not affect ADP IPC, local privileged APIs, ADP control-plane clients, OTLP proxying to the core agent, or unrelated HTTP clients. In FIPS builds, ADP rejects skip_ssl_validation: true because disabling TLS certificate validation is not FIPS-compliant.

statsd_forward_host

ADP supports DogStatsD forwarding when both statsd_forward_host and statsd_forward_port are set. ADP forwards each framed DogStatsD message over UDP to the configured destination before parsing, filtering, mapping, or aggregation. Forwarding does not preserve the core Agent's packet-buffer grouping, so forwarded UDP datagrams may be split differently while carrying the same DogStatsD messages. ADP logs setup failures and tracks send failures through telemetry.

Compatibility Unknown

The following settings need further investigation. ADP behavior may differ from the core agent in ways that are not yet fully characterized.

Config KeyDescriptionIssue
forwarder_low_prio_buffer_sizeLow-priority request queue size#1362
telemetry.dogstatsd.aggregator_channel_latency_bucketsHistogram buckets: DSD aggregator channel lag#1679
telemetry.dogstatsd.listeners_channel_latency_bucketsHistogram buckets: listener channel latency#1679
telemetry.dogstatsd.listeners_latency_bucketsHistogram buckets: listener processing#1679
telemetry.dogstatsd_originPer-origin processed-metrics telemetry#1679

ADP-Only Settings

The following settings are specific to ADP and have no equivalent in the core agent.

Config KeyDescriptionDefault
aggregate_context_limitMax contexts per aggregation window
aggregate_flush_intervalAggregator flush period
aggregate_passthrough_idle_flush_timeoutPassthrough buffer flush delay
aggregate_window_duration_secondsAggregation window size
apm_config.obfuscation.sql.dbmsSQL obfuscation DBMS dialect
apm_config.obfuscation.sql.dollar_quoted_funcPreserve dollar-quoted SQL functions
apm_config.obfuscation.sql.keep_sql_aliasPreserve SQL aliases in obfuscation
apm_config.obfuscation.sql.replace_digitsReplace digits in SQL obfuscation
apm_config.obfuscation.sql.table_namesCollect table names during obfuscation
counter_expiry_secondsIdle counter keep-alive duration300
data_plane.stop_timeoutADP graceful shutdown timeout (s)derived
dogstatsd_allow_context_heap_allocsAllow heap allocations for contexts
dogstatsd_autoscale_udp_listenersBind multiple UDP sockets via SO_REUSEPORT
dogstatsd_buffer_count_maxMax receive buffers256
dogstatsd_buffer_countBaseline receive buffers128
dogstatsd_cached_contexts_limitMax cached metric contexts
dogstatsd_cached_tagsets_limitMax cached tagsets
dogstatsd_mapper_string_interner_sizeMapper string interner capacity
dogstatsd_minimum_sample_rateFloor for metric sample rates
dogstatsd_permissive_decodingRelaxes decoder strictnesstrue
dogstatsd_string_interner_size_bytesExplicit byte budget for context interner
dogstatsd_tcp_portTCP listen port for DSD
flush_timeout_secsEncoder flush timeout (secs)
memory_limitProcess memory limit
memory_slop_factorMemory accounting slop fraction0.25
otlp_allow_context_heap_allocsAllow heap allocations for OTLP contexts
otlp_cached_contexts_limitMax cached OTLP metric contexts
otlp_cached_tagsets_limitMax cached OTLP tagsets
otlp_config.receiver.protocols.http.transportOTLP HTTP receiver transport
otlp_config.traces.enable_otlp_compute_top_level_by_span_kindEnable OTLP top-level-by-span-kind
otlp_config.traces.ignore_missing_datadog_fieldsIgnore missing Datadog fields in OTLP
otlp_config.traces.string_interner_sizeOTLP trace string interner capacity
otlp_string_interner_sizeOTLP context interner capacity
serializer_max_metrics_per_payloadMax metrics per payload

data_plane.stop_timeout

ADP uses data_plane.stop_timeout as the topology-wide graceful shutdown timeout. If this key is unset, ADP defaults to aggregator_stop_timeout + forwarder_stop_timeout.

dogstatsd_minimum_sample_rate

ADP enforces a minimum sample rate on incoming metrics to prevent memory exhaustion from extremely low sample rates on histograms and sketches. Sending metrics with a very high inverse sample rate (for example @0.0000001) can cause unbounded memory growth in a sketch; this setting prevents that. The default is conservative enough that normal clients are unaffected.

dogstatsd_permissive_decoding

By default, ADP parses DogStatsD packets with the same leniency as the core agent, accepting packets that technically violate the spec. Setting this to false enables strict mode, which rejects non-conformant packets. Strict mode is not available in the core agent.

memory_limit / memory_slop_factor

ADP uses an explicit process memory limit (memory_limit) rather than relying on Go's garbage collector. The memory_slop_factor reserves a fraction of the limit to account for allocations not tracked by ADP's internal accounting. When memory usage approaches memory_limit, ADP's global limiter begins exerting backpressure (see enable_global_limiter).

memory_slop_factor

See memory_limit above.

Transparent Settings

The following settings work in ADP with the same behavior as the core agent.

To enable syslog logging, set log_to_syslog: true. Console logging remains controlled by log_to_console; enabling syslog does not disable console or file logging. If syslog_uri is empty while syslog logging is enabled, ADP uses the platform default local syslog socket: unixgram:///dev/log on Linux and unixgram:///var/run/syslog on macOS. Set syslog_rfc: true when the receiving syslog daemon expects the Agent's RFC-style header.

DogStatsD metric debug log

ADP supports the core agent's DogStatsD metric debug log. To write this file, set dogstatsd_metrics_stats_enable: true. dogstatsd_logging_enabled also must be true; it defaults to true, so most configurations only need to enable dogstatsd_metrics_stats_enable.

When dogstatsd_logging_enabled is true, ADP connects an extra DogStatsD destination to the decoded metric stream. The destination writes one line per metric sample with the metric name, tags, count, and last-seen time while dogstatsd_metrics_stats_enable is true. When dogstatsd_metrics_stats_enable is false, the destination drains decoded metrics and drops them. This lets runtime configuration changes start and stop the debug log without rebuilding the topology. This feature is for support and troubleshooting. It does not change normal metric forwarding, and it does not replace the on-demand /dogstatsd/stats API.

Use these settings to control the file:

Config KeyBehavior
dogstatsd_log_fileOutput path. If empty, ADP uses the platform default DogStatsD stats log path.
dogstatsd_log_file_max_rollsNumber of rotated files to keep. Defaults to 3.
dogstatsd_log_file_max_sizeMaximum active file size before rotation. Defaults to 10Mb.
dogstatsd_logging_enabledControls whether ADP wires the debug log destination into the topology. Defaults to true.

The default dogstatsd_log_file path is /var/log/datadog/dogstatsd_info/dogstatsd-stats.log on Linux and other Unix platforms, /opt/datadog-agent/logs/dogstatsd_info/dogstatsd-stats.log on macOS, and %ProgramData%\datadog\logs\dogstatsd_info\dogstatsd-stats.log on Windows.

This debug log differs from the dogstatsd_capture_* settings. The debug log records decoded metric summaries after DogStatsD parsing. The capture settings record raw DogStatsD traffic for packet-level investigation, and they remain tracked separately under #1381.

Payload debug logging (log_payloads)

ADP supports log_payloads for debugging metric, event, and service check payload contents before they enter Datadog encoders. To see these logs, set log_payloads: true and run with debug-level logging enabled.

When enabled, ADP logs decoded payload objects: scalar series metrics, sketches/distributions, events, and service checks. These logs can contain high-volume customer data, including metric names, tags, host and container metadata, event text, and service check messages. Use this setting only while diagnosing payload content.

ADP does not dump the exact encoded JSON or protobuf HTTP request body, and it does not log compressed wire payload bytes.

Config KeyDescription
additional_endpointsDual-ship to extra endpoints
agent_ipc.grpc_max_message_sizeMax inbound gRPC message size for IPC client
allow_arbitrary_tagsRelax backend tag validation via HTTP header
api_keyAPI key for endpoint auth
apm_config.obfuscation.credit_cards.enabledapm_config.obfuscation.credit_cards.enabled
apm_config.obfuscation.credit_cards.keep_valuesapm_config.obfuscation.credit_cards.keep_values
apm_config.obfuscation.credit_cards.luhnapm_config.obfuscation.credit_cards.luhn
apm_config.obfuscation.elasticsearch.enabledapm_config.obfuscation.elasticsearch.enabled
apm_config.obfuscation.elasticsearch.keep_valuesapm_config.obfuscation.elasticsearch.keep_values
apm_config.obfuscation.elasticsearch.obfuscate_sql_valuesObfuscate SQL values in ES queries
apm_config.obfuscation.http.remove_paths_with_digitsStrip numeric segments from HTTP paths
apm_config.obfuscation.http.remove_query_stringapm_config.obfuscation.http.remove_query_string
apm_config.obfuscation.memcached.enabledapm_config.obfuscation.memcached.enabled
apm_config.obfuscation.memcached.keep_commandapm_config.obfuscation.memcached.keep_command
apm_config.obfuscation.mongodb.enabledapm_config.obfuscation.mongodb.enabled
apm_config.obfuscation.mongodb.keep_valuesapm_config.obfuscation.mongodb.keep_values
apm_config.obfuscation.mongodb.obfuscate_sql_valuesObfuscate SQL values in MongoDB queries
apm_config.obfuscation.opensearch.enabledapm_config.obfuscation.opensearch.enabled
apm_config.obfuscation.opensearch.keep_valuesapm_config.obfuscation.opensearch.keep_values
apm_config.obfuscation.opensearch.obfuscate_sql_valuesObfuscate SQL values in OpenSearch queries
apm_config.obfuscation.redis.enabledapm_config.obfuscation.redis.enabled
apm_config.obfuscation.redis.remove_all_argsapm_config.obfuscation.redis.remove_all_args
apm_config.obfuscation.valkey.enabledapm_config.obfuscation.valkey.enabled
apm_config.obfuscation.valkey.remove_all_argsapm_config.obfuscation.valkey.remove_all_args
autoscaling.failover.enabledEnable autoscaling failover metric routing
autoscaling.failover.metricsMetric names forwarded to DCA for failover
bind_hostGlobal listen host fallback
cluster_agent.auth_tokenBearer token for Cluster Agent requests
cluster_agent.enabledEnable Cluster Agent communication
cluster_agent.kubernetes_service_nameCluster Agent Kubernetes service name
cluster_agent.urlCluster Agent HTTPS endpoint
cmd_portCore Agent CMD API port for ADP gRPC IPC
cri_connection_timeoutCRI container runtime connection timeout (s)
cri_query_timeoutCRI container runtime query timeout (s)
data_plane.api_listen_addressUnprivileged API listen address
data_plane.dogstatsd.aggregator_tag_filter_cache_capacityTag-filter deduplication cache size
data_plane.log_fileADP log file path
data_plane.otlp.proxy.logs.enabledProxy OTLP logs to Core Agent
data_plane.otlp.proxy.metrics.enabledProxy OTLP metrics to Core Agent
data_plane.otlp.proxy.traces.enabledProxy OTLP traces to Core Agent
data_plane.remote_agent_enabledEnable remote agent mode
data_plane.secure_api_listen_addressPrivileged API listen address
data_plane.use_new_config_stream_endpointUse new config stream endpoint
dd_urlOverride intake endpoint URL
dogstatsd_buffer_sizeReceive buffer size (bytes)
dogstatsd_capture_depthTraffic capture channel depth
dogstatsd_capture_pathTraffic capture file location
dogstatsd_context_expiry_secondsContext cache TTL (seconds)
dogstatsd_disable_verbose_logsSuppress noisy parse error logs
dogstatsd_entity_id_precedenceEntity ID over auto-detection
dogstatsd_eol_requiredRequire newline-terminated messages
dogstatsd_flush_incomplete_bucketsFlush open buckets on shutdown
dogstatsd_log_fileDSD dedicated log file path
dogstatsd_log_file_max_rollsDSD log file max roll count
dogstatsd_log_file_max_sizeDSD log file max size
dogstatsd_logging_enabledEnables DSD metric logging
dogstatsd_mapper_profilesMetric mapping profile definitions
dogstatsd_no_aggregation_pipelineEnable no-agg timestamped path
dogstatsd_non_local_trafficAccept non-localhost UDP/TCP
dogstatsd_origin_detectionEnable UDS origin detection
dogstatsd_origin_detection_clientHonor client origin proto fields
dogstatsd_origin_optout_enabledAllow clients to opt out origin
dogstatsd_portUDP listen port
dogstatsd_so_rcvbufSocket receive buffer size
dogstatsd_socketUDS datagram socket path
dogstatsd_stream_log_too_bigLog oversized UDS stream frames
dogstatsd_stream_socketUDS stream socket path
dogstatsd_string_interner_sizeString interner capacity
dogstatsd_tag_cardinalityDefault tag cardinality level
dogstatsd_tagsExtra tags added to all DSD data
enable_payloads.eventsAllow sending event payloads
enable_payloads.seriesAllow sending series payloads
enable_payloads.service_checksAllow sending service check payloads
enable_payloads.sketchesAllow sending sketch payloads
envAgent environment name
forwarder_backoff_baseRetry backoff base (secs)
forwarder_backoff_factorRetry backoff jitter factor
forwarder_backoff_maxRetry backoff ceiling (secs)
forwarder_connection_reset_intervalHTTP conn reset interval (secs)
forwarder_flush_to_disk_mem_ratioMem-to-disk flush ratio
forwarder_http_protocolHTTP version selection (auto/http1/http2)
forwarder_max_concurrent_requestsMax concurrent HTTP requests
forwarder_outdated_file_in_daysDays before retry files are deleted
forwarder_recovery_intervalBackoff recovery decrease factor
forwarder_recovery_resetReset errors on success
forwarder_retry_queue_capacity_time_interval_secRetry queue time-based capacity
forwarder_retry_queue_max_sizeRetry queue max size (deprecated)
forwarder_retry_queue_payloads_max_sizeRetry queue max size (bytes)
forwarder_storage_max_disk_ratioMax disk usage ratio for retry
forwarder_storage_max_size_in_bytesMax on-disk retry storage size
forwarder_storage_pathOn-disk retry storage directory
forwarder_timeoutForwarder HTTP request timeout
histogram_aggregatesHistogram aggregate statistics
histogram_copy_to_distributionCopy histograms to distributions
histogram_copy_to_distribution_prefixPrefix for hist-to-dist copies
log_format_rfc3339Use RFC 3339 timestamps in log output
log_payloadsDebug-log decoded payload contents before encoding
metric_filterlistMetric name blocklist
metric_filterlist_match_prefixBlocklist uses prefix matching
multi_region_failover.api_keyAPI key for the failover-region endpoint
multi_region_failover.dd_urlFailover intake URL
multi_region_failover.failover_metricsEnable metrics forwarding to failover region
multi_region_failover.metric_allowlistMetric name allowlist for MRF forwarding
multi_region_failover.siteDatadog site for the failover region
no_proxy_nonexact_matchDomain/CIDR no_proxy matching
observability_pipelines_worker.metrics.enabledRoute metrics to OPW instance
observability_pipelines_worker.metrics.urlOPW metrics intake URL
origin_detection_unifiedUnified origin detection mode
otlp_config.logs.enabledotlp_config.logs.enabled
otlp_config.metrics.enabledotlp_config.metrics.enabled
otlp_config.receiver.protocols.grpc.endpointotlp_config.receiver.protocols.grpc.endpoint
otlp_config.receiver.protocols.grpc.max_recv_msg_size_mibMax OTLP inbound gRPC message size (MiB)
otlp_config.receiver.protocols.grpc.transportotlp_config.receiver.protocols.grpc.transport
otlp_config.receiver.protocols.http.endpointotlp_config.receiver.protocols.http.endpoint
otlp_config.traces.enabledotlp_config.traces.enabled
otlp_config.traces.internal_portotlp_config.traces.internal_port
otlp_config.traces.probabilistic_sampler.sampling_percentageOTLP trace sampling percentage
provider_kindProvider kind static tag
proxy.httpHTTP proxy URL
proxy.httpsHTTPS proxy URL
proxy.no_proxyHosts bypassing proxy
serializer_compressor_kindPayload compression algorithm
serializer_max_payload_sizeMax compressed payload size (generic)
serializer_max_series_payload_sizeMax compressed V2 series payload size
serializer_max_series_points_per_payloadMax data points per series payload
serializer_max_series_uncompressed_payload_sizeMax uncompressed V2 series payload size
serializer_max_uncompressed_payload_sizeMax uncompressed payload size (generic)
siteDatadog site domain
sslkeylogfileWrite TLS session keys to file
statsd_forward_portUDP packet forwarding destination port
statsd_metric_blocklistList of metric names to block/drop
statsd_metric_blocklist_match_prefixTreat blocklist entries as prefixes
statsd_metric_namespacePrefix prepended to all metric names
statsd_metric_namespace_blacklistPrefixes exempt from namespace
syslog_rfcUse RFC-style syslog header
syslog_uriSyslog destination URI
use_proxy_for_cloud_metadataProxy cloud metadata endpoints
use_v2_api.seriesSend series via V2 protobuf endpoint
vector.metrics.enabledRoute metrics to OPW (legacy alias)
vector.metrics.urlOPW metrics intake URL (legacy alias)
vsock_addrvsock address for Agent IPC endpoint