Skip to main content

saluki_components/config_registry/datadog/
encoders.rs

1//! Annotations for shared Datadog encoder configuration keys.
2use crate::config_registry::{
3    generated::schema, structs, Pipeline, PipelineAffinity, SalukiAnnotation, Schema, SchemaEntry, SupportLevel,
4    ValueType,
5};
6
7static FLUSH_TIMEOUT_SECS_SCHEMA: SchemaEntry = SchemaEntry {
8    schema: Schema::Saluki,
9    yaml_path: "flush_timeout_secs",
10    env_vars: &[],
11    value_type: ValueType::Integer,
12    default: None,
13};
14
15static SERIALIZER_MAX_METRICS_PER_PAYLOAD_SCHEMA: SchemaEntry = SchemaEntry {
16    schema: Schema::Saluki,
17    yaml_path: "serializer_max_metrics_per_payload",
18    env_vars: &[],
19    value_type: ValueType::Integer,
20    default: None,
21};
22
23crate::declare_annotations! {
24    /// `serializer_compressor_kind`—compression algorithm for encoder request payloads.
25    SERIALIZER_COMPRESSOR_KIND = SalukiAnnotation {
26        schema: &schema::SERIALIZER_COMPRESSOR_KIND,
27        support_level: SupportLevel::Full,
28        additional_yaml_paths: &[],
29        env_var_override: None,
30        used_by: &[
31            structs::DATADOG_EVENTS_CONFIGURATION,
32            structs::DATADOG_LOGS_CONFIGURATION,
33            structs::DATADOG_METRICS_CONFIGURATION,
34            structs::DATADOG_SERVICE_CHECKS_CONFIGURATION,
35            structs::DATADOG_TRACE_CONFIGURATION,
36        ],
37        value_type_override: None,
38        test_json: None,
39        pipeline_affinity: PipelineAffinity::CrossCutting,
40    };
41
42    /// `serializer_zstd_compressor_level`—zstd compression level for encoder request payloads.
43    /// Schema declares Float; field is i32.
44    SERIALIZER_ZSTD_COMPRESSOR_LEVEL = SalukiAnnotation {
45        schema: &schema::SERIALIZER_ZSTD_COMPRESSOR_LEVEL,
46        support_level: SupportLevel::Full,
47        additional_yaml_paths: &[],
48        env_var_override: None,
49        used_by: &[
50            structs::DATADOG_EVENTS_CONFIGURATION,
51            structs::DATADOG_LOGS_CONFIGURATION,
52            structs::DATADOG_METRICS_CONFIGURATION,
53            structs::DATADOG_SERVICE_CHECKS_CONFIGURATION,
54            structs::DATADOG_TRACE_CONFIGURATION,
55        ],
56        value_type_override: Some(ValueType::Integer),
57        test_json: None,
58        pipeline_affinity: PipelineAffinity::CrossCutting,
59    };
60
61    /// `flush_timeout_secs`—how long to wait before force-flushing an in-flight payload. ADP-specific.
62    FLUSH_TIMEOUT_SECS = SalukiAnnotation {
63        schema: &FLUSH_TIMEOUT_SECS_SCHEMA,
64        support_level: SupportLevel::Full,
65        additional_yaml_paths: &[],
66        env_var_override: None,
67        used_by: &[
68            structs::DATADOG_APM_STATS_ENCODER_CONFIGURATION,
69            structs::DATADOG_METRICS_CONFIGURATION,
70            structs::DATADOG_TRACE_CONFIGURATION,
71        ],
72        value_type_override: None,
73        test_json: None,
74        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::Traces, Pipeline::DogStatsD]),
75    };
76
77    /// `serializer_max_metrics_per_payload`—max metrics per encoded request payload. ADP-specific.
78    SERIALIZER_MAX_METRICS_PER_PAYLOAD = SalukiAnnotation {
79        schema: &SERIALIZER_MAX_METRICS_PER_PAYLOAD_SCHEMA,
80        support_level: SupportLevel::Full,
81        additional_yaml_paths: &[],
82        env_var_override: None,
83        used_by: &[structs::DATADOG_METRICS_CONFIGURATION],
84        value_type_override: None,
85        test_json: None,
86        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD]),
87    };
88
89    /// `log_payloads`—debug-log decoded metric, event, and service check payload contents before encoding.
90    LOG_PAYLOADS = SalukiAnnotation {
91        schema: &schema::LOG_PAYLOADS,
92        support_level: SupportLevel::Full,
93        additional_yaml_paths: &[],
94        env_var_override: None,
95        used_by: &[
96            structs::DATADOG_EVENTS_CONFIGURATION,
97            structs::DATADOG_METRICS_CONFIGURATION,
98            structs::DATADOG_SERVICE_CHECKS_CONFIGURATION,
99        ],
100        value_type_override: None,
101        test_json: None,
102        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD, Pipeline::Traces]),
103    };
104
105    /// `serializer_max_payload_size`—max compressed generic payload size.
106    SERIALIZER_MAX_PAYLOAD_SIZE = SalukiAnnotation {
107        schema: &schema::SERIALIZER_MAX_PAYLOAD_SIZE,
108        support_level: SupportLevel::Full,
109        additional_yaml_paths: &[],
110        env_var_override: None,
111        used_by: &[
112            structs::DATADOG_EVENTS_CONFIGURATION,
113            structs::DATADOG_METRICS_CONFIGURATION,
114            structs::DATADOG_SERVICE_CHECKS_CONFIGURATION,
115        ],
116        value_type_override: Some(ValueType::Integer),
117        test_json: None,
118        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD]),
119    };
120
121    /// `serializer_max_uncompressed_payload_size`—max uncompressed generic payload size.
122    SERIALIZER_MAX_UNCOMPRESSED_PAYLOAD_SIZE = SalukiAnnotation {
123        schema: &schema::SERIALIZER_MAX_UNCOMPRESSED_PAYLOAD_SIZE,
124        support_level: SupportLevel::Full,
125        additional_yaml_paths: &[],
126        env_var_override: None,
127        used_by: &[
128            structs::DATADOG_EVENTS_CONFIGURATION,
129            structs::DATADOG_METRICS_CONFIGURATION,
130            structs::DATADOG_SERVICE_CHECKS_CONFIGURATION,
131        ],
132        value_type_override: Some(ValueType::Integer),
133        test_json: None,
134        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD]),
135    };
136
137    /// `serializer_max_series_payload_size`—max compressed V2 series payload size.
138    SERIALIZER_MAX_SERIES_PAYLOAD_SIZE = SalukiAnnotation {
139        schema: &schema::SERIALIZER_MAX_SERIES_PAYLOAD_SIZE,
140        support_level: SupportLevel::Full,
141        additional_yaml_paths: &[],
142        env_var_override: None,
143        used_by: &[structs::DATADOG_METRICS_CONFIGURATION],
144        value_type_override: Some(ValueType::Integer),
145        test_json: None,
146        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD]),
147    };
148
149    /// `serializer_max_series_uncompressed_payload_size`—max uncompressed V2 series payload size.
150    SERIALIZER_MAX_SERIES_UNCOMPRESSED_PAYLOAD_SIZE = SalukiAnnotation {
151        schema: &schema::SERIALIZER_MAX_SERIES_UNCOMPRESSED_PAYLOAD_SIZE,
152        support_level: SupportLevel::Full,
153        additional_yaml_paths: &[],
154        env_var_override: None,
155        used_by: &[structs::DATADOG_METRICS_CONFIGURATION],
156        value_type_override: Some(ValueType::Integer),
157        test_json: None,
158        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD]),
159    };
160
161    /// `use_v2_api.series`—when `false`, send series metrics to the legacy V1 JSON intake at `/api/v1/series`.
162    USE_V2_API_SERIES = SalukiAnnotation {
163        schema: &schema::USE_V2_API_SERIES,
164        support_level: SupportLevel::Full,
165        additional_yaml_paths: &[],
166        env_var_override: None,
167        used_by: &[structs::DATADOG_METRICS_CONFIGURATION],
168        value_type_override: None,
169        test_json: None,
170        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD]),
171    };
172
173    /// `env`—the environment name attached to all emitted telemetry.
174    ENV = SalukiAnnotation {
175        schema: &schema::ENV,
176        support_level: SupportLevel::Full,
177        additional_yaml_paths: &[],
178        env_var_override: None,
179        used_by: &[
180            structs::DATADOG_APM_STATS_ENCODER_CONFIGURATION,
181            structs::DATADOG_TRACE_CONFIGURATION,
182        ],
183        value_type_override: None,
184        test_json: None,
185        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
186    };
187}