1#![allow(clippy::all, dead_code, unused)]
4
5#![allow(missing_docs)]
7
8use std::collections::HashMap;
9
10pub 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 #[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 #[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
1695pub 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}