datadog_agent_config/generated/
datadog_configuration.rs

1// @generated by build.rs from core_schema.yaml + schema_overlay.yaml — DO NOT EDIT
2// Regenerate by running `cargo build -p datadog-agent-config`.
3#![allow(clippy::all, dead_code, unused)]
4
5// Including the schema documentation here is noisy and causes issues with doc lints.
6#![allow(missing_docs)]
7
8use std::collections::HashMap;
9
10/// Error types.
11pub mod error {
12    pub struct ConversionError(::std::borrow::Cow<'static, str>);
13    impl ::std::error::Error for ConversionError {}
14    impl ::std::fmt::Display for ConversionError {
15        fn fmt(
16            &self,
17            f: &mut ::std::fmt::Formatter<'_>,
18        ) -> Result<(), ::std::fmt::Error> {
19            ::std::fmt::Display::fmt(&self.0, f)
20        }
21    }
22    impl ::std::fmt::Debug for ConversionError {
23        fn fmt(
24            &self,
25            f: &mut ::std::fmt::Formatter<'_>,
26        ) -> Result<(), ::std::fmt::Error> {
27            ::std::fmt::Debug::fmt(&self.0, f)
28        }
29    }
30    impl From<&'static str> for ConversionError {
31        fn from(value: &'static str) -> Self {
32            Self(value.into())
33        }
34    }
35    impl From<String> for ConversionError {
36        fn from(value: String) -> Self {
37            Self(value.into())
38        }
39    }
40}
41
42#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
43pub struct DatadogConfiguration {
44    #[serde(default, skip_serializing_if = ":: std :: collections :: HashMap::is_empty")]
45    #[serde(deserialize_with = "crate::list_de::deserialize_string_map_scalar_or_seq")]
46    pub additional_endpoints: HashMap<String, Vec<String>>,
47
48    #[serde(default)]
49    pub agent_ipc: AgentIpc,
50
51    #[serde(default = "defaults::default_u64::<i64, 2>")]
52    pub aggregator_stop_timeout: i64,
53
54    #[serde(default)]
55    pub allow_arbitrary_tags: bool,
56
57    #[serde(default)]
58    pub api_key: String,
59
60    #[serde(default)]
61    pub apm_config: ApmConfig,
62
63    #[serde(default)]
64    pub autoscaling: Autoscaling,
65
66    #[serde(default)]
67    pub basic_telemetry_add_container_tags: bool,
68
69    #[serde(default)]
70    pub bind_host: String,
71
72    #[serde(default)]
73    pub cluster_agent: ClusterAgent,
74
75    #[serde(default = "defaults::default_u64::<i64, 5001>")]
76    pub cmd_port: i64,
77
78    #[serde(default = "defaults::default_u64::<i64, 1>")]
79    pub cri_connection_timeout: i64,
80
81    #[serde(default = "defaults::default_u64::<i64, 5>")]
82    pub cri_query_timeout: i64,
83
84    #[serde(default)]
85    pub data_plane: DataPlane,
86
87    #[serde(default = "defaults::datadog_configuration_dd_url")]
88    pub dd_url: String,
89
90    #[serde(default)]
91    pub disable_file_logging: bool,
92
93    #[serde(default = "defaults::default_u64::<i64, 8192>")]
94    pub dogstatsd_buffer_size: i64,
95
96    #[serde(default)]
97    pub dogstatsd_capture_depth: i64,
98
99    #[serde(default)]
100    pub dogstatsd_capture_path: String,
101
102    #[serde(default = "defaults::default_u64::<i64, 20>")]
103    pub dogstatsd_context_expiry_seconds: i64,
104
105    #[serde(default)]
106    pub dogstatsd_disable_verbose_logs: bool,
107
108    #[serde(default)]
109    pub dogstatsd_entity_id_precedence: bool,
110
111    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
112    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
113    pub dogstatsd_eol_required: Vec<String>,
114
115    #[serde(default = "defaults::default_u64::<i64, 300>")]
116    pub dogstatsd_expiry_seconds: i64,
117
118    #[serde(default)]
119    /// Alias defined in schema overlay.
120    #[serde(alias = "aggregate_flush_open_windows")]
121    pub dogstatsd_flush_incomplete_buckets: bool,
122
123    #[serde(default)]
124    pub dogstatsd_log_file: String,
125
126    #[serde(default = "defaults::default_u64::<i64, 3>")]
127    pub dogstatsd_log_file_max_rolls: i64,
128
129    #[serde(default = "defaults::datadog_configuration_dogstatsd_log_file_max_size")]
130    #[serde(deserialize_with = "crate::string_de::deserialize_string_or_integer")]
131    pub dogstatsd_log_file_max_size: String,
132
133    #[serde(default = "defaults::default_bool::<true>")]
134    pub dogstatsd_logging_enabled: bool,
135
136    #[serde(default = "defaults::default_u64::<i64, 1000>")]
137    pub dogstatsd_mapper_cache_size: i64,
138
139    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
140    pub dogstatsd_mapper_profiles: Vec<::serde_json::Value>,
141
142    #[serde(default)]
143    pub dogstatsd_metrics_stats_enable: bool,
144
145    #[serde(default = "defaults::default_bool::<true>")]
146    pub dogstatsd_no_aggregation_pipeline: bool,
147
148    #[serde(default)]
149    pub dogstatsd_non_local_traffic: bool,
150
151    #[serde(default)]
152    pub dogstatsd_origin_detection: bool,
153
154    #[serde(default)]
155    pub dogstatsd_origin_detection_client: bool,
156
157    #[serde(default = "defaults::default_bool::<true>")]
158    pub dogstatsd_origin_optout_enabled: bool,
159
160    #[serde(default)]
161    pub dogstatsd_pipe_name: String,
162
163    #[serde(default = "defaults::default_u64::<i64, 8125>")]
164    pub dogstatsd_port: i64,
165
166    #[serde(default)]
167    pub dogstatsd_so_rcvbuf: i64,
168
169    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
170    pub dogstatsd_socket: Option<String>,
171
172    #[serde(default)]
173    pub dogstatsd_stream_log_too_big: bool,
174
175    #[serde(default)]
176    pub dogstatsd_stream_socket: String,
177
178    #[serde(default = "defaults::default_u64::<i64, 4096>")]
179    pub dogstatsd_string_interner_size: i64,
180
181    #[serde(default = "defaults::datadog_configuration_dogstatsd_tag_cardinality")]
182    pub dogstatsd_tag_cardinality: String,
183
184    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
185    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
186    pub dogstatsd_tags: Vec<String>,
187
188    #[serde(
189        default = "defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor"
190    )]
191    pub dogstatsd_windows_pipe_security_descriptor: String,
192
193    #[serde(default)]
194    pub enable_payloads: EnablePayloads,
195
196    #[serde(default)]
197    pub env: String,
198
199    #[serde(
200        default = "duration_defaults::expected_tags_duration",
201
202        deserialize_with = "crate::duration_de::deserialize_go_duration"
203    )]
204    pub expected_tags_duration: std::time::Duration,
205
206    #[serde(default = "defaults::default_u64::<i64, 60>")]
207    pub forwarder_apikey_validation_interval: i64,
208
209    #[serde(default = "defaults::default_u64::<i64, 2>")]
210    pub forwarder_backoff_base: i64,
211
212    #[serde(default = "defaults::default_u64::<i64, 2>")]
213    pub forwarder_backoff_factor: i64,
214
215    #[serde(default = "defaults::default_u64::<i64, 64>")]
216    pub forwarder_backoff_max: i64,
217
218    #[serde(default)]
219    pub forwarder_connection_reset_interval: i64,
220
221    #[serde(
222        default = "defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio"
223    )]
224    pub forwarder_flush_to_disk_mem_ratio: f64,
225
226    #[serde(default = "defaults::default_u64::<i64, 100>")]
227    pub forwarder_high_prio_buffer_size: i64,
228
229    #[serde(default = "defaults::datadog_configuration_forwarder_http_protocol")]
230    pub forwarder_http_protocol: String,
231
232    #[serde(default = "defaults::default_u64::<i64, 10>")]
233    pub forwarder_max_concurrent_requests: i64,
234
235    #[serde(default = "defaults::default_u64::<i64, 1>")]
236    pub forwarder_num_workers: i64,
237
238    #[serde(default = "defaults::default_u64::<i64, 10>")]
239    pub forwarder_outdated_file_in_days: i64,
240
241    #[serde(default = "defaults::default_u64::<i64, 2>")]
242    pub forwarder_recovery_interval: i64,
243
244    #[serde(default)]
245    pub forwarder_recovery_reset: bool,
246
247    #[serde(default = "defaults::default_u64::<i64, 900>")]
248    pub forwarder_retry_queue_capacity_time_interval_sec: i64,
249
250    #[serde(default)]
251    pub forwarder_retry_queue_max_size: i64,
252
253    #[serde(default = "defaults::default_u64::<i64, 15728640>")]
254    pub forwarder_retry_queue_payloads_max_size: i64,
255
256    #[serde(default = "defaults::default_u64::<i64, 2>")]
257    pub forwarder_stop_timeout: i64,
258
259    #[serde(
260        default = "defaults::datadog_configuration_forwarder_storage_max_disk_ratio"
261    )]
262    pub forwarder_storage_max_disk_ratio: f64,
263
264    #[serde(default)]
265    pub forwarder_storage_max_size_in_bytes: i64,
266
267    #[serde(default)]
268    pub forwarder_storage_path: String,
269
270    #[serde(default = "defaults::default_u64::<i64, 20>")]
271    pub forwarder_timeout: i64,
272
273    #[serde(default = "defaults::datadog_configuration_histogram_aggregates")]
274    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
275    pub histogram_aggregates: Vec<String>,
276
277    #[serde(default)]
278    pub histogram_copy_to_distribution: bool,
279
280    #[serde(default)]
281    pub histogram_copy_to_distribution_prefix: String,
282
283    #[serde(default = "defaults::datadog_configuration_histogram_percentiles")]
284    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
285    pub histogram_percentiles: Vec<String>,
286
287    #[serde(default = "defaults::default_u64::<i64, 1>")]
288    pub log_file_max_rolls: i64,
289
290    #[serde(default = "defaults::datadog_configuration_log_file_max_size")]
291    #[serde(deserialize_with = "crate::string_de::deserialize_string_or_integer")]
292    pub log_file_max_size: String,
293
294    #[serde(default)]
295    pub log_format_json: bool,
296
297    #[serde(default)]
298    pub log_format_rfc3339: bool,
299
300    #[serde(default = "defaults::datadog_configuration_log_level")]
301    pub log_level: String,
302
303    #[serde(default)]
304    pub log_payloads: bool,
305
306    #[serde(default = "defaults::default_bool::<true>")]
307    pub log_to_console: bool,
308
309    #[serde(default)]
310    pub log_to_syslog: bool,
311
312    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
313    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
314    pub metric_filterlist: Vec<String>,
315
316    #[serde(default)]
317    pub metric_filterlist_match_prefix: bool,
318
319    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
320    pub metric_tag_filterlist: Vec<::serde_json::Value>,
321
322    #[serde(default = "defaults::datadog_configuration_min_tls_version")]
323    pub min_tls_version: String,
324
325    #[serde(default)]
326    pub multi_region_failover: MultiRegionFailover,
327
328    #[serde(default)]
329    pub no_proxy_nonexact_match: bool,
330
331    #[serde(default)]
332    pub observability_pipelines_worker: ObservabilityPipelinesWorker,
333
334    #[serde(default)]
335    pub origin_detection_unified: bool,
336
337    #[serde(default)]
338    pub otlp_config: OtlpConfig,
339
340    #[serde(default)]
341    pub provider_kind: String,
342
343    #[serde(default)]
344    pub proxy: Proxy,
345
346    #[serde(default = "defaults::datadog_configuration_serializer_compressor_kind")]
347    pub serializer_compressor_kind: String,
348
349    #[serde(default)]
350    pub serializer_experimental_use_v3_api: SerializerExperimentalUseV3Api,
351
352    #[serde(default = "defaults::default_u64::<i64, 2621440>")]
353    pub serializer_max_payload_size: i64,
354
355    #[serde(default = "defaults::default_u64::<i64, 512000>")]
356    pub serializer_max_series_payload_size: i64,
357
358    #[serde(default = "defaults::default_u64::<i64, 10000>")]
359    pub serializer_max_series_points_per_payload: i64,
360
361    #[serde(default = "defaults::default_u64::<i64, 5242880>")]
362    pub serializer_max_series_uncompressed_payload_size: i64,
363
364    #[serde(default = "defaults::default_u64::<i64, 4194304>")]
365    pub serializer_max_uncompressed_payload_size: i64,
366
367    #[serde(default = "defaults::default_u64::<i64, 1>")]
368    pub serializer_zstd_compressor_level: i64,
369
370    #[serde(default = "defaults::datadog_configuration_site")]
371    pub site: String,
372
373    #[serde(default)]
374    pub skip_ssl_validation: bool,
375
376    #[serde(default)]
377    pub sslkeylogfile: String,
378
379    #[serde(default)]
380    pub statsd_forward_host: String,
381
382    #[serde(default)]
383    pub statsd_forward_port: i64,
384
385    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
386    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
387    pub statsd_metric_blocklist: Vec<String>,
388
389    #[serde(default)]
390    pub statsd_metric_blocklist_match_prefix: bool,
391
392    #[serde(default)]
393    pub statsd_metric_namespace: String,
394
395    #[serde(
396        default = "defaults::datadog_configuration_statsd_metric_namespace_blacklist"
397    )]
398    /// Alias defined in schema overlay.
399    #[serde(alias = "statsd_metric_namespace_blocklist")]
400    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
401    pub statsd_metric_namespace_blacklist: Vec<String>,
402
403    #[serde(default)]
404    pub syslog_rfc: bool,
405
406    #[serde(default)]
407    pub syslog_uri: String,
408
409    #[serde(default)]
410    pub telemetry: Telemetry,
411
412    #[serde(default)]
413    pub use_proxy_for_cloud_metadata: bool,
414
415    #[serde(default)]
416    pub use_v2_api: UseV2Api,
417
418    #[serde(default)]
419    pub use_v3_api: UseV3Api,
420
421    #[serde(default)]
422    pub vector: Vector,
423
424    #[serde(default)]
425    pub vsock_addr: String,
426}
427
428impl Default for DatadogConfiguration {
429    fn default() -> Self {
430        Self {
431            additional_endpoints: Default::default(),
432            agent_ipc: Default::default(),
433            aggregator_stop_timeout: defaults::default_u64::<i64, 2>(),
434            allow_arbitrary_tags: Default::default(),
435            api_key: Default::default(),
436            apm_config: Default::default(),
437            autoscaling: Default::default(),
438            basic_telemetry_add_container_tags: Default::default(),
439            bind_host: Default::default(),
440            cluster_agent: Default::default(),
441            cmd_port: defaults::default_u64::<i64, 5001>(),
442            cri_connection_timeout: defaults::default_u64::<i64, 1>(),
443            cri_query_timeout: defaults::default_u64::<i64, 5>(),
444            data_plane: Default::default(),
445            dd_url: defaults::datadog_configuration_dd_url(),
446            disable_file_logging: Default::default(),
447            dogstatsd_buffer_size: defaults::default_u64::<i64, 8192>(),
448            dogstatsd_capture_depth: Default::default(),
449            dogstatsd_capture_path: Default::default(),
450            dogstatsd_context_expiry_seconds: defaults::default_u64::<i64, 20>(),
451            dogstatsd_disable_verbose_logs: Default::default(),
452            dogstatsd_entity_id_precedence: Default::default(),
453            dogstatsd_eol_required: Default::default(),
454            dogstatsd_expiry_seconds: defaults::default_u64::<i64, 300>(),
455            dogstatsd_flush_incomplete_buckets: Default::default(),
456            dogstatsd_log_file: Default::default(),
457            dogstatsd_log_file_max_rolls: defaults::default_u64::<i64, 3>(),
458            dogstatsd_log_file_max_size: defaults::datadog_configuration_dogstatsd_log_file_max_size(),
459            dogstatsd_logging_enabled: defaults::default_bool::<true>(),
460            dogstatsd_mapper_cache_size: defaults::default_u64::<i64, 1000>(),
461            dogstatsd_mapper_profiles: Default::default(),
462            dogstatsd_metrics_stats_enable: Default::default(),
463            dogstatsd_no_aggregation_pipeline: defaults::default_bool::<true>(),
464            dogstatsd_non_local_traffic: Default::default(),
465            dogstatsd_origin_detection: Default::default(),
466            dogstatsd_origin_detection_client: Default::default(),
467            dogstatsd_origin_optout_enabled: defaults::default_bool::<true>(),
468            dogstatsd_pipe_name: Default::default(),
469            dogstatsd_port: defaults::default_u64::<i64, 8125>(),
470            dogstatsd_so_rcvbuf: Default::default(),
471            dogstatsd_socket: Default::default(),
472            dogstatsd_stream_log_too_big: Default::default(),
473            dogstatsd_stream_socket: Default::default(),
474            dogstatsd_string_interner_size: defaults::default_u64::<i64, 4096>(),
475            dogstatsd_tag_cardinality: defaults::datadog_configuration_dogstatsd_tag_cardinality(),
476            dogstatsd_tags: Default::default(),
477            dogstatsd_windows_pipe_security_descriptor: defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor(),
478            enable_payloads: Default::default(),
479            env: Default::default(),
480            expected_tags_duration: duration_defaults::expected_tags_duration(),
481            forwarder_apikey_validation_interval: defaults::default_u64::<i64, 60>(),
482            forwarder_backoff_base: defaults::default_u64::<i64, 2>(),
483            forwarder_backoff_factor: defaults::default_u64::<i64, 2>(),
484            forwarder_backoff_max: defaults::default_u64::<i64, 64>(),
485            forwarder_connection_reset_interval: Default::default(),
486            forwarder_flush_to_disk_mem_ratio: defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio(),
487            forwarder_high_prio_buffer_size: defaults::default_u64::<i64, 100>(),
488            forwarder_http_protocol: defaults::datadog_configuration_forwarder_http_protocol(),
489            forwarder_max_concurrent_requests: defaults::default_u64::<i64, 10>(),
490            forwarder_num_workers: defaults::default_u64::<i64, 1>(),
491            forwarder_outdated_file_in_days: defaults::default_u64::<i64, 10>(),
492            forwarder_recovery_interval: defaults::default_u64::<i64, 2>(),
493            forwarder_recovery_reset: Default::default(),
494            forwarder_retry_queue_capacity_time_interval_sec: defaults::default_u64::<
495                i64,
496                900,
497            >(),
498            forwarder_retry_queue_max_size: Default::default(),
499            forwarder_retry_queue_payloads_max_size: defaults::default_u64::<
500                i64,
501                15728640,
502            >(),
503            forwarder_stop_timeout: defaults::default_u64::<i64, 2>(),
504            forwarder_storage_max_disk_ratio: defaults::datadog_configuration_forwarder_storage_max_disk_ratio(),
505            forwarder_storage_max_size_in_bytes: Default::default(),
506            forwarder_storage_path: Default::default(),
507            forwarder_timeout: defaults::default_u64::<i64, 20>(),
508            histogram_aggregates: defaults::datadog_configuration_histogram_aggregates(),
509            histogram_copy_to_distribution: Default::default(),
510            histogram_copy_to_distribution_prefix: Default::default(),
511            histogram_percentiles: defaults::datadog_configuration_histogram_percentiles(),
512            log_file_max_rolls: defaults::default_u64::<i64, 1>(),
513            log_file_max_size: defaults::datadog_configuration_log_file_max_size(),
514            log_format_json: Default::default(),
515            log_format_rfc3339: Default::default(),
516            log_level: defaults::datadog_configuration_log_level(),
517            log_payloads: Default::default(),
518            log_to_console: defaults::default_bool::<true>(),
519            log_to_syslog: Default::default(),
520            metric_filterlist: Default::default(),
521            metric_filterlist_match_prefix: Default::default(),
522            metric_tag_filterlist: Default::default(),
523            min_tls_version: defaults::datadog_configuration_min_tls_version(),
524            multi_region_failover: Default::default(),
525            no_proxy_nonexact_match: Default::default(),
526            observability_pipelines_worker: Default::default(),
527            origin_detection_unified: Default::default(),
528            otlp_config: Default::default(),
529            provider_kind: Default::default(),
530            proxy: Default::default(),
531            serializer_compressor_kind: defaults::datadog_configuration_serializer_compressor_kind(),
532            serializer_experimental_use_v3_api: Default::default(),
533            serializer_max_payload_size: defaults::default_u64::<i64, 2621440>(),
534            serializer_max_series_payload_size: defaults::default_u64::<i64, 512000>(),
535            serializer_max_series_points_per_payload: defaults::default_u64::<
536                i64,
537                10000,
538            >(),
539            serializer_max_series_uncompressed_payload_size: defaults::default_u64::<
540                i64,
541                5242880,
542            >(),
543            serializer_max_uncompressed_payload_size: defaults::default_u64::<
544                i64,
545                4194304,
546            >(),
547            serializer_zstd_compressor_level: defaults::default_u64::<i64, 1>(),
548            site: defaults::datadog_configuration_site(),
549            skip_ssl_validation: Default::default(),
550            sslkeylogfile: Default::default(),
551            statsd_forward_host: Default::default(),
552            statsd_forward_port: Default::default(),
553            statsd_metric_blocklist: Default::default(),
554            statsd_metric_blocklist_match_prefix: Default::default(),
555            statsd_metric_namespace: Default::default(),
556            statsd_metric_namespace_blacklist: defaults::datadog_configuration_statsd_metric_namespace_blacklist(),
557            syslog_rfc: Default::default(),
558            syslog_uri: Default::default(),
559            telemetry: Default::default(),
560            use_proxy_for_cloud_metadata: Default::default(),
561            use_v2_api: Default::default(),
562            use_v3_api: Default::default(),
563            vector: Default::default(),
564            vsock_addr: Default::default(),
565        }
566    }
567}
568
569#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
570pub struct AgentIpc {
571    #[serde(default = "defaults::default_u64::<i64, 134217728>")]
572    pub grpc_max_message_size: i64,
573}
574
575impl Default for AgentIpc {
576    fn default() -> Self {
577        Self {
578            grpc_max_message_size: defaults::default_u64::<i64, 134217728>(),
579        }
580    }
581}
582
583#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
584pub struct ApmConfig {
585    #[serde(default = "defaults::default_bool::<true>")]
586    pub compute_stats_by_span_kind: bool,
587
588    #[serde(default)]
589    pub enable_rare_sampler: bool,
590
591    #[serde(default)]
592    pub error_tracking_standalone: ApmConfigErrorTrackingStandalone,
593
594    #[serde(default = "defaults::datadog_configuration_apm_config_errors_per_second")]
595    pub errors_per_second: f64,
596
597    #[serde(default)]
598    pub obfuscation: ApmConfigObfuscation,
599
600    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
601    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
602    pub peer_tags: Vec<String>,
603
604    #[serde(default = "defaults::default_bool::<true>")]
605    pub peer_tags_aggregation: bool,
606
607    #[serde(default)]
608    pub probabilistic_sampler: ApmConfigProbabilisticSampler,
609
610    #[serde(
611        default = "defaults::datadog_configuration_apm_config_target_traces_per_second"
612    )]
613    pub target_traces_per_second: f64,
614}
615
616impl Default for ApmConfig {
617    fn default() -> Self {
618        Self {
619            compute_stats_by_span_kind: defaults::default_bool::<true>(),
620            enable_rare_sampler: Default::default(),
621            error_tracking_standalone: Default::default(),
622            errors_per_second: defaults::datadog_configuration_apm_config_errors_per_second(),
623            obfuscation: Default::default(),
624            peer_tags: Default::default(),
625            peer_tags_aggregation: defaults::default_bool::<true>(),
626            probabilistic_sampler: Default::default(),
627            target_traces_per_second: defaults::datadog_configuration_apm_config_target_traces_per_second(),
628        }
629    }
630}
631
632#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
633pub struct ApmConfigErrorTrackingStandalone {
634    #[serde(default)]
635    pub enabled: bool,
636}
637
638impl Default for ApmConfigErrorTrackingStandalone {
639    fn default() -> Self {
640        Self {
641            enabled: Default::default(),
642        }
643    }
644}
645
646#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
647pub struct ApmConfigObfuscation {
648    #[serde(default)]
649    pub credit_cards: ApmConfigObfuscationCreditCards,
650
651    #[serde(default)]
652    pub elasticsearch: ApmConfigObfuscationElasticsearch,
653
654    #[serde(default)]
655    pub http: ApmConfigObfuscationHttp,
656
657    #[serde(default)]
658    pub memcached: ApmConfigObfuscationMemcached,
659
660    #[serde(default)]
661    pub mongodb: ApmConfigObfuscationMongodb,
662
663    #[serde(default)]
664    pub opensearch: ApmConfigObfuscationOpensearch,
665
666    #[serde(default)]
667    pub redis: ApmConfigObfuscationRedis,
668
669    #[serde(default)]
670    pub valkey: ApmConfigObfuscationValkey,
671}
672
673impl Default for ApmConfigObfuscation {
674    fn default() -> Self {
675        Self {
676            credit_cards: Default::default(),
677            elasticsearch: Default::default(),
678            http: Default::default(),
679            memcached: Default::default(),
680            mongodb: Default::default(),
681            opensearch: Default::default(),
682            redis: Default::default(),
683            valkey: Default::default(),
684        }
685    }
686}
687
688#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
689pub struct ApmConfigObfuscationCreditCards {
690    #[serde(default = "defaults::default_bool::<true>")]
691    pub enabled: bool,
692
693    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
694    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
695    pub keep_values: Vec<String>,
696
697    #[serde(default)]
698    pub luhn: bool,
699}
700
701impl Default for ApmConfigObfuscationCreditCards {
702    fn default() -> Self {
703        Self {
704            enabled: defaults::default_bool::<true>(),
705            keep_values: Default::default(),
706            luhn: Default::default(),
707        }
708    }
709}
710
711#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
712pub struct ApmConfigObfuscationElasticsearch {
713    #[serde(default = "defaults::default_bool::<true>")]
714    pub enabled: bool,
715
716    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
717    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
718    pub keep_values: Vec<String>,
719
720    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
721    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
722    pub obfuscate_sql_values: Vec<String>,
723}
724
725impl Default for ApmConfigObfuscationElasticsearch {
726    fn default() -> Self {
727        Self {
728            enabled: defaults::default_bool::<true>(),
729            keep_values: Default::default(),
730            obfuscate_sql_values: Default::default(),
731        }
732    }
733}
734
735#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
736pub struct ApmConfigObfuscationHttp {
737    #[serde(default)]
738    pub remove_paths_with_digits: bool,
739
740    #[serde(default)]
741    pub remove_query_string: bool,
742}
743
744impl Default for ApmConfigObfuscationHttp {
745    fn default() -> Self {
746        Self {
747            remove_paths_with_digits: Default::default(),
748            remove_query_string: Default::default(),
749        }
750    }
751}
752
753#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
754pub struct ApmConfigObfuscationMemcached {
755    #[serde(default = "defaults::default_bool::<true>")]
756    pub enabled: bool,
757
758    #[serde(default)]
759    pub keep_command: bool,
760}
761
762impl Default for ApmConfigObfuscationMemcached {
763    fn default() -> Self {
764        Self {
765            enabled: defaults::default_bool::<true>(),
766            keep_command: Default::default(),
767        }
768    }
769}
770
771#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
772pub struct ApmConfigObfuscationMongodb {
773    #[serde(default = "defaults::default_bool::<true>")]
774    pub enabled: bool,
775
776    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
777    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
778    pub keep_values: Vec<String>,
779
780    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
781    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
782    pub obfuscate_sql_values: Vec<String>,
783}
784
785impl Default for ApmConfigObfuscationMongodb {
786    fn default() -> Self {
787        Self {
788            enabled: defaults::default_bool::<true>(),
789            keep_values: Default::default(),
790            obfuscate_sql_values: Default::default(),
791        }
792    }
793}
794
795#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
796pub struct ApmConfigObfuscationOpensearch {
797    #[serde(default = "defaults::default_bool::<true>")]
798    pub enabled: bool,
799
800    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
801    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
802    pub keep_values: Vec<String>,
803
804    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
805    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
806    pub obfuscate_sql_values: Vec<String>,
807}
808
809impl Default for ApmConfigObfuscationOpensearch {
810    fn default() -> Self {
811        Self {
812            enabled: defaults::default_bool::<true>(),
813            keep_values: Default::default(),
814            obfuscate_sql_values: Default::default(),
815        }
816    }
817}
818
819#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
820pub struct ApmConfigObfuscationRedis {
821    #[serde(default = "defaults::default_bool::<true>")]
822    pub enabled: bool,
823
824    #[serde(default)]
825    pub remove_all_args: bool,
826}
827
828impl Default for ApmConfigObfuscationRedis {
829    fn default() -> Self {
830        Self {
831            enabled: defaults::default_bool::<true>(),
832            remove_all_args: Default::default(),
833        }
834    }
835}
836
837#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
838pub struct ApmConfigObfuscationValkey {
839    #[serde(default = "defaults::default_bool::<true>")]
840    pub enabled: bool,
841
842    #[serde(default)]
843    pub remove_all_args: bool,
844}
845
846impl Default for ApmConfigObfuscationValkey {
847    fn default() -> Self {
848        Self {
849            enabled: defaults::default_bool::<true>(),
850            remove_all_args: Default::default(),
851        }
852    }
853}
854
855#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
856pub struct ApmConfigProbabilisticSampler {
857    #[serde(default)]
858    pub enabled: bool,
859
860    #[serde(
861        default = "defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage"
862    )]
863    pub sampling_percentage: f64,
864}
865
866impl Default for ApmConfigProbabilisticSampler {
867    fn default() -> Self {
868        Self {
869            enabled: Default::default(),
870            sampling_percentage: defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage(),
871        }
872    }
873}
874
875#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
876pub struct Autoscaling {
877    #[serde(default)]
878    pub failover: AutoscalingFailover,
879}
880
881impl Default for Autoscaling {
882    fn default() -> Self {
883        Self {
884            failover: Default::default(),
885        }
886    }
887}
888
889#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
890pub struct AutoscalingFailover {
891    #[serde(default)]
892    pub enabled: bool,
893
894    #[serde(default = "defaults::datadog_configuration_autoscaling_failover_metrics")]
895    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
896    pub metrics: Vec<String>,
897}
898
899impl Default for AutoscalingFailover {
900    fn default() -> Self {
901        Self {
902            enabled: Default::default(),
903            metrics: defaults::datadog_configuration_autoscaling_failover_metrics(),
904        }
905    }
906}
907
908#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
909pub struct ClusterAgent {
910    #[serde(default)]
911    pub auth_token: String,
912
913    #[serde(default)]
914    pub enabled: bool,
915
916    #[serde(
917        default = "defaults::datadog_configuration_cluster_agent_kubernetes_service_name"
918    )]
919    pub kubernetes_service_name: String,
920
921    #[serde(default)]
922    pub url: String,
923}
924
925impl Default for ClusterAgent {
926    fn default() -> Self {
927        Self {
928            auth_token: Default::default(),
929            enabled: Default::default(),
930            kubernetes_service_name: defaults::datadog_configuration_cluster_agent_kubernetes_service_name(),
931            url: Default::default(),
932        }
933    }
934}
935
936#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
937pub struct DataPlane {
938    #[serde(default = "defaults::datadog_configuration_data_plane_api_listen_address")]
939    pub api_listen_address: String,
940
941    #[serde(default)]
942    pub dogstatsd: DataPlaneDogstatsd,
943
944    #[serde(default)]
945    pub enabled: bool,
946
947    #[serde(default = "defaults::datadog_configuration_data_plane_log_file")]
948    pub log_file: String,
949
950    #[serde(default)]
951    pub otlp: DataPlaneOtlp,
952
953    #[serde(default = "defaults::default_bool::<true>")]
954    pub remote_agent_enabled: bool,
955
956    #[serde(
957        default = "defaults::datadog_configuration_data_plane_secure_api_listen_address"
958    )]
959    pub secure_api_listen_address: String,
960
961    #[serde(default = "defaults::default_bool::<true>")]
962    pub use_new_config_stream_endpoint: bool,
963}
964
965impl Default for DataPlane {
966    fn default() -> Self {
967        Self {
968            api_listen_address: defaults::datadog_configuration_data_plane_api_listen_address(),
969            dogstatsd: Default::default(),
970            enabled: Default::default(),
971            log_file: defaults::datadog_configuration_data_plane_log_file(),
972            otlp: Default::default(),
973            remote_agent_enabled: defaults::default_bool::<true>(),
974            secure_api_listen_address: defaults::datadog_configuration_data_plane_secure_api_listen_address(),
975            use_new_config_stream_endpoint: defaults::default_bool::<true>(),
976        }
977    }
978}
979
980#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
981pub struct DataPlaneDogstatsd {
982    #[serde(default = "defaults::default_u64::<i64, 100000>")]
983    pub aggregator_tag_filter_cache_capacity: i64,
984
985    #[serde(default = "defaults::default_bool::<true>")]
986    pub enabled: bool,
987}
988
989impl Default for DataPlaneDogstatsd {
990    fn default() -> Self {
991        Self {
992            aggregator_tag_filter_cache_capacity: defaults::default_u64::<i64, 100000>(),
993            enabled: defaults::default_bool::<true>(),
994        }
995    }
996}
997
998#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
999pub struct DataPlaneOtlp {
1000    #[serde(default)]
1001    pub enabled: bool,
1002
1003    #[serde(default)]
1004    pub proxy: DataPlaneOtlpProxy,
1005}
1006
1007impl Default for DataPlaneOtlp {
1008    fn default() -> Self {
1009        Self {
1010            enabled: Default::default(),
1011            proxy: Default::default(),
1012        }
1013    }
1014}
1015
1016#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1017pub struct DataPlaneOtlpProxy {
1018    #[serde(default)]
1019    pub enabled: bool,
1020
1021    #[serde(default)]
1022    pub logs: DataPlaneOtlpProxyLogs,
1023
1024    #[serde(default)]
1025    pub metrics: DataPlaneOtlpProxyMetrics,
1026
1027    #[serde(default)]
1028    pub receiver: DataPlaneOtlpProxyReceiver,
1029
1030    #[serde(default)]
1031    pub traces: DataPlaneOtlpProxyTraces,
1032}
1033
1034impl Default for DataPlaneOtlpProxy {
1035    fn default() -> Self {
1036        Self {
1037            enabled: Default::default(),
1038            logs: Default::default(),
1039            metrics: Default::default(),
1040            receiver: Default::default(),
1041            traces: Default::default(),
1042        }
1043    }
1044}
1045
1046#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1047pub struct DataPlaneOtlpProxyLogs {
1048    #[serde(default = "defaults::default_bool::<true>")]
1049    pub enabled: bool,
1050}
1051
1052impl Default for DataPlaneOtlpProxyLogs {
1053    fn default() -> Self {
1054        Self {
1055            enabled: defaults::default_bool::<true>(),
1056        }
1057    }
1058}
1059
1060#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1061pub struct DataPlaneOtlpProxyMetrics {
1062    #[serde(default = "defaults::default_bool::<true>")]
1063    pub enabled: bool,
1064}
1065
1066impl Default for DataPlaneOtlpProxyMetrics {
1067    fn default() -> Self {
1068        Self {
1069            enabled: defaults::default_bool::<true>(),
1070        }
1071    }
1072}
1073
1074#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1075pub struct DataPlaneOtlpProxyReceiver {
1076    #[serde(default)]
1077    pub protocols: DataPlaneOtlpProxyReceiverProtocols,
1078}
1079
1080impl Default for DataPlaneOtlpProxyReceiver {
1081    fn default() -> Self {
1082        Self {
1083            protocols: Default::default(),
1084        }
1085    }
1086}
1087
1088#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1089pub struct DataPlaneOtlpProxyReceiverProtocols {
1090    #[serde(default)]
1091    pub grpc: DataPlaneOtlpProxyReceiverProtocolsGrpc,
1092}
1093
1094impl Default for DataPlaneOtlpProxyReceiverProtocols {
1095    fn default() -> Self {
1096        Self { grpc: Default::default() }
1097    }
1098}
1099
1100#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1101pub struct DataPlaneOtlpProxyReceiverProtocolsGrpc {
1102    #[serde(
1103        default = "defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint"
1104    )]
1105    pub endpoint: String,
1106}
1107
1108impl Default for DataPlaneOtlpProxyReceiverProtocolsGrpc {
1109    fn default() -> Self {
1110        Self {
1111            endpoint: defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint(),
1112        }
1113    }
1114}
1115
1116#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1117pub struct DataPlaneOtlpProxyTraces {
1118    #[serde(default = "defaults::default_bool::<true>")]
1119    pub enabled: bool,
1120}
1121
1122impl Default for DataPlaneOtlpProxyTraces {
1123    fn default() -> Self {
1124        Self {
1125            enabled: defaults::default_bool::<true>(),
1126        }
1127    }
1128}
1129
1130#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1131pub struct EnablePayloads {
1132    #[serde(default = "defaults::default_bool::<true>")]
1133    pub events: bool,
1134
1135    #[serde(default = "defaults::default_bool::<true>")]
1136    pub series: bool,
1137
1138    #[serde(default = "defaults::default_bool::<true>")]
1139    pub service_checks: bool,
1140
1141    #[serde(default = "defaults::default_bool::<true>")]
1142    pub sketches: bool,
1143}
1144
1145impl Default for EnablePayloads {
1146    fn default() -> Self {
1147        Self {
1148            events: defaults::default_bool::<true>(),
1149            series: defaults::default_bool::<true>(),
1150            service_checks: defaults::default_bool::<true>(),
1151            sketches: defaults::default_bool::<true>(),
1152        }
1153    }
1154}
1155
1156#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1157pub struct MultiRegionFailover {
1158    #[serde(default)]
1159    pub api_key: String,
1160
1161    #[serde(default)]
1162    pub dd_url: String,
1163
1164    #[serde(default)]
1165    pub enabled: bool,
1166
1167    #[serde(default)]
1168    pub failover_metrics: bool,
1169
1170    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1171    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1172    pub metric_allowlist: Vec<String>,
1173
1174    #[serde(default)]
1175    pub site: String,
1176}
1177
1178impl Default for MultiRegionFailover {
1179    fn default() -> Self {
1180        Self {
1181            api_key: Default::default(),
1182            dd_url: Default::default(),
1183            enabled: Default::default(),
1184            failover_metrics: Default::default(),
1185            metric_allowlist: Default::default(),
1186            site: Default::default(),
1187        }
1188    }
1189}
1190
1191#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1192pub struct ObservabilityPipelinesWorker {
1193    #[serde(default)]
1194    pub metrics: ObservabilityPipelinesWorkerMetrics,
1195}
1196
1197impl Default for ObservabilityPipelinesWorker {
1198    fn default() -> Self {
1199        Self {
1200            metrics: Default::default(),
1201        }
1202    }
1203}
1204
1205#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1206pub struct ObservabilityPipelinesWorkerMetrics {
1207    #[serde(default)]
1208    pub enabled: bool,
1209
1210    #[serde(default)]
1211    pub url: String,
1212
1213    #[serde(default)]
1214    pub use_v3_api: ObservabilityPipelinesWorkerMetricsUseV3Api,
1215}
1216
1217impl Default for ObservabilityPipelinesWorkerMetrics {
1218    fn default() -> Self {
1219        Self {
1220            enabled: Default::default(),
1221            url: Default::default(),
1222            use_v3_api: Default::default(),
1223        }
1224    }
1225}
1226
1227#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1228pub struct ObservabilityPipelinesWorkerMetricsUseV3Api {
1229    #[serde(default)]
1230    pub series: bool,
1231}
1232
1233impl Default for ObservabilityPipelinesWorkerMetricsUseV3Api {
1234    fn default() -> Self {
1235        Self { series: Default::default() }
1236    }
1237}
1238
1239#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1240pub struct OtlpConfig {
1241    #[serde(default)]
1242    pub logs: OtlpConfigLogs,
1243
1244    #[serde(default)]
1245    pub metrics: OtlpConfigMetrics,
1246
1247    #[serde(default)]
1248    pub receiver: OtlpConfigReceiver,
1249
1250    #[serde(default)]
1251    pub traces: OtlpConfigTraces,
1252}
1253
1254impl Default for OtlpConfig {
1255    fn default() -> Self {
1256        Self {
1257            logs: Default::default(),
1258            metrics: Default::default(),
1259            receiver: Default::default(),
1260            traces: Default::default(),
1261        }
1262    }
1263}
1264
1265#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1266pub struct OtlpConfigLogs {
1267    #[serde(default)]
1268    pub enabled: bool,
1269}
1270
1271impl Default for OtlpConfigLogs {
1272    fn default() -> Self {
1273        Self {
1274            enabled: Default::default(),
1275        }
1276    }
1277}
1278
1279#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1280pub struct OtlpConfigMetrics {
1281    #[serde(default = "defaults::default_bool::<true>")]
1282    pub enabled: bool,
1283
1284    #[serde(default)]
1285    pub histograms: OtlpConfigMetricsHistograms,
1286
1287    #[serde(default)]
1288    pub resource_attributes_as_tags: bool,
1289
1290    #[serde(default)]
1291    pub summaries: OtlpConfigMetricsSummaries,
1292
1293    #[serde(default)]
1294    pub sums: OtlpConfigMetricsSums,
1295
1296    #[serde(default)]
1297    pub tags: String,
1298}
1299
1300impl Default for OtlpConfigMetrics {
1301    fn default() -> Self {
1302        Self {
1303            enabled: defaults::default_bool::<true>(),
1304            histograms: Default::default(),
1305            resource_attributes_as_tags: Default::default(),
1306            summaries: Default::default(),
1307            sums: Default::default(),
1308            tags: Default::default(),
1309        }
1310    }
1311}
1312
1313#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1314pub struct OtlpConfigMetricsHistograms {
1315    #[serde(
1316        default = "defaults::datadog_configuration_otlp_config_metrics_histograms_mode"
1317    )]
1318    pub mode: String,
1319
1320    #[serde(default)]
1321    pub send_aggregation_metrics: bool,
1322}
1323
1324impl Default for OtlpConfigMetricsHistograms {
1325    fn default() -> Self {
1326        Self {
1327            mode: defaults::datadog_configuration_otlp_config_metrics_histograms_mode(),
1328            send_aggregation_metrics: Default::default(),
1329        }
1330    }
1331}
1332
1333#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1334pub struct OtlpConfigMetricsSummaries {
1335    #[serde(
1336        default = "defaults::datadog_configuration_otlp_config_metrics_summaries_mode"
1337    )]
1338    pub mode: String,
1339}
1340
1341impl Default for OtlpConfigMetricsSummaries {
1342    fn default() -> Self {
1343        Self {
1344            mode: defaults::datadog_configuration_otlp_config_metrics_summaries_mode(),
1345        }
1346    }
1347}
1348
1349#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1350pub struct OtlpConfigMetricsSums {
1351    #[serde(
1352        default = "defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode"
1353    )]
1354    pub cumulative_monotonic_mode: String,
1355
1356    #[serde(
1357        default = "defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value"
1358    )]
1359    pub initial_cumulative_monotonic_value: String,
1360}
1361
1362impl Default for OtlpConfigMetricsSums {
1363    fn default() -> Self {
1364        Self {
1365            cumulative_monotonic_mode: defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode(),
1366            initial_cumulative_monotonic_value: defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value(),
1367        }
1368    }
1369}
1370
1371#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1372pub struct OtlpConfigReceiver {
1373    #[serde(default)]
1374    pub protocols: OtlpConfigReceiverProtocols,
1375}
1376
1377impl Default for OtlpConfigReceiver {
1378    fn default() -> Self {
1379        Self {
1380            protocols: Default::default(),
1381        }
1382    }
1383}
1384
1385#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1386pub struct OtlpConfigReceiverProtocols {
1387    #[serde(default)]
1388    pub grpc: OtlpConfigReceiverProtocolsGrpc,
1389
1390    #[serde(default)]
1391    pub http: OtlpConfigReceiverProtocolsHttp,
1392}
1393
1394impl Default for OtlpConfigReceiverProtocols {
1395    fn default() -> Self {
1396        Self {
1397            grpc: Default::default(),
1398            http: Default::default(),
1399        }
1400    }
1401}
1402
1403#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1404pub struct OtlpConfigReceiverProtocolsGrpc {
1405    #[serde(
1406        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint"
1407    )]
1408    pub endpoint: String,
1409
1410    #[serde(default)]
1411    pub max_recv_msg_size_mib: i64,
1412
1413    #[serde(
1414        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport"
1415    )]
1416    pub transport: String,
1417}
1418
1419impl Default for OtlpConfigReceiverProtocolsGrpc {
1420    fn default() -> Self {
1421        Self {
1422            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint(),
1423            max_recv_msg_size_mib: Default::default(),
1424            transport: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport(),
1425        }
1426    }
1427}
1428
1429#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1430pub struct OtlpConfigReceiverProtocolsHttp {
1431    #[serde(
1432        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint"
1433    )]
1434    pub endpoint: String,
1435}
1436
1437impl Default for OtlpConfigReceiverProtocolsHttp {
1438    fn default() -> Self {
1439        Self {
1440            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint(),
1441        }
1442    }
1443}
1444
1445#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1446pub struct OtlpConfigTraces {
1447    #[serde(default = "defaults::default_bool::<true>")]
1448    pub enabled: bool,
1449
1450    #[serde(default = "defaults::default_u64::<i64, 5003>")]
1451    pub internal_port: i64,
1452
1453    #[serde(default)]
1454    pub probabilistic_sampler: OtlpConfigTracesProbabilisticSampler,
1455}
1456
1457impl Default for OtlpConfigTraces {
1458    fn default() -> Self {
1459        Self {
1460            enabled: defaults::default_bool::<true>(),
1461            internal_port: defaults::default_u64::<i64, 5003>(),
1462            probabilistic_sampler: Default::default(),
1463        }
1464    }
1465}
1466
1467#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1468pub struct OtlpConfigTracesProbabilisticSampler {
1469    #[serde(
1470        default = "defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage"
1471    )]
1472    pub sampling_percentage: f64,
1473}
1474
1475impl Default for OtlpConfigTracesProbabilisticSampler {
1476    fn default() -> Self {
1477        Self {
1478            sampling_percentage: defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage(),
1479        }
1480    }
1481}
1482
1483#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1484pub struct Proxy {
1485    #[serde(default)]
1486    pub http: String,
1487
1488    #[serde(default)]
1489    pub https: String,
1490
1491    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1492    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1493    pub no_proxy: Vec<String>,
1494}
1495
1496impl Default for Proxy {
1497    fn default() -> Self {
1498        Self {
1499            http: Default::default(),
1500            https: Default::default(),
1501            no_proxy: Default::default(),
1502        }
1503    }
1504}
1505
1506#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1507pub struct SerializerExperimentalUseV3Api {
1508    #[serde(default)]
1509    pub compression_level: i64,
1510
1511    #[serde(default)]
1512    pub series: SerializerExperimentalUseV3ApiSeries,
1513
1514    #[serde(default)]
1515    pub sketches: SerializerExperimentalUseV3ApiSketches,
1516}
1517
1518impl Default for SerializerExperimentalUseV3Api {
1519    fn default() -> Self {
1520        Self {
1521            compression_level: Default::default(),
1522            series: Default::default(),
1523            sketches: Default::default(),
1524        }
1525    }
1526}
1527
1528#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1529pub struct SerializerExperimentalUseV3ApiSeries {
1530    #[serde(
1531        default = "defaults::datadog_configuration_serializer_experimental_use_v3_api_series_beta_route"
1532    )]
1533    pub beta_route: String,
1534
1535    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1536    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1537    pub endpoints: Vec<String>,
1538
1539    #[serde(
1540        default = "defaults::datadog_configuration_serializer_experimental_use_v3_api_series_shadow_sample_rate"
1541    )]
1542    pub shadow_sample_rate: f64,
1543
1544    #[serde(
1545        default = "defaults::datadog_configuration_serializer_experimental_use_v3_api_series_shadow_sites"
1546    )]
1547    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1548    pub shadow_sites: Vec<String>,
1549
1550    #[serde(default)]
1551    pub use_beta: bool,
1552
1553    #[serde(default)]
1554    pub validate: bool,
1555}
1556
1557impl Default for SerializerExperimentalUseV3ApiSeries {
1558    fn default() -> Self {
1559        Self {
1560            beta_route: defaults::datadog_configuration_serializer_experimental_use_v3_api_series_beta_route(),
1561            endpoints: Default::default(),
1562            shadow_sample_rate: defaults::datadog_configuration_serializer_experimental_use_v3_api_series_shadow_sample_rate(),
1563            shadow_sites: defaults::datadog_configuration_serializer_experimental_use_v3_api_series_shadow_sites(),
1564            use_beta: Default::default(),
1565            validate: Default::default(),
1566        }
1567    }
1568}
1569
1570#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1571pub struct SerializerExperimentalUseV3ApiSketches {
1572    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1573    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1574    pub endpoints: Vec<String>,
1575
1576    #[serde(default)]
1577    pub validate: bool,
1578}
1579
1580impl Default for SerializerExperimentalUseV3ApiSketches {
1581    fn default() -> Self {
1582        Self {
1583            endpoints: Default::default(),
1584            validate: Default::default(),
1585        }
1586    }
1587}
1588
1589#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1590pub struct Telemetry {
1591    #[serde(default)]
1592    pub dogstatsd_origin: bool,
1593}
1594
1595impl Default for Telemetry {
1596    fn default() -> Self {
1597        Self {
1598            dogstatsd_origin: Default::default(),
1599        }
1600    }
1601}
1602
1603#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1604pub struct UseV2Api {
1605    #[serde(default = "defaults::default_bool::<true>")]
1606    pub series: bool,
1607}
1608
1609impl Default for UseV2Api {
1610    fn default() -> Self {
1611        Self {
1612            series: defaults::default_bool::<true>(),
1613        }
1614    }
1615}
1616
1617#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1618pub struct UseV3Api {
1619    #[serde(default)]
1620    pub series: UseV3ApiSeries,
1621}
1622
1623impl Default for UseV3Api {
1624    fn default() -> Self {
1625        Self { series: Default::default() }
1626    }
1627}
1628
1629#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1630pub struct UseV3ApiSeries {
1631    #[serde(default = "defaults::datadog_configuration_use_v3_api_series_enabled")]
1632    pub enabled: String,
1633
1634    #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
1635    pub endpoints: ::serde_json::Map<String, ::serde_json::Value>,
1636}
1637
1638impl Default for UseV3ApiSeries {
1639    fn default() -> Self {
1640        Self {
1641            enabled: defaults::datadog_configuration_use_v3_api_series_enabled(),
1642            endpoints: Default::default(),
1643        }
1644    }
1645}
1646
1647#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1648pub struct Vector {
1649    #[serde(default)]
1650    pub metrics: VectorMetrics,
1651}
1652
1653impl Default for Vector {
1654    fn default() -> Self {
1655        Self {
1656            metrics: Default::default(),
1657        }
1658    }
1659}
1660
1661#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1662pub struct VectorMetrics {
1663    #[serde(default)]
1664    pub enabled: bool,
1665
1666    #[serde(default)]
1667    pub url: String,
1668
1669    #[serde(default)]
1670    pub use_v3_api: VectorMetricsUseV3Api,
1671}
1672
1673impl Default for VectorMetrics {
1674    fn default() -> Self {
1675        Self {
1676            enabled: Default::default(),
1677            url: Default::default(),
1678            use_v3_api: Default::default(),
1679        }
1680    }
1681}
1682
1683#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1684pub struct VectorMetricsUseV3Api {
1685    #[serde(default)]
1686    pub series: bool,
1687}
1688
1689impl Default for VectorMetricsUseV3Api {
1690    fn default() -> Self {
1691        Self { series: Default::default() }
1692    }
1693}
1694
1695/// Generation of default values for serde.
1696pub mod defaults {
1697    pub(super) fn default_bool<const V: bool>() -> bool {
1698        V
1699    }
1700    pub(super) fn default_i64<T, const V: i64>() -> T
1701    where
1702        T: TryFrom<i64>,
1703        <T as ::std::convert::TryFrom<i64>>::Error: ::std::fmt::Debug,
1704    {
1705        T::try_from(V).unwrap()
1706    }
1707    pub(super) fn default_u64<T, const V: u64>() -> T
1708    where
1709        T: TryFrom<u64>,
1710        <T as ::std::convert::TryFrom<u64>>::Error: ::std::fmt::Debug,
1711    {
1712        T::try_from(V).unwrap()
1713    }
1714    pub(super) fn datadog_configuration_dd_url() -> String {
1715        "https://app.datadoghq.com".to_string()
1716    }
1717    pub(super) fn datadog_configuration_dogstatsd_log_file_max_size() -> String {
1718        "10Mb".to_string()
1719    }
1720    pub(super) fn datadog_configuration_dogstatsd_tag_cardinality() -> String {
1721        "low".to_string()
1722    }
1723    pub(super) fn datadog_configuration_dogstatsd_windows_pipe_security_descriptor() -> String {
1724        "D:AI(A;;GA;;;WD)".to_string()
1725    }
1726    pub(super) fn datadog_configuration_forwarder_flush_to_disk_mem_ratio() -> f64 {
1727        0.5_f64
1728    }
1729    pub(super) fn datadog_configuration_forwarder_http_protocol() -> String {
1730        "auto".to_string()
1731    }
1732    pub(super) fn datadog_configuration_forwarder_storage_max_disk_ratio() -> f64 {
1733        0.8_f64
1734    }
1735    pub(super) fn datadog_configuration_histogram_aggregates() -> Vec<String> {
1736        vec![
1737            "max".to_string(),
1738            "median".to_string(),
1739            "avg".to_string(),
1740            "count".to_string(),
1741        ]
1742    }
1743    pub(super) fn datadog_configuration_histogram_percentiles() -> Vec<String> {
1744        vec!["0.95".to_string()]
1745    }
1746    pub(super) fn datadog_configuration_log_file_max_size() -> String {
1747        "10Mb".to_string()
1748    }
1749    pub(super) fn datadog_configuration_log_level() -> String {
1750        "info".to_string()
1751    }
1752    pub(super) fn datadog_configuration_min_tls_version() -> String {
1753        "tlsv1.2".to_string()
1754    }
1755    pub(super) fn datadog_configuration_serializer_compressor_kind() -> String {
1756        "zstd".to_string()
1757    }
1758    pub(super) fn datadog_configuration_site() -> String {
1759        "datadoghq.com".to_string()
1760    }
1761    pub(super) fn datadog_configuration_statsd_metric_namespace_blacklist() -> Vec<
1762        String,
1763    > {
1764        vec![
1765            "datadog.agent".to_string(),
1766            "datadog.dogstatsd".to_string(),
1767            "datadog.process".to_string(),
1768            "datadog.trace_agent".to_string(),
1769            "datadog.tracer".to_string(),
1770            "activemq".to_string(),
1771            "activemq_58".to_string(),
1772            "airflow".to_string(),
1773            "cassandra".to_string(),
1774            "confluent".to_string(),
1775            "hazelcast".to_string(),
1776            "hive".to_string(),
1777            "ignite".to_string(),
1778            "jboss".to_string(),
1779            "jvm".to_string(),
1780            "kafka".to_string(),
1781            "presto".to_string(),
1782            "sidekiq".to_string(),
1783            "solr".to_string(),
1784            "tomcat".to_string(),
1785            "runtime".to_string(),
1786        ]
1787    }
1788    pub(super) fn datadog_configuration_apm_config_errors_per_second() -> f64 {
1789        10_f64
1790    }
1791    pub(super) fn datadog_configuration_apm_config_target_traces_per_second() -> f64 {
1792        10_f64
1793    }
1794    pub(super) fn datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage() -> f64 {
1795        0_f64
1796    }
1797    pub(super) fn datadog_configuration_autoscaling_failover_metrics() -> Vec<String> {
1798        vec!["container.memory.usage".to_string(), "container.cpu.usage".to_string()]
1799    }
1800    pub(super) fn datadog_configuration_cluster_agent_kubernetes_service_name() -> String {
1801        "datadog-cluster-agent".to_string()
1802    }
1803    pub(super) fn datadog_configuration_data_plane_api_listen_address() -> String {
1804        "tcp://0.0.0.0:5100".to_string()
1805    }
1806    pub(super) fn datadog_configuration_data_plane_log_file() -> String {
1807        "/var/log/datadog/agent-data-plane.log".to_string()
1808    }
1809    pub(super) fn datadog_configuration_data_plane_secure_api_listen_address() -> String {
1810        "tcp://0.0.0.0:5101".to_string()
1811    }
1812    pub(super) fn datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint() -> String {
1813        "127.0.0.1:4319".to_string()
1814    }
1815    pub(super) fn datadog_configuration_otlp_config_metrics_histograms_mode() -> String {
1816        "distributions".to_string()
1817    }
1818    pub(super) fn datadog_configuration_otlp_config_metrics_summaries_mode() -> String {
1819        "gauges".to_string()
1820    }
1821    pub(super) fn datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode() -> String {
1822        "to_delta".to_string()
1823    }
1824    pub(super) fn datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value() -> String {
1825        "auto".to_string()
1826    }
1827    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint() -> String {
1828        "localhost:4317".to_string()
1829    }
1830    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_transport() -> String {
1831        "tcp".to_string()
1832    }
1833    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_http_endpoint() -> String {
1834        "localhost:4318".to_string()
1835    }
1836    pub(super) fn datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage() -> f64 {
1837        100_f64
1838    }
1839    pub(super) fn datadog_configuration_serializer_experimental_use_v3_api_series_beta_route() -> String {
1840        "/api/intake/metrics/v3beta/series".to_string()
1841    }
1842    pub(super) fn datadog_configuration_serializer_experimental_use_v3_api_series_shadow_sample_rate() -> f64 {
1843        0_f64
1844    }
1845    pub(super) fn datadog_configuration_serializer_experimental_use_v3_api_series_shadow_sites() -> Vec<
1846        String,
1847    > {
1848        vec!["datadoghq.com".to_string()]
1849    }
1850    pub(super) fn datadog_configuration_use_v3_api_series_enabled() -> String {
1851        "datadog_only".to_string()
1852    }
1853}
1854
1855mod duration_defaults {
1856    pub(super) fn expected_tags_duration() -> std::time::Duration {
1857        std::time::Duration::from_nanos(0)
1858    }
1859}