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 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
53 pub aggregator_stop_timeout: i64,
54
55 #[serde(default)]
56 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
57 pub allow_arbitrary_tags: bool,
58
59 #[serde(default)]
60 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
61 pub api_key: String,
62
63 #[serde(default)]
64 pub apm_config: ApmConfig,
65
66 #[serde(default)]
67 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
68 pub auth_token_file_path: String,
69
70 #[serde(default)]
71 pub autoscaling: Autoscaling,
72
73 #[serde(default)]
74 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
75 pub basic_telemetry_add_container_tags: bool,
76
77 #[serde(default)]
78 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
79 pub bind_host: String,
80
81 #[serde(default)]
82 pub cluster_agent: ClusterAgent,
83
84 #[serde(default)]
85 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
86 pub cluster_name: String,
87
88 #[serde(default = "defaults::default_u64::<i64, 5001>")]
89 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
90 pub cmd_port: i64,
91
92 #[serde(default = "defaults::datadog_configuration_container_cgroup_root")]
93 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
94 pub container_cgroup_root: String,
95
96 #[serde(default = "defaults::datadog_configuration_container_proc_root")]
97 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
98 pub container_proc_root: String,
99
100 #[serde(default = "defaults::default_u64::<i64, 1>")]
101 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
102 pub cri_connection_timeout: i64,
103
104 #[serde(default = "defaults::default_u64::<i64, 5>")]
105 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
106 pub cri_query_timeout: i64,
107
108 #[serde(default)]
109 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
110 pub cri_socket_path: String,
111
112 #[serde(default)]
113 pub data_plane: DataPlane,
114
115 #[serde(default = "defaults::datadog_configuration_dd_url")]
116 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
117 pub dd_url: String,
118
119 #[serde(default)]
120 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
121 pub disable_file_logging: bool,
122
123 #[serde(default = "defaults::default_u64::<i64, 8192>")]
124 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
125 pub dogstatsd_buffer_size: i64,
126
127 #[serde(default)]
128 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
129 pub dogstatsd_capture_depth: i64,
130
131 #[serde(default)]
132 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
133 pub dogstatsd_capture_path: String,
134
135 #[serde(default = "defaults::default_u64::<i64, 20>")]
136 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
137 pub dogstatsd_context_expiry_seconds: i64,
138
139 #[serde(default)]
140 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
141 pub dogstatsd_disable_verbose_logs: bool,
142
143 #[serde(default)]
144 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
145 pub dogstatsd_entity_id_precedence: bool,
146
147 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
148 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
149 pub dogstatsd_eol_required: Vec<String>,
150
151 #[serde(default = "defaults::default_u64::<i64, 300>")]
152 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
153 pub dogstatsd_expiry_seconds: i64,
154
155 #[serde(default)]
156 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
157 pub dogstatsd_flush_incomplete_buckets: bool,
158
159 #[serde(default = "defaults::datadog_configuration_dogstatsd_log_file")]
160 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
161 pub dogstatsd_log_file: String,
162
163 #[serde(default = "defaults::default_u64::<i64, 3>")]
164 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
165 pub dogstatsd_log_file_max_rolls: i64,
166
167 #[serde(default = "defaults::datadog_configuration_dogstatsd_log_file_max_size")]
168 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
169 pub dogstatsd_log_file_max_size: String,
170
171 #[serde(default = "defaults::default_bool::<true>")]
172 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
173 pub dogstatsd_logging_enabled: bool,
174
175 #[serde(default = "defaults::default_u64::<i64, 1000>")]
176 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
177 pub dogstatsd_mapper_cache_size: i64,
178
179 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
180 #[serde(deserialize_with = "crate::list_de::deserialize_json_array_or_string")]
181 pub dogstatsd_mapper_profiles: Vec<::serde_json::Value>,
182
183 #[serde(default)]
184 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
185 pub dogstatsd_metrics_stats_enable: bool,
186
187 #[serde(default = "defaults::default_bool::<true>")]
188 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
189 pub dogstatsd_no_aggregation_pipeline: bool,
190
191 #[serde(default)]
192 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
193 pub dogstatsd_non_local_traffic: bool,
194
195 #[serde(default)]
196 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
197 pub dogstatsd_origin_detection: bool,
198
199 #[serde(default)]
200 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
201 pub dogstatsd_origin_detection_client: bool,
202
203 #[serde(default = "defaults::default_bool::<true>")]
204 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
205 pub dogstatsd_origin_optout_enabled: bool,
206
207 #[serde(default)]
208 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
209 pub dogstatsd_pipe_name: String,
210
211 #[serde(default = "defaults::default_u64::<i64, 8125>")]
212 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
213 pub dogstatsd_port: i64,
214
215 #[serde(default)]
216 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
217 pub dogstatsd_so_rcvbuf: i64,
218
219 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
220 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
221 pub dogstatsd_socket: Option<String>,
222
223 #[serde(default)]
224 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
225 pub dogstatsd_stream_log_too_big: bool,
226
227 #[serde(default)]
228 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
229 pub dogstatsd_stream_socket: String,
230
231 #[serde(default = "defaults::default_u64::<i64, 4096>")]
232 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
233 pub dogstatsd_string_interner_size: i64,
234
235 #[serde(default = "defaults::datadog_configuration_dogstatsd_tag_cardinality")]
236 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
237 pub dogstatsd_tag_cardinality: String,
238
239 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
240 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
241 pub dogstatsd_tags: Vec<String>,
242
243 #[serde(
244 default = "defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor"
245 )]
246 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
247 pub dogstatsd_windows_pipe_security_descriptor: String,
248
249 #[serde(default)]
250 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
251 pub dogstatsd_workers_count: i64,
252
253 #[serde(default)]
254 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
255 pub eks_fargate: bool,
256
257 #[serde(default)]
258 pub enable_payloads: EnablePayloads,
259
260 #[serde(default)]
261 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
262 pub env: String,
263
264 #[serde(
265 default = "duration_defaults::expected_tags_duration",
266
267 deserialize_with = "crate::duration_de::deserialize_go_duration"
268 )]
269 pub expected_tags_duration: std::time::Duration,
270
271 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
272 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
273 pub extra_tags: Vec<String>,
274
275 #[serde(default = "defaults::default_u64::<i64, 60>")]
276 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
277 pub forwarder_apikey_validation_interval: i64,
278
279 #[serde(default = "defaults::datadog_configuration_forwarder_backoff_base")]
280 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
281 pub forwarder_backoff_base: f64,
282
283 #[serde(default = "defaults::datadog_configuration_forwarder_backoff_factor")]
284 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
285 pub forwarder_backoff_factor: f64,
286
287 #[serde(default = "defaults::datadog_configuration_forwarder_backoff_max")]
288 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
289 pub forwarder_backoff_max: f64,
290
291 #[serde(default)]
292 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
293 pub forwarder_connection_reset_interval: i64,
294
295 #[serde(
296 default = "defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio"
297 )]
298 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
299 pub forwarder_flush_to_disk_mem_ratio: f64,
300
301 #[serde(default = "defaults::default_u64::<i64, 100>")]
302 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
303 pub forwarder_high_prio_buffer_size: i64,
304
305 #[serde(default = "defaults::datadog_configuration_forwarder_http_protocol")]
306 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
307 pub forwarder_http_protocol: String,
308
309 #[serde(default = "defaults::default_u64::<i64, 10>")]
310 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
311 pub forwarder_max_concurrent_requests: i64,
312
313 #[serde(default = "defaults::default_u64::<i64, 1>")]
314 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
315 pub forwarder_num_workers: i64,
316
317 #[serde(default = "defaults::default_u64::<i64, 10>")]
318 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
319 pub forwarder_outdated_file_in_days: i64,
320
321 #[serde(default = "defaults::default_u64::<i64, 2>")]
322 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
323 pub forwarder_recovery_interval: i64,
324
325 #[serde(default)]
326 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
327 pub forwarder_recovery_reset: bool,
328
329 #[serde(default = "defaults::default_u64::<i64, 900>")]
330 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
331 pub forwarder_retry_queue_capacity_time_interval_sec: i64,
332
333 #[serde(default)]
334 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
335 pub forwarder_retry_queue_max_size: i64,
336
337 #[serde(default = "defaults::default_u64::<i64, 15728640>")]
338 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
339 pub forwarder_retry_queue_payloads_max_size: i64,
340
341 #[serde(default = "defaults::default_u64::<i64, 2>")]
342 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
343 pub forwarder_stop_timeout: i64,
344
345 #[serde(
346 default = "defaults::datadog_configuration_forwarder_storage_max_disk_ratio"
347 )]
348 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
349 pub forwarder_storage_max_disk_ratio: f64,
350
351 #[serde(default)]
352 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
353 pub forwarder_storage_max_size_in_bytes: i64,
354
355 #[serde(default = "defaults::datadog_configuration_forwarder_storage_path")]
356 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
357 pub forwarder_storage_path: String,
358
359 #[serde(default = "defaults::default_u64::<i64, 20>")]
360 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
361 pub forwarder_timeout: i64,
362
363 #[serde(default = "defaults::datadog_configuration_histogram_aggregates")]
364 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
365 pub histogram_aggregates: Vec<String>,
366
367 #[serde(default)]
368 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
369 pub histogram_copy_to_distribution: bool,
370
371 #[serde(default)]
372 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
373 pub histogram_copy_to_distribution_prefix: String,
374
375 #[serde(default = "defaults::datadog_configuration_histogram_percentiles")]
376 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
377 pub histogram_percentiles: Vec<String>,
378
379 #[serde(default)]
380 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
381 pub hostname: String,
382
383 #[serde(default)]
384 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
385 pub ipc_cert_file_path: String,
386
387 #[serde(default)]
388 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
389 pub kubernetes_kubelet_nodename: String,
390
391 #[serde(default = "defaults::default_u64::<i64, 1>")]
392 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
393 pub log_file_max_rolls: i64,
394
395 #[serde(default = "defaults::datadog_configuration_log_file_max_size")]
396 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
397 pub log_file_max_size: String,
398
399 #[serde(default)]
400 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
401 pub log_format_json: bool,
402
403 #[serde(default)]
404 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
405 pub log_format_rfc3339: bool,
406
407 #[serde(default = "defaults::datadog_configuration_log_level")]
408 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
409 pub log_level: String,
410
411 #[serde(default)]
412 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
413 pub log_payloads: bool,
414
415 #[serde(default = "defaults::default_bool::<true>")]
416 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
417 pub log_to_console: bool,
418
419 #[serde(default)]
420 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
421 pub log_to_syslog: bool,
422
423 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
424 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
425 pub metric_filterlist: Vec<String>,
426
427 #[serde(default)]
428 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
429 pub metric_filterlist_match_prefix: bool,
430
431 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
432 #[serde(deserialize_with = "crate::list_de::deserialize_json_array_or_string")]
433 pub metric_tag_filterlist: Vec<::serde_json::Value>,
434
435 #[serde(default = "defaults::datadog_configuration_min_tls_version")]
436 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
437 pub min_tls_version: String,
438
439 #[serde(default)]
440 pub multi_region_failover: MultiRegionFailover,
441
442 #[serde(default)]
443 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
444 pub no_proxy_nonexact_match: bool,
445
446 #[serde(default)]
447 pub observability_pipelines_worker: ObservabilityPipelinesWorker,
448
449 #[serde(default)]
450 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
451 pub origin_detection_unified: bool,
452
453 #[serde(default)]
454 pub otlp_config: OtlpConfig,
455
456 #[serde(default)]
457 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
458 pub provider_kind: String,
459
460 #[serde(default)]
461 pub proxy: Proxy,
462
463 #[serde(default = "defaults::datadog_configuration_run_path")]
464 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
465 pub run_path: String,
466
467 #[serde(default)]
468 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
469 pub secret_backend_command: String,
470
471 #[serde(default)]
472 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
473 pub secret_refresh_on_api_key_failure_interval: i64,
474
475 #[serde(default = "defaults::datadog_configuration_serializer_compressor_kind")]
476 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
477 pub serializer_compressor_kind: String,
478
479 #[serde(default)]
480 pub serializer_experimental_use_v3_api: SerializerExperimentalUseV3Api,
481
482 #[serde(default = "defaults::default_u64::<i64, 2621440>")]
483 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
484 pub serializer_max_payload_size: i64,
485
486 #[serde(default = "defaults::default_u64::<i64, 512000>")]
487 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
488 pub serializer_max_series_payload_size: i64,
489
490 #[serde(default = "defaults::default_u64::<i64, 10000>")]
491 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
492 pub serializer_max_series_points_per_payload: i64,
493
494 #[serde(default = "defaults::default_u64::<i64, 5242880>")]
495 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
496 pub serializer_max_series_uncompressed_payload_size: i64,
497
498 #[serde(default = "defaults::default_u64::<i64, 4194304>")]
499 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
500 pub serializer_max_uncompressed_payload_size: i64,
501
502 #[serde(default = "defaults::default_u64::<i64, 1>")]
503 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
504 pub serializer_zstd_compressor_level: i64,
505
506 #[serde(default = "defaults::datadog_configuration_site")]
507 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
508 pub site: String,
509
510 #[serde(default)]
511 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
512 pub skip_ssl_validation: bool,
513
514 #[serde(default)]
515 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
516 pub sslkeylogfile: String,
517
518 #[serde(default)]
519 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
520 pub statsd_forward_host: String,
521
522 #[serde(default)]
523 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
524 pub statsd_forward_port: i64,
525
526 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
527 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
528 pub statsd_metric_blocklist: Vec<String>,
529
530 #[serde(default)]
531 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
532 pub statsd_metric_blocklist_match_prefix: bool,
533
534 #[serde(default)]
535 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
536 pub statsd_metric_namespace: String,
537
538 #[serde(
539 default = "defaults::datadog_configuration_statsd_metric_namespace_blacklist"
540 )]
541 #[serde(alias = "statsd_metric_namespace_blocklist")]
543 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
544 pub statsd_metric_namespace_blacklist: Vec<String>,
545
546 #[serde(default)]
547 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
548 pub syslog_rfc: bool,
549
550 #[serde(default)]
551 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
552 pub syslog_uri: String,
553
554 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
555 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
556 pub tags: Vec<String>,
557
558 #[serde(default)]
559 pub telemetry: Telemetry,
560
561 #[serde(
562 default = "duration_defaults::tls_handshake_timeout",
563
564 deserialize_with = "crate::duration_de::deserialize_go_duration"
565 )]
566 pub tls_handshake_timeout: std::time::Duration,
567
568 #[serde(default)]
569 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
570 pub use_proxy_for_cloud_metadata: bool,
571
572 #[serde(default)]
573 pub use_v2_api: UseV2Api,
574
575 #[serde(default)]
576 pub use_v3_api: UseV3Api,
577
578 #[serde(default)]
579 pub vector: Vector,
580
581 #[serde(default)]
582 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
583 pub vsock_addr: String,
584}
585
586impl Default for DatadogConfiguration {
587 fn default() -> Self {
588 Self {
589 additional_endpoints: Default::default(),
590 agent_ipc: Default::default(),
591 aggregator_stop_timeout: defaults::default_u64::<i64, 2>(),
592 allow_arbitrary_tags: Default::default(),
593 api_key: Default::default(),
594 apm_config: Default::default(),
595 auth_token_file_path: Default::default(),
596 autoscaling: Default::default(),
597 basic_telemetry_add_container_tags: Default::default(),
598 bind_host: Default::default(),
599 cluster_agent: Default::default(),
600 cluster_name: Default::default(),
601 cmd_port: defaults::default_u64::<i64, 5001>(),
602 container_cgroup_root: defaults::datadog_configuration_container_cgroup_root(),
603 container_proc_root: defaults::datadog_configuration_container_proc_root(),
604 cri_connection_timeout: defaults::default_u64::<i64, 1>(),
605 cri_query_timeout: defaults::default_u64::<i64, 5>(),
606 cri_socket_path: Default::default(),
607 data_plane: Default::default(),
608 dd_url: defaults::datadog_configuration_dd_url(),
609 disable_file_logging: Default::default(),
610 dogstatsd_buffer_size: defaults::default_u64::<i64, 8192>(),
611 dogstatsd_capture_depth: Default::default(),
612 dogstatsd_capture_path: Default::default(),
613 dogstatsd_context_expiry_seconds: defaults::default_u64::<i64, 20>(),
614 dogstatsd_disable_verbose_logs: Default::default(),
615 dogstatsd_entity_id_precedence: Default::default(),
616 dogstatsd_eol_required: Default::default(),
617 dogstatsd_expiry_seconds: defaults::default_u64::<i64, 300>(),
618 dogstatsd_flush_incomplete_buckets: Default::default(),
619 dogstatsd_log_file: defaults::datadog_configuration_dogstatsd_log_file(),
620 dogstatsd_log_file_max_rolls: defaults::default_u64::<i64, 3>(),
621 dogstatsd_log_file_max_size: defaults::datadog_configuration_dogstatsd_log_file_max_size(),
622 dogstatsd_logging_enabled: defaults::default_bool::<true>(),
623 dogstatsd_mapper_cache_size: defaults::default_u64::<i64, 1000>(),
624 dogstatsd_mapper_profiles: Default::default(),
625 dogstatsd_metrics_stats_enable: Default::default(),
626 dogstatsd_no_aggregation_pipeline: defaults::default_bool::<true>(),
627 dogstatsd_non_local_traffic: Default::default(),
628 dogstatsd_origin_detection: Default::default(),
629 dogstatsd_origin_detection_client: Default::default(),
630 dogstatsd_origin_optout_enabled: defaults::default_bool::<true>(),
631 dogstatsd_pipe_name: Default::default(),
632 dogstatsd_port: defaults::default_u64::<i64, 8125>(),
633 dogstatsd_so_rcvbuf: Default::default(),
634 dogstatsd_socket: Default::default(),
635 dogstatsd_stream_log_too_big: Default::default(),
636 dogstatsd_stream_socket: Default::default(),
637 dogstatsd_string_interner_size: defaults::default_u64::<i64, 4096>(),
638 dogstatsd_tag_cardinality: defaults::datadog_configuration_dogstatsd_tag_cardinality(),
639 dogstatsd_tags: Default::default(),
640 dogstatsd_windows_pipe_security_descriptor: defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor(),
641 dogstatsd_workers_count: Default::default(),
642 eks_fargate: Default::default(),
643 enable_payloads: Default::default(),
644 env: Default::default(),
645 expected_tags_duration: duration_defaults::expected_tags_duration(),
646 extra_tags: Default::default(),
647 forwarder_apikey_validation_interval: defaults::default_u64::<i64, 60>(),
648 forwarder_backoff_base: defaults::datadog_configuration_forwarder_backoff_base(),
649 forwarder_backoff_factor: defaults::datadog_configuration_forwarder_backoff_factor(),
650 forwarder_backoff_max: defaults::datadog_configuration_forwarder_backoff_max(),
651 forwarder_connection_reset_interval: Default::default(),
652 forwarder_flush_to_disk_mem_ratio: defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio(),
653 forwarder_high_prio_buffer_size: defaults::default_u64::<i64, 100>(),
654 forwarder_http_protocol: defaults::datadog_configuration_forwarder_http_protocol(),
655 forwarder_max_concurrent_requests: defaults::default_u64::<i64, 10>(),
656 forwarder_num_workers: defaults::default_u64::<i64, 1>(),
657 forwarder_outdated_file_in_days: defaults::default_u64::<i64, 10>(),
658 forwarder_recovery_interval: defaults::default_u64::<i64, 2>(),
659 forwarder_recovery_reset: Default::default(),
660 forwarder_retry_queue_capacity_time_interval_sec: defaults::default_u64::<
661 i64,
662 900,
663 >(),
664 forwarder_retry_queue_max_size: Default::default(),
665 forwarder_retry_queue_payloads_max_size: defaults::default_u64::<
666 i64,
667 15728640,
668 >(),
669 forwarder_stop_timeout: defaults::default_u64::<i64, 2>(),
670 forwarder_storage_max_disk_ratio: defaults::datadog_configuration_forwarder_storage_max_disk_ratio(),
671 forwarder_storage_max_size_in_bytes: Default::default(),
672 forwarder_storage_path: defaults::datadog_configuration_forwarder_storage_path(),
673 forwarder_timeout: defaults::default_u64::<i64, 20>(),
674 histogram_aggregates: defaults::datadog_configuration_histogram_aggregates(),
675 histogram_copy_to_distribution: Default::default(),
676 histogram_copy_to_distribution_prefix: Default::default(),
677 histogram_percentiles: defaults::datadog_configuration_histogram_percentiles(),
678 hostname: Default::default(),
679 ipc_cert_file_path: Default::default(),
680 kubernetes_kubelet_nodename: Default::default(),
681 log_file_max_rolls: defaults::default_u64::<i64, 1>(),
682 log_file_max_size: defaults::datadog_configuration_log_file_max_size(),
683 log_format_json: Default::default(),
684 log_format_rfc3339: Default::default(),
685 log_level: defaults::datadog_configuration_log_level(),
686 log_payloads: Default::default(),
687 log_to_console: defaults::default_bool::<true>(),
688 log_to_syslog: Default::default(),
689 metric_filterlist: Default::default(),
690 metric_filterlist_match_prefix: Default::default(),
691 metric_tag_filterlist: Default::default(),
692 min_tls_version: defaults::datadog_configuration_min_tls_version(),
693 multi_region_failover: Default::default(),
694 no_proxy_nonexact_match: Default::default(),
695 observability_pipelines_worker: Default::default(),
696 origin_detection_unified: Default::default(),
697 otlp_config: Default::default(),
698 provider_kind: Default::default(),
699 proxy: Default::default(),
700 run_path: defaults::datadog_configuration_run_path(),
701 secret_backend_command: Default::default(),
702 secret_refresh_on_api_key_failure_interval: Default::default(),
703 serializer_compressor_kind: defaults::datadog_configuration_serializer_compressor_kind(),
704 serializer_experimental_use_v3_api: Default::default(),
705 serializer_max_payload_size: defaults::default_u64::<i64, 2621440>(),
706 serializer_max_series_payload_size: defaults::default_u64::<i64, 512000>(),
707 serializer_max_series_points_per_payload: defaults::default_u64::<
708 i64,
709 10000,
710 >(),
711 serializer_max_series_uncompressed_payload_size: defaults::default_u64::<
712 i64,
713 5242880,
714 >(),
715 serializer_max_uncompressed_payload_size: defaults::default_u64::<
716 i64,
717 4194304,
718 >(),
719 serializer_zstd_compressor_level: defaults::default_u64::<i64, 1>(),
720 site: defaults::datadog_configuration_site(),
721 skip_ssl_validation: Default::default(),
722 sslkeylogfile: Default::default(),
723 statsd_forward_host: Default::default(),
724 statsd_forward_port: Default::default(),
725 statsd_metric_blocklist: Default::default(),
726 statsd_metric_blocklist_match_prefix: Default::default(),
727 statsd_metric_namespace: Default::default(),
728 statsd_metric_namespace_blacklist: defaults::datadog_configuration_statsd_metric_namespace_blacklist(),
729 syslog_rfc: Default::default(),
730 syslog_uri: Default::default(),
731 tags: Default::default(),
732 telemetry: Default::default(),
733 tls_handshake_timeout: duration_defaults::tls_handshake_timeout(),
734 use_proxy_for_cloud_metadata: Default::default(),
735 use_v2_api: Default::default(),
736 use_v3_api: Default::default(),
737 vector: Default::default(),
738 vsock_addr: Default::default(),
739 }
740 }
741}
742
743#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
744pub struct AgentIpc {
745 #[serde(default = "defaults::default_u64::<i64, 134217728>")]
746 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
747 pub grpc_max_message_size: i64,
748}
749
750impl Default for AgentIpc {
751 fn default() -> Self {
752 Self {
753 grpc_max_message_size: defaults::default_u64::<i64, 134217728>(),
754 }
755 }
756}
757
758#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
759pub struct ApmConfig {
760 #[serde(default = "defaults::default_bool::<true>")]
761 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
762 pub compute_stats_by_span_kind: bool,
763
764 #[serde(default)]
765 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
766 pub enable_rare_sampler: bool,
767
768 #[serde(default)]
769 pub error_tracking_standalone: ApmConfigErrorTrackingStandalone,
770
771 #[serde(default = "defaults::datadog_configuration_apm_config_errors_per_second")]
772 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
773 pub errors_per_second: f64,
774
775 #[serde(default = "defaults::datadog_configuration_apm_config_extra_sample_rate")]
776 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
777 pub extra_sample_rate: f64,
778
779 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
780 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
781 pub features: Vec<String>,
782
783 #[serde(default)]
784 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
785 pub max_catalog_entries: i64,
786
787 #[serde(
788 default = "defaults::datadog_configuration_apm_config_max_traces_per_second"
789 )]
790 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
791 pub max_traces_per_second: f64,
792
793 #[serde(default)]
794 pub obfuscation: ApmConfigObfuscation,
795
796 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
797 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
798 pub peer_tags: Vec<String>,
799
800 #[serde(default = "defaults::default_bool::<true>")]
801 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
802 pub peer_tags_aggregation: bool,
803
804 #[serde(default)]
805 pub probabilistic_sampler: ApmConfigProbabilisticSampler,
806
807 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
808 #[serde(deserialize_with = "crate::list_de::deserialize_json_array_or_string")]
809 pub replace_tags: Vec<HashMap<String, String>>,
810
811 #[serde(
812 default = "defaults::datadog_configuration_apm_config_target_traces_per_second"
813 )]
814 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
815 pub target_traces_per_second: f64,
816}
817
818impl Default for ApmConfig {
819 fn default() -> Self {
820 Self {
821 compute_stats_by_span_kind: defaults::default_bool::<true>(),
822 enable_rare_sampler: Default::default(),
823 error_tracking_standalone: Default::default(),
824 errors_per_second: defaults::datadog_configuration_apm_config_errors_per_second(),
825 extra_sample_rate: defaults::datadog_configuration_apm_config_extra_sample_rate(),
826 features: Default::default(),
827 max_catalog_entries: Default::default(),
828 max_traces_per_second: defaults::datadog_configuration_apm_config_max_traces_per_second(),
829 obfuscation: Default::default(),
830 peer_tags: Default::default(),
831 peer_tags_aggregation: defaults::default_bool::<true>(),
832 probabilistic_sampler: Default::default(),
833 replace_tags: Default::default(),
834 target_traces_per_second: defaults::datadog_configuration_apm_config_target_traces_per_second(),
835 }
836 }
837}
838
839#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
840pub struct ApmConfigErrorTrackingStandalone {
841 #[serde(default)]
842 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
843 pub enabled: bool,
844}
845
846impl Default for ApmConfigErrorTrackingStandalone {
847 fn default() -> Self {
848 Self {
849 enabled: Default::default(),
850 }
851 }
852}
853
854#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
855pub struct ApmConfigObfuscation {
856 #[serde(default)]
857 pub credit_cards: ApmConfigObfuscationCreditCards,
858
859 #[serde(default)]
860 pub elasticsearch: ApmConfigObfuscationElasticsearch,
861
862 #[serde(default)]
863 pub http: ApmConfigObfuscationHttp,
864
865 #[serde(default)]
866 pub memcached: ApmConfigObfuscationMemcached,
867
868 #[serde(default)]
869 pub mongodb: ApmConfigObfuscationMongodb,
870
871 #[serde(default)]
872 pub opensearch: ApmConfigObfuscationOpensearch,
873
874 #[serde(default)]
875 pub redis: ApmConfigObfuscationRedis,
876
877 #[serde(default)]
878 pub valkey: ApmConfigObfuscationValkey,
879}
880
881impl Default for ApmConfigObfuscation {
882 fn default() -> Self {
883 Self {
884 credit_cards: Default::default(),
885 elasticsearch: Default::default(),
886 http: Default::default(),
887 memcached: Default::default(),
888 mongodb: Default::default(),
889 opensearch: Default::default(),
890 redis: Default::default(),
891 valkey: Default::default(),
892 }
893 }
894}
895
896#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
897pub struct ApmConfigObfuscationCreditCards {
898 #[serde(default = "defaults::default_bool::<true>")]
899 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
900 pub enabled: bool,
901
902 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
903 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
904 pub keep_values: Vec<String>,
905
906 #[serde(default)]
907 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
908 pub luhn: bool,
909}
910
911impl Default for ApmConfigObfuscationCreditCards {
912 fn default() -> Self {
913 Self {
914 enabled: defaults::default_bool::<true>(),
915 keep_values: Default::default(),
916 luhn: Default::default(),
917 }
918 }
919}
920
921#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
922pub struct ApmConfigObfuscationElasticsearch {
923 #[serde(default = "defaults::default_bool::<true>")]
924 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
925 pub enabled: bool,
926
927 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
928 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
929 pub keep_values: Vec<String>,
930
931 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
932 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
933 pub obfuscate_sql_values: Vec<String>,
934}
935
936impl Default for ApmConfigObfuscationElasticsearch {
937 fn default() -> Self {
938 Self {
939 enabled: defaults::default_bool::<true>(),
940 keep_values: Default::default(),
941 obfuscate_sql_values: Default::default(),
942 }
943 }
944}
945
946#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
947pub struct ApmConfigObfuscationHttp {
948 #[serde(default)]
949 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
950 pub remove_paths_with_digits: bool,
951
952 #[serde(default)]
953 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
954 pub remove_query_string: bool,
955}
956
957impl Default for ApmConfigObfuscationHttp {
958 fn default() -> Self {
959 Self {
960 remove_paths_with_digits: Default::default(),
961 remove_query_string: Default::default(),
962 }
963 }
964}
965
966#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
967pub struct ApmConfigObfuscationMemcached {
968 #[serde(default = "defaults::default_bool::<true>")]
969 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
970 pub enabled: bool,
971
972 #[serde(default)]
973 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
974 pub keep_command: bool,
975}
976
977impl Default for ApmConfigObfuscationMemcached {
978 fn default() -> Self {
979 Self {
980 enabled: defaults::default_bool::<true>(),
981 keep_command: Default::default(),
982 }
983 }
984}
985
986#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
987pub struct ApmConfigObfuscationMongodb {
988 #[serde(default = "defaults::default_bool::<true>")]
989 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
990 pub enabled: bool,
991
992 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
993 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
994 pub keep_values: Vec<String>,
995
996 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
997 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
998 pub obfuscate_sql_values: Vec<String>,
999}
1000
1001impl Default for ApmConfigObfuscationMongodb {
1002 fn default() -> Self {
1003 Self {
1004 enabled: defaults::default_bool::<true>(),
1005 keep_values: Default::default(),
1006 obfuscate_sql_values: Default::default(),
1007 }
1008 }
1009}
1010
1011#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1012pub struct ApmConfigObfuscationOpensearch {
1013 #[serde(default = "defaults::default_bool::<true>")]
1014 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1015 pub enabled: bool,
1016
1017 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1018 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1019 pub keep_values: Vec<String>,
1020
1021 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1022 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1023 pub obfuscate_sql_values: Vec<String>,
1024}
1025
1026impl Default for ApmConfigObfuscationOpensearch {
1027 fn default() -> Self {
1028 Self {
1029 enabled: defaults::default_bool::<true>(),
1030 keep_values: Default::default(),
1031 obfuscate_sql_values: Default::default(),
1032 }
1033 }
1034}
1035
1036#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1037pub struct ApmConfigObfuscationRedis {
1038 #[serde(default = "defaults::default_bool::<true>")]
1039 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1040 pub enabled: bool,
1041
1042 #[serde(default)]
1043 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1044 pub remove_all_args: bool,
1045}
1046
1047impl Default for ApmConfigObfuscationRedis {
1048 fn default() -> Self {
1049 Self {
1050 enabled: defaults::default_bool::<true>(),
1051 remove_all_args: Default::default(),
1052 }
1053 }
1054}
1055
1056#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1057pub struct ApmConfigObfuscationValkey {
1058 #[serde(default = "defaults::default_bool::<true>")]
1059 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1060 pub enabled: bool,
1061
1062 #[serde(default)]
1063 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1064 pub remove_all_args: bool,
1065}
1066
1067impl Default for ApmConfigObfuscationValkey {
1068 fn default() -> Self {
1069 Self {
1070 enabled: defaults::default_bool::<true>(),
1071 remove_all_args: Default::default(),
1072 }
1073 }
1074}
1075
1076#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1077pub struct ApmConfigProbabilisticSampler {
1078 #[serde(default)]
1079 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1080 pub enabled: bool,
1081
1082 #[serde(default)]
1083 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1084 pub hash_seed: i64,
1085
1086 #[serde(
1087 default = "defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage"
1088 )]
1089 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1090 pub sampling_percentage: f64,
1091}
1092
1093impl Default for ApmConfigProbabilisticSampler {
1094 fn default() -> Self {
1095 Self {
1096 enabled: Default::default(),
1097 hash_seed: Default::default(),
1098 sampling_percentage: defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage(),
1099 }
1100 }
1101}
1102
1103#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1104pub struct Autoscaling {
1105 #[serde(default)]
1106 pub failover: AutoscalingFailover,
1107}
1108
1109impl Default for Autoscaling {
1110 fn default() -> Self {
1111 Self {
1112 failover: Default::default(),
1113 }
1114 }
1115}
1116
1117#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1118pub struct AutoscalingFailover {
1119 #[serde(default)]
1120 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1121 pub enabled: bool,
1122
1123 #[serde(default = "defaults::datadog_configuration_autoscaling_failover_metrics")]
1124 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1125 pub metrics: Vec<String>,
1126}
1127
1128impl Default for AutoscalingFailover {
1129 fn default() -> Self {
1130 Self {
1131 enabled: Default::default(),
1132 metrics: defaults::datadog_configuration_autoscaling_failover_metrics(),
1133 }
1134 }
1135}
1136
1137#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1138pub struct ClusterAgent {
1139 #[serde(default)]
1140 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1141 pub auth_token: String,
1142
1143 #[serde(default)]
1144 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1145 pub enabled: bool,
1146
1147 #[serde(
1148 default = "defaults::datadog_configuration_cluster_agent_kubernetes_service_name"
1149 )]
1150 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1151 pub kubernetes_service_name: String,
1152
1153 #[serde(default)]
1154 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1155 pub url: String,
1156}
1157
1158impl Default for ClusterAgent {
1159 fn default() -> Self {
1160 Self {
1161 auth_token: Default::default(),
1162 enabled: Default::default(),
1163 kubernetes_service_name: defaults::datadog_configuration_cluster_agent_kubernetes_service_name(),
1164 url: Default::default(),
1165 }
1166 }
1167}
1168
1169#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1170pub struct DataPlane {
1171 #[serde(default = "defaults::datadog_configuration_data_plane_api_listen_address")]
1172 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1173 pub api_listen_address: String,
1174
1175 #[serde(default)]
1176 pub dogstatsd: DataPlaneDogstatsd,
1177
1178 #[serde(default)]
1179 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1180 pub enabled: bool,
1181
1182 #[serde(default = "defaults::datadog_configuration_data_plane_log_file")]
1183 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1184 pub log_file: String,
1185
1186 #[serde(default)]
1187 pub otlp: DataPlaneOtlp,
1188
1189 #[serde(default = "defaults::default_bool::<true>")]
1190 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1191 pub remote_agent_enabled: bool,
1192
1193 #[serde(
1194 default = "defaults::datadog_configuration_data_plane_secure_api_listen_address"
1195 )]
1196 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1197 pub secure_api_listen_address: String,
1198
1199 #[serde(default = "defaults::default_u64::<i64, 3>")]
1200 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1201 pub serializer_zstd_compressor_level: i64,
1202
1203 #[serde(default = "defaults::default_u64::<i64, 4>")]
1204 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1205 pub stop_timeout: i64,
1206
1207 #[serde(default = "defaults::default_bool::<true>")]
1208 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1209 pub use_new_config_stream_endpoint: bool,
1210}
1211
1212impl Default for DataPlane {
1213 fn default() -> Self {
1214 Self {
1215 api_listen_address: defaults::datadog_configuration_data_plane_api_listen_address(),
1216 dogstatsd: Default::default(),
1217 enabled: Default::default(),
1218 log_file: defaults::datadog_configuration_data_plane_log_file(),
1219 otlp: Default::default(),
1220 remote_agent_enabled: defaults::default_bool::<true>(),
1221 secure_api_listen_address: defaults::datadog_configuration_data_plane_secure_api_listen_address(),
1222 serializer_zstd_compressor_level: defaults::default_u64::<i64, 3>(),
1223 stop_timeout: defaults::default_u64::<i64, 4>(),
1224 use_new_config_stream_endpoint: defaults::default_bool::<true>(),
1225 }
1226 }
1227}
1228
1229#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1230pub struct DataPlaneDogstatsd {
1231 #[serde(default = "defaults::default_u64::<i64, 100000>")]
1232 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1233 pub aggregator_tag_filter_cache_capacity: i64,
1234
1235 #[serde(default = "defaults::default_bool::<true>")]
1236 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1237 pub enabled: bool,
1238}
1239
1240impl Default for DataPlaneDogstatsd {
1241 fn default() -> Self {
1242 Self {
1243 aggregator_tag_filter_cache_capacity: defaults::default_u64::<i64, 100000>(),
1244 enabled: defaults::default_bool::<true>(),
1245 }
1246 }
1247}
1248
1249#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1250pub struct DataPlaneOtlp {
1251 #[serde(default)]
1252 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1253 pub enabled: bool,
1254
1255 #[serde(default)]
1256 pub proxy: DataPlaneOtlpProxy,
1257}
1258
1259impl Default for DataPlaneOtlp {
1260 fn default() -> Self {
1261 Self {
1262 enabled: Default::default(),
1263 proxy: Default::default(),
1264 }
1265 }
1266}
1267
1268#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1269pub struct DataPlaneOtlpProxy {
1270 #[serde(default)]
1271 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1272 pub enabled: bool,
1273
1274 #[serde(default)]
1275 pub logs: DataPlaneOtlpProxyLogs,
1276
1277 #[serde(default)]
1278 pub metrics: DataPlaneOtlpProxyMetrics,
1279
1280 #[serde(default)]
1281 pub receiver: DataPlaneOtlpProxyReceiver,
1282
1283 #[serde(default)]
1284 pub traces: DataPlaneOtlpProxyTraces,
1285}
1286
1287impl Default for DataPlaneOtlpProxy {
1288 fn default() -> Self {
1289 Self {
1290 enabled: Default::default(),
1291 logs: Default::default(),
1292 metrics: Default::default(),
1293 receiver: Default::default(),
1294 traces: Default::default(),
1295 }
1296 }
1297}
1298
1299#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1300pub struct DataPlaneOtlpProxyLogs {
1301 #[serde(default = "defaults::default_bool::<true>")]
1302 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1303 pub enabled: bool,
1304}
1305
1306impl Default for DataPlaneOtlpProxyLogs {
1307 fn default() -> Self {
1308 Self {
1309 enabled: defaults::default_bool::<true>(),
1310 }
1311 }
1312}
1313
1314#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1315pub struct DataPlaneOtlpProxyMetrics {
1316 #[serde(default = "defaults::default_bool::<true>")]
1317 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1318 pub enabled: bool,
1319}
1320
1321impl Default for DataPlaneOtlpProxyMetrics {
1322 fn default() -> Self {
1323 Self {
1324 enabled: defaults::default_bool::<true>(),
1325 }
1326 }
1327}
1328
1329#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1330pub struct DataPlaneOtlpProxyReceiver {
1331 #[serde(default)]
1332 pub protocols: DataPlaneOtlpProxyReceiverProtocols,
1333}
1334
1335impl Default for DataPlaneOtlpProxyReceiver {
1336 fn default() -> Self {
1337 Self {
1338 protocols: Default::default(),
1339 }
1340 }
1341}
1342
1343#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1344pub struct DataPlaneOtlpProxyReceiverProtocols {
1345 #[serde(default)]
1346 pub grpc: DataPlaneOtlpProxyReceiverProtocolsGrpc,
1347}
1348
1349impl Default for DataPlaneOtlpProxyReceiverProtocols {
1350 fn default() -> Self {
1351 Self { grpc: Default::default() }
1352 }
1353}
1354
1355#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1356pub struct DataPlaneOtlpProxyReceiverProtocolsGrpc {
1357 #[serde(
1358 default = "defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint"
1359 )]
1360 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1361 pub endpoint: String,
1362}
1363
1364impl Default for DataPlaneOtlpProxyReceiverProtocolsGrpc {
1365 fn default() -> Self {
1366 Self {
1367 endpoint: defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint(),
1368 }
1369 }
1370}
1371
1372#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1373pub struct DataPlaneOtlpProxyTraces {
1374 #[serde(default = "defaults::default_bool::<true>")]
1375 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1376 pub enabled: bool,
1377}
1378
1379impl Default for DataPlaneOtlpProxyTraces {
1380 fn default() -> Self {
1381 Self {
1382 enabled: defaults::default_bool::<true>(),
1383 }
1384 }
1385}
1386
1387#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1388pub struct EnablePayloads {
1389 #[serde(default = "defaults::default_bool::<true>")]
1390 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1391 pub events: bool,
1392
1393 #[serde(default = "defaults::default_bool::<true>")]
1394 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1395 pub series: bool,
1396
1397 #[serde(default = "defaults::default_bool::<true>")]
1398 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1399 pub service_checks: bool,
1400
1401 #[serde(default = "defaults::default_bool::<true>")]
1402 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1403 pub sketches: bool,
1404}
1405
1406impl Default for EnablePayloads {
1407 fn default() -> Self {
1408 Self {
1409 events: defaults::default_bool::<true>(),
1410 series: defaults::default_bool::<true>(),
1411 service_checks: defaults::default_bool::<true>(),
1412 sketches: defaults::default_bool::<true>(),
1413 }
1414 }
1415}
1416
1417#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1418pub struct MultiRegionFailover {
1419 #[serde(default)]
1420 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1421 pub api_key: String,
1422
1423 #[serde(default)]
1424 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1425 pub dd_url: String,
1426
1427 #[serde(default)]
1428 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1429 pub enabled: bool,
1430
1431 #[serde(default)]
1432 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1433 pub failover_metrics: bool,
1434
1435 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1436 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1437 pub metric_allowlist: Vec<String>,
1438
1439 #[serde(default)]
1440 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1441 pub site: String,
1442}
1443
1444impl Default for MultiRegionFailover {
1445 fn default() -> Self {
1446 Self {
1447 api_key: Default::default(),
1448 dd_url: Default::default(),
1449 enabled: Default::default(),
1450 failover_metrics: Default::default(),
1451 metric_allowlist: Default::default(),
1452 site: Default::default(),
1453 }
1454 }
1455}
1456
1457#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1458pub struct ObservabilityPipelinesWorker {
1459 #[serde(default)]
1460 pub metrics: ObservabilityPipelinesWorkerMetrics,
1461}
1462
1463impl Default for ObservabilityPipelinesWorker {
1464 fn default() -> Self {
1465 Self {
1466 metrics: Default::default(),
1467 }
1468 }
1469}
1470
1471#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1472pub struct ObservabilityPipelinesWorkerMetrics {
1473 #[serde(default)]
1474 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1475 pub enabled: bool,
1476
1477 #[serde(default)]
1478 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1479 pub url: String,
1480
1481 #[serde(default)]
1482 pub use_v3_api: ObservabilityPipelinesWorkerMetricsUseV3Api,
1483}
1484
1485impl Default for ObservabilityPipelinesWorkerMetrics {
1486 fn default() -> Self {
1487 Self {
1488 enabled: Default::default(),
1489 url: Default::default(),
1490 use_v3_api: Default::default(),
1491 }
1492 }
1493}
1494
1495#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1496pub struct ObservabilityPipelinesWorkerMetricsUseV3Api {
1497 #[serde(default)]
1498 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1499 pub series: bool,
1500}
1501
1502impl Default for ObservabilityPipelinesWorkerMetricsUseV3Api {
1503 fn default() -> Self {
1504 Self { series: Default::default() }
1505 }
1506}
1507
1508#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1509pub struct OtlpConfig {
1510 #[serde(default)]
1511 pub logs: OtlpConfigLogs,
1512
1513 #[serde(default)]
1514 pub metrics: OtlpConfigMetrics,
1515
1516 #[serde(default)]
1517 pub receiver: OtlpConfigReceiver,
1518
1519 #[serde(default)]
1520 pub traces: OtlpConfigTraces,
1521}
1522
1523impl Default for OtlpConfig {
1524 fn default() -> Self {
1525 Self {
1526 logs: Default::default(),
1527 metrics: Default::default(),
1528 receiver: Default::default(),
1529 traces: Default::default(),
1530 }
1531 }
1532}
1533
1534#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1535pub struct OtlpConfigLogs {
1536 #[serde(default)]
1537 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1538 pub enabled: bool,
1539}
1540
1541impl Default for OtlpConfigLogs {
1542 fn default() -> Self {
1543 Self {
1544 enabled: Default::default(),
1545 }
1546 }
1547}
1548
1549#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1550pub struct OtlpConfigMetrics {
1551 #[serde(default = "defaults::default_u64::<i64, 3600>")]
1552 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1553 pub delta_ttl: i64,
1554
1555 #[serde(default = "defaults::default_bool::<true>")]
1556 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1557 pub enabled: bool,
1558
1559 #[serde(default)]
1560 pub histograms: OtlpConfigMetricsHistograms,
1561
1562 #[serde(default = "defaults::default_bool::<true>")]
1563 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1564 pub instrumentation_scope_metadata_as_tags: bool,
1565
1566 #[serde(default)]
1567 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1568 pub resource_attributes_as_tags: bool,
1569
1570 #[serde(default)]
1571 pub summaries: OtlpConfigMetricsSummaries,
1572
1573 #[serde(default)]
1574 pub sums: OtlpConfigMetricsSums,
1575
1576 #[serde(
1577 default = "defaults::datadog_configuration_otlp_config_metrics_tag_cardinality"
1578 )]
1579 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1580 pub tag_cardinality: String,
1581
1582 #[serde(default)]
1583 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1584 pub tags: String,
1585}
1586
1587impl Default for OtlpConfigMetrics {
1588 fn default() -> Self {
1589 Self {
1590 delta_ttl: defaults::default_u64::<i64, 3600>(),
1591 enabled: defaults::default_bool::<true>(),
1592 histograms: Default::default(),
1593 instrumentation_scope_metadata_as_tags: defaults::default_bool::<true>(),
1594 resource_attributes_as_tags: Default::default(),
1595 summaries: Default::default(),
1596 sums: Default::default(),
1597 tag_cardinality: defaults::datadog_configuration_otlp_config_metrics_tag_cardinality(),
1598 tags: Default::default(),
1599 }
1600 }
1601}
1602
1603#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1604pub struct OtlpConfigMetricsHistograms {
1605 #[serde(
1606 default = "defaults::datadog_configuration_otlp_config_metrics_histograms_mode"
1607 )]
1608 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1609 pub mode: String,
1610
1611 #[serde(default)]
1612 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1613 pub send_aggregation_metrics: bool,
1614}
1615
1616impl Default for OtlpConfigMetricsHistograms {
1617 fn default() -> Self {
1618 Self {
1619 mode: defaults::datadog_configuration_otlp_config_metrics_histograms_mode(),
1620 send_aggregation_metrics: Default::default(),
1621 }
1622 }
1623}
1624
1625#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1626pub struct OtlpConfigMetricsSummaries {
1627 #[serde(
1628 default = "defaults::datadog_configuration_otlp_config_metrics_summaries_mode"
1629 )]
1630 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1631 pub mode: String,
1632}
1633
1634impl Default for OtlpConfigMetricsSummaries {
1635 fn default() -> Self {
1636 Self {
1637 mode: defaults::datadog_configuration_otlp_config_metrics_summaries_mode(),
1638 }
1639 }
1640}
1641
1642#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1643pub struct OtlpConfigMetricsSums {
1644 #[serde(
1645 default = "defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode"
1646 )]
1647 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1648 pub cumulative_monotonic_mode: String,
1649
1650 #[serde(
1651 default = "defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value"
1652 )]
1653 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1654 pub initial_cumulative_monotonic_value: String,
1655}
1656
1657impl Default for OtlpConfigMetricsSums {
1658 fn default() -> Self {
1659 Self {
1660 cumulative_monotonic_mode: defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode(),
1661 initial_cumulative_monotonic_value: defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value(),
1662 }
1663 }
1664}
1665
1666#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1667pub struct OtlpConfigReceiver {
1668 #[serde(default)]
1669 pub protocols: OtlpConfigReceiverProtocols,
1670}
1671
1672impl Default for OtlpConfigReceiver {
1673 fn default() -> Self {
1674 Self {
1675 protocols: Default::default(),
1676 }
1677 }
1678}
1679
1680#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1681pub struct OtlpConfigReceiverProtocols {
1682 #[serde(default)]
1683 pub grpc: OtlpConfigReceiverProtocolsGrpc,
1684
1685 #[serde(default)]
1686 pub http: OtlpConfigReceiverProtocolsHttp,
1687}
1688
1689impl Default for OtlpConfigReceiverProtocols {
1690 fn default() -> Self {
1691 Self {
1692 grpc: Default::default(),
1693 http: Default::default(),
1694 }
1695 }
1696}
1697
1698#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1699pub struct OtlpConfigReceiverProtocolsGrpc {
1700 #[serde(
1701 default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint"
1702 )]
1703 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1704 pub endpoint: String,
1705
1706 #[serde(default)]
1707 pub keepalive: OtlpConfigReceiverProtocolsGrpcKeepalive,
1708
1709 #[serde(default)]
1710 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1711 pub max_concurrent_streams: i64,
1712
1713 #[serde(default)]
1714 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1715 pub max_recv_msg_size_mib: i64,
1716
1717 #[serde(default)]
1718 pub tls: OtlpConfigReceiverProtocolsGrpcTls,
1719
1720 #[serde(
1721 default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport"
1722 )]
1723 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1724 pub transport: String,
1725}
1726
1727impl Default for OtlpConfigReceiverProtocolsGrpc {
1728 fn default() -> Self {
1729 Self {
1730 endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint(),
1731 keepalive: Default::default(),
1732 max_concurrent_streams: Default::default(),
1733 max_recv_msg_size_mib: Default::default(),
1734 tls: Default::default(),
1735 transport: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport(),
1736 }
1737 }
1738}
1739
1740#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1741pub struct OtlpConfigReceiverProtocolsGrpcKeepalive {
1742 #[serde(default)]
1743 pub server_parameters: OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters,
1744}
1745
1746impl Default for OtlpConfigReceiverProtocolsGrpcKeepalive {
1747 fn default() -> Self {
1748 Self {
1749 server_parameters: Default::default(),
1750 }
1751 }
1752}
1753
1754#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1755pub struct OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters {
1756 #[serde(
1757 default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age",
1758
1759 deserialize_with = "crate::duration_de::deserialize_go_duration"
1760 )]
1761 pub max_connection_age: std::time::Duration,
1762
1763 #[serde(
1764 default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace",
1765
1766 deserialize_with = "crate::duration_de::deserialize_go_duration"
1767 )]
1768 pub max_connection_age_grace: std::time::Duration,
1769
1770 #[serde(
1771 default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time",
1772
1773 deserialize_with = "crate::duration_de::deserialize_go_duration"
1774 )]
1775 pub time: std::time::Duration,
1776
1777 #[serde(
1778 default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout",
1779
1780 deserialize_with = "crate::duration_de::deserialize_go_duration"
1781 )]
1782 pub timeout: std::time::Duration,
1783}
1784
1785impl Default for OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters {
1786 fn default() -> Self {
1787 Self {
1788 max_connection_age: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age(),
1789 max_connection_age_grace: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace(),
1790 time: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time(),
1791 timeout: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout(),
1792 }
1793 }
1794}
1795
1796#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1797pub struct OtlpConfigReceiverProtocolsGrpcTls {
1798 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1799 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1800 pub ca_file: Option<String>,
1801
1802 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1803 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1804 pub cert_file: Option<String>,
1805
1806 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1807 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1808 pub key_file: Option<String>,
1809}
1810
1811impl Default for OtlpConfigReceiverProtocolsGrpcTls {
1812 fn default() -> Self {
1813 Self {
1814 ca_file: Default::default(),
1815 cert_file: Default::default(),
1816 key_file: Default::default(),
1817 }
1818 }
1819}
1820
1821#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1822pub struct OtlpConfigReceiverProtocolsHttp {
1823 #[serde(default)]
1824 pub cors: OtlpConfigReceiverProtocolsHttpCors,
1825
1826 #[serde(
1827 default = "defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint"
1828 )]
1829 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1830 pub endpoint: String,
1831
1832 #[serde(default)]
1833 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1834 pub max_request_body_size: i64,
1835
1836 #[serde(default)]
1837 pub tls: OtlpConfigReceiverProtocolsHttpTls,
1838}
1839
1840impl Default for OtlpConfigReceiverProtocolsHttp {
1841 fn default() -> Self {
1842 Self {
1843 cors: Default::default(),
1844 endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint(),
1845 max_request_body_size: Default::default(),
1846 tls: Default::default(),
1847 }
1848 }
1849}
1850
1851#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1852pub struct OtlpConfigReceiverProtocolsHttpCors {
1853 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1854 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1855 pub allowed_headers: Vec<String>,
1856
1857 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1858 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1859 pub allowed_origins: Vec<String>,
1860
1861 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1862 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1863 pub exposed_headers: Vec<String>,
1864
1865 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1866 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_i64")]
1867 pub max_age: Option<i64>,
1868}
1869
1870impl Default for OtlpConfigReceiverProtocolsHttpCors {
1871 fn default() -> Self {
1872 Self {
1873 allowed_headers: Default::default(),
1874 allowed_origins: Default::default(),
1875 exposed_headers: Default::default(),
1876 max_age: Default::default(),
1877 }
1878 }
1879}
1880
1881#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1882pub struct OtlpConfigReceiverProtocolsHttpTls {
1883 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1884 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1885 pub ca_file: Option<String>,
1886
1887 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1888 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1889 pub cert_file: Option<String>,
1890
1891 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1892 #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1893 pub key_file: Option<String>,
1894}
1895
1896impl Default for OtlpConfigReceiverProtocolsHttpTls {
1897 fn default() -> Self {
1898 Self {
1899 ca_file: Default::default(),
1900 cert_file: Default::default(),
1901 key_file: Default::default(),
1902 }
1903 }
1904}
1905
1906#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1907pub struct OtlpConfigTraces {
1908 #[serde(default = "defaults::default_bool::<true>")]
1909 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1910 pub enabled: bool,
1911
1912 #[serde(default = "defaults::default_u64::<i64, 5003>")]
1913 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1914 pub internal_port: i64,
1915
1916 #[serde(default)]
1917 pub probabilistic_sampler: OtlpConfigTracesProbabilisticSampler,
1918}
1919
1920impl Default for OtlpConfigTraces {
1921 fn default() -> Self {
1922 Self {
1923 enabled: defaults::default_bool::<true>(),
1924 internal_port: defaults::default_u64::<i64, 5003>(),
1925 probabilistic_sampler: Default::default(),
1926 }
1927 }
1928}
1929
1930#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1931pub struct OtlpConfigTracesProbabilisticSampler {
1932 #[serde(
1933 default = "defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage"
1934 )]
1935 #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1936 pub sampling_percentage: f64,
1937}
1938
1939impl Default for OtlpConfigTracesProbabilisticSampler {
1940 fn default() -> Self {
1941 Self {
1942 sampling_percentage: defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage(),
1943 }
1944 }
1945}
1946
1947#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1948pub struct Proxy {
1949 #[serde(default)]
1950 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1951 pub http: String,
1952
1953 #[serde(default)]
1954 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1955 pub https: String,
1956
1957 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1958 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1959 pub no_proxy: Vec<String>,
1960}
1961
1962impl Default for Proxy {
1963 fn default() -> Self {
1964 Self {
1965 http: Default::default(),
1966 https: Default::default(),
1967 no_proxy: Default::default(),
1968 }
1969 }
1970}
1971
1972#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1973pub struct SerializerExperimentalUseV3Api {
1974 #[serde(default)]
1975 #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1976 pub compression_level: i64,
1977
1978 #[serde(default)]
1979 pub sketches: SerializerExperimentalUseV3ApiSketches,
1980}
1981
1982impl Default for SerializerExperimentalUseV3Api {
1983 fn default() -> Self {
1984 Self {
1985 compression_level: Default::default(),
1986 sketches: Default::default(),
1987 }
1988 }
1989}
1990
1991#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1992pub struct SerializerExperimentalUseV3ApiSketches {
1993 #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1994 #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1995 pub endpoints: Vec<String>,
1996}
1997
1998impl Default for SerializerExperimentalUseV3ApiSketches {
1999 fn default() -> Self {
2000 Self {
2001 endpoints: Default::default(),
2002 }
2003 }
2004}
2005
2006#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2007pub struct Telemetry {
2008 #[serde(default)]
2009 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2010 pub dogstatsd_origin: bool,
2011}
2012
2013impl Default for Telemetry {
2014 fn default() -> Self {
2015 Self {
2016 dogstatsd_origin: Default::default(),
2017 }
2018 }
2019}
2020
2021#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2022pub struct UseV2Api {
2023 #[serde(default = "defaults::default_bool::<true>")]
2024 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2025 pub series: bool,
2026}
2027
2028impl Default for UseV2Api {
2029 fn default() -> Self {
2030 Self {
2031 series: defaults::default_bool::<true>(),
2032 }
2033 }
2034}
2035
2036#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2037pub struct UseV3Api {
2038 #[serde(default)]
2039 pub series: UseV3ApiSeries,
2040}
2041
2042impl Default for UseV3Api {
2043 fn default() -> Self {
2044 Self { series: Default::default() }
2045 }
2046}
2047
2048#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2049pub struct UseV3ApiSeries {
2050 #[serde(default = "defaults::datadog_configuration_use_v3_api_series_enabled")]
2051 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
2052 pub enabled: String,
2053
2054 #[serde(default, skip_serializing_if = ":: std :: collections :: HashMap::is_empty")]
2055 #[serde(deserialize_with = "crate::cast_de::deserialize_string_map")]
2056 pub endpoints: HashMap<String, String>,
2057}
2058
2059impl Default for UseV3ApiSeries {
2060 fn default() -> Self {
2061 Self {
2062 enabled: defaults::datadog_configuration_use_v3_api_series_enabled(),
2063 endpoints: Default::default(),
2064 }
2065 }
2066}
2067
2068#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2069pub struct Vector {
2070 #[serde(default)]
2071 pub metrics: VectorMetrics,
2072}
2073
2074impl Default for Vector {
2075 fn default() -> Self {
2076 Self {
2077 metrics: Default::default(),
2078 }
2079 }
2080}
2081
2082#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2083pub struct VectorMetrics {
2084 #[serde(default)]
2085 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2086 pub enabled: bool,
2087
2088 #[serde(default)]
2089 #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
2090 pub url: String,
2091
2092 #[serde(default)]
2093 pub use_v3_api: VectorMetricsUseV3Api,
2094}
2095
2096impl Default for VectorMetrics {
2097 fn default() -> Self {
2098 Self {
2099 enabled: Default::default(),
2100 url: Default::default(),
2101 use_v3_api: Default::default(),
2102 }
2103 }
2104}
2105
2106#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2107pub struct VectorMetricsUseV3Api {
2108 #[serde(default)]
2109 #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2110 pub series: bool,
2111}
2112
2113impl Default for VectorMetricsUseV3Api {
2114 fn default() -> Self {
2115 Self { series: Default::default() }
2116 }
2117}
2118
2119pub mod defaults {
2121 pub(super) fn default_bool<const V: bool>() -> bool {
2122 V
2123 }
2124 pub(super) fn default_i64<T, const V: i64>() -> T
2125 where
2126 T: TryFrom<i64>,
2127 <T as ::std::convert::TryFrom<i64>>::Error: ::std::fmt::Debug,
2128 {
2129 T::try_from(V).unwrap()
2130 }
2131 pub(super) fn default_u64<T, const V: u64>() -> T
2132 where
2133 T: TryFrom<u64>,
2134 <T as ::std::convert::TryFrom<u64>>::Error: ::std::fmt::Debug,
2135 {
2136 T::try_from(V).unwrap()
2137 }
2138 pub(super) fn datadog_configuration_container_cgroup_root() -> String {
2139 "/host/sys/fs/cgroup/".to_string()
2140 }
2141 pub(super) fn datadog_configuration_container_proc_root() -> String {
2142 "/host/proc".to_string()
2143 }
2144 pub(super) fn datadog_configuration_dd_url() -> String {
2145 "https://app.datadoghq.com".to_string()
2146 }
2147 pub(super) fn datadog_configuration_dogstatsd_log_file() -> String {
2148 "${log_path}/dogstatsd_info/dogstatsd-stats.log".to_string()
2149 }
2150 pub(super) fn datadog_configuration_dogstatsd_log_file_max_size() -> String {
2151 "10Mb".to_string()
2152 }
2153 pub(super) fn datadog_configuration_dogstatsd_tag_cardinality() -> String {
2154 "low".to_string()
2155 }
2156 pub(super) fn datadog_configuration_dogstatsd_windows_pipe_security_descriptor() -> String {
2157 "D:AI(A;;GA;;;WD)".to_string()
2158 }
2159 pub(super) fn datadog_configuration_forwarder_backoff_base() -> f64 {
2160 2_f64
2161 }
2162 pub(super) fn datadog_configuration_forwarder_backoff_factor() -> f64 {
2163 2_f64
2164 }
2165 pub(super) fn datadog_configuration_forwarder_backoff_max() -> f64 {
2166 64_f64
2167 }
2168 pub(super) fn datadog_configuration_forwarder_flush_to_disk_mem_ratio() -> f64 {
2169 0.5_f64
2170 }
2171 pub(super) fn datadog_configuration_forwarder_http_protocol() -> String {
2172 "auto".to_string()
2173 }
2174 pub(super) fn datadog_configuration_forwarder_storage_max_disk_ratio() -> f64 {
2175 0.8_f64
2176 }
2177 pub(super) fn datadog_configuration_forwarder_storage_path() -> String {
2178 "${run_path}/transactions_to_retry".to_string()
2179 }
2180 pub(super) fn datadog_configuration_histogram_aggregates() -> Vec<String> {
2181 vec![
2182 "max".to_string(),
2183 "median".to_string(),
2184 "avg".to_string(),
2185 "count".to_string(),
2186 ]
2187 }
2188 pub(super) fn datadog_configuration_histogram_percentiles() -> Vec<String> {
2189 vec!["0.95".to_string()]
2190 }
2191 pub(super) fn datadog_configuration_log_file_max_size() -> String {
2192 "10Mb".to_string()
2193 }
2194 pub(super) fn datadog_configuration_log_level() -> String {
2195 "info".to_string()
2196 }
2197 pub(super) fn datadog_configuration_min_tls_version() -> String {
2198 "tlsv1.2".to_string()
2199 }
2200 pub(super) fn datadog_configuration_run_path() -> String {
2201 "${run_path}".to_string()
2202 }
2203 pub(super) fn datadog_configuration_serializer_compressor_kind() -> String {
2204 "zstd".to_string()
2205 }
2206 pub(super) fn datadog_configuration_site() -> String {
2207 "datadoghq.com".to_string()
2208 }
2209 pub(super) fn datadog_configuration_statsd_metric_namespace_blacklist() -> Vec<
2210 String,
2211 > {
2212 vec![
2213 "datadog.agent".to_string(),
2214 "datadog.dogstatsd".to_string(),
2215 "datadog.process".to_string(),
2216 "datadog.trace_agent".to_string(),
2217 "datadog.tracer".to_string(),
2218 "activemq".to_string(),
2219 "activemq_58".to_string(),
2220 "airflow".to_string(),
2221 "cassandra".to_string(),
2222 "confluent".to_string(),
2223 "hazelcast".to_string(),
2224 "hive".to_string(),
2225 "ignite".to_string(),
2226 "jboss".to_string(),
2227 "jvm".to_string(),
2228 "kafka".to_string(),
2229 "presto".to_string(),
2230 "sidekiq".to_string(),
2231 "solr".to_string(),
2232 "tomcat".to_string(),
2233 "runtime".to_string(),
2234 ]
2235 }
2236 pub(super) fn datadog_configuration_apm_config_errors_per_second() -> f64 {
2237 10_f64
2238 }
2239 pub(super) fn datadog_configuration_apm_config_extra_sample_rate() -> f64 {
2240 0_f64
2241 }
2242 pub(super) fn datadog_configuration_apm_config_max_traces_per_second() -> f64 {
2243 10_f64
2244 }
2245 pub(super) fn datadog_configuration_apm_config_target_traces_per_second() -> f64 {
2246 10_f64
2247 }
2248 pub(super) fn datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage() -> f64 {
2249 0_f64
2250 }
2251 pub(super) fn datadog_configuration_autoscaling_failover_metrics() -> Vec<String> {
2252 vec!["container.memory.usage".to_string(), "container.cpu.usage".to_string()]
2253 }
2254 pub(super) fn datadog_configuration_cluster_agent_kubernetes_service_name() -> String {
2255 "datadog-cluster-agent".to_string()
2256 }
2257 pub(super) fn datadog_configuration_data_plane_api_listen_address() -> String {
2258 "tcp://0.0.0.0:5100".to_string()
2259 }
2260 pub(super) fn datadog_configuration_data_plane_log_file() -> String {
2261 "${log_path}/agent-data-plane.log".to_string()
2262 }
2263 pub(super) fn datadog_configuration_data_plane_secure_api_listen_address() -> String {
2264 "tcp://0.0.0.0:5101".to_string()
2265 }
2266 pub(super) fn datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint() -> String {
2267 "127.0.0.1:4319".to_string()
2268 }
2269 pub(super) fn datadog_configuration_otlp_config_metrics_tag_cardinality() -> String {
2270 "low".to_string()
2271 }
2272 pub(super) fn datadog_configuration_otlp_config_metrics_histograms_mode() -> String {
2273 "distributions".to_string()
2274 }
2275 pub(super) fn datadog_configuration_otlp_config_metrics_summaries_mode() -> String {
2276 "gauges".to_string()
2277 }
2278 pub(super) fn datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode() -> String {
2279 "to_delta".to_string()
2280 }
2281 pub(super) fn datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value() -> String {
2282 "auto".to_string()
2283 }
2284 pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint() -> String {
2285 "localhost:4317".to_string()
2286 }
2287 pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_transport() -> String {
2288 "tcp".to_string()
2289 }
2290 pub(super) fn datadog_configuration_otlp_config_receiver_protocols_http_endpoint() -> String {
2291 "localhost:4318".to_string()
2292 }
2293 pub(super) fn datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage() -> f64 {
2294 100_f64
2295 }
2296 pub(super) fn datadog_configuration_use_v3_api_series_enabled() -> String {
2297 "datadog_only".to_string()
2298 }
2299}
2300
2301mod duration_defaults {
2302 pub(super) fn expected_tags_duration() -> std::time::Duration {
2303 std::time::Duration::from_nanos(0)
2304 }
2305 pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age() -> std::time::Duration {
2306 std::time::Duration::from_nanos(0)
2307 }
2308 pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace() -> std::time::Duration {
2309 std::time::Duration::from_nanos(0)
2310 }
2311 pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time() -> std::time::Duration {
2312 std::time::Duration::from_nanos(0)
2313 }
2314 pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout() -> std::time::Duration {
2315 std::time::Duration::from_nanos(0)
2316 }
2317 pub(super) fn tls_handshake_timeout() -> std::time::Duration {
2318 std::time::Duration::from_nanos(10000000000)
2319 }
2320}