Skip to main content

saluki_components/config_registry/datadog/
otlp.rs

1//! Annotations for OTLP source, decoder, and relay configuration keys.
2use crate::config_registry::{
3    generated::schema, structs, Pipeline, PipelineAffinity, SalukiAnnotation, Schema, SchemaEntry, SupportLevel,
4    ValueType,
5};
6
7static OTLP_CONFIG_TRACES_ENABLE_TOP_LEVEL_BY_SPAN_KIND_SCHEMA: SchemaEntry = SchemaEntry {
8    schema: Schema::Saluki,
9    yaml_path: "otlp_config.traces.enable_otlp_compute_top_level_by_span_kind",
10    env_vars: &[],
11    value_type: ValueType::Bool,
12    default: Some("true"),
13};
14
15static OTLP_CONFIG_TRACES_IGNORE_MISSING_DATADOG_FIELDS_SCHEMA: SchemaEntry = SchemaEntry {
16    schema: Schema::Saluki,
17    yaml_path: "otlp_config.traces.ignore_missing_datadog_fields",
18    env_vars: &[],
19    value_type: ValueType::Bool,
20    default: None,
21};
22
23static OTLP_CONFIG_TRACES_STRING_INTERNER_SIZE_SCHEMA: SchemaEntry = SchemaEntry {
24    schema: Schema::Saluki,
25    yaml_path: "otlp_config.traces.string_interner_size",
26    env_vars: &[],
27    value_type: ValueType::Integer,
28    default: None,
29};
30
31static OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_TRANSPORT_SCHEMA: SchemaEntry = SchemaEntry {
32    schema: Schema::Saluki,
33    yaml_path: "otlp_config.receiver.protocols.http.transport",
34    env_vars: &[],
35    value_type: ValueType::String,
36    default: None,
37};
38
39static OTLP_ALLOW_CONTEXT_HEAP_ALLOCS_SCHEMA: SchemaEntry = SchemaEntry {
40    schema: Schema::Saluki,
41    yaml_path: "otlp_allow_context_heap_allocs",
42    env_vars: &[],
43    value_type: ValueType::Bool,
44    default: Some("true"),
45};
46
47static OTLP_CACHED_CONTEXTS_LIMIT_SCHEMA: SchemaEntry = SchemaEntry {
48    schema: Schema::Saluki,
49    yaml_path: "otlp_cached_contexts_limit",
50    env_vars: &[],
51    value_type: ValueType::Integer,
52    default: None,
53};
54
55static OTLP_CACHED_TAGSETS_LIMIT_SCHEMA: SchemaEntry = SchemaEntry {
56    schema: Schema::Saluki,
57    yaml_path: "otlp_cached_tagsets_limit",
58    env_vars: &[],
59    value_type: ValueType::Integer,
60    default: None,
61};
62
63static OTLP_STRING_INTERNER_SIZE_SCHEMA: SchemaEntry = SchemaEntry {
64    schema: Schema::Saluki,
65    yaml_path: "otlp_string_interner_size",
66    env_vars: &[],
67    value_type: ValueType::Integer,
68    default: None,
69};
70
71crate::declare_annotations! {
72    // ── Receiver ──────────────────────────────────────────────────────────────
73
74    /// `otlp_config.receiver.protocols.grpc.endpoint`
75    OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT = SalukiAnnotation {
76        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT,
77        support_level: SupportLevel::Full,
78        additional_yaml_paths: &[],
79        env_var_override: None,
80        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
81        value_type_override: None,
82        test_json: None,
83        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
84    };
85
86    /// `otlp_config.receiver.protocols.grpc.max_recv_msg_size_mib`
87    /// Schema says Float but the Rust field is u64.
88    OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_MAX_RECV_MSG_SIZE_MIB = SalukiAnnotation {
89        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_MAX_RECV_MSG_SIZE_MIB,
90        support_level: SupportLevel::Full,
91        additional_yaml_paths: &[],
92        env_var_override: None,
93        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
94        value_type_override: Some(ValueType::Integer),
95        test_json: None,
96        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
97    };
98
99    /// `otlp_config.receiver.protocols.grpc.transport`
100    OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_TRANSPORT = SalukiAnnotation {
101        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_TRANSPORT,
102        support_level: SupportLevel::Full,
103        additional_yaml_paths: &[],
104        env_var_override: None,
105        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
106        value_type_override: None,
107        test_json: None,
108        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
109    };
110
111    /// `otlp_config.receiver.protocols.http.endpoint`
112    OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT = SalukiAnnotation {
113        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT,
114        support_level: SupportLevel::Full,
115        additional_yaml_paths: &[],
116        env_var_override: None,
117        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
118        value_type_override: None,
119        test_json: None,
120        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
121    };
122
123    /// `otlp_config.receiver.protocols.http.transport`—ADP-specific, not in Agent schema.
124    OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_TRANSPORT = SalukiAnnotation {
125        schema: &OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_TRANSPORT_SCHEMA,
126        support_level: SupportLevel::Full,
127        additional_yaml_paths: &[],
128        env_var_override: None,
129        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
130        value_type_override: None,
131        test_json: None,
132        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
133    };
134
135    // ── Traces ────────────────────────────────────────────────────────────────
136
137    /// `otlp_config.traces.enabled`.
138    OTLP_CONFIG_TRACES_ENABLED = SalukiAnnotation {
139        schema: &schema::OTLP_CONFIG_TRACES_ENABLED,
140        support_level: SupportLevel::Full,
141        additional_yaml_paths: &[],
142        env_var_override: None,
143        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
144        value_type_override: None,
145        test_json: None,
146        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
147    };
148
149    /// `otlp_config.traces.ignore_missing_datadog_fields`—ADP-specific, default false.
150    OTLP_CONFIG_TRACES_IGNORE_MISSING_DATADOG_FIELDS = SalukiAnnotation {
151        schema: &OTLP_CONFIG_TRACES_IGNORE_MISSING_DATADOG_FIELDS_SCHEMA,
152        support_level: SupportLevel::Full,
153        additional_yaml_paths: &[],
154        env_var_override: None,
155        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
156        value_type_override: None,
157        test_json: None,
158        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
159    };
160
161    /// `otlp_config.traces.enable_otlp_compute_top_level_by_span_kind`.
162    OTLP_CONFIG_TRACES_ENABLE_TOP_LEVEL_BY_SPAN_KIND = SalukiAnnotation {
163        schema: &OTLP_CONFIG_TRACES_ENABLE_TOP_LEVEL_BY_SPAN_KIND_SCHEMA,
164        support_level: SupportLevel::Full,
165        additional_yaml_paths: &[],
166        env_var_override: None,
167        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
168        value_type_override: None,
169        test_json: None,
170        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
171    };
172
173    /// `otlp_config.traces.internal_port`—schema says Float but field is u16.
174    OTLP_CONFIG_TRACES_INTERNAL_PORT = SalukiAnnotation {
175        schema: &schema::OTLP_CONFIG_TRACES_INTERNAL_PORT,
176        support_level: SupportLevel::Full,
177        additional_yaml_paths: &[],
178        env_var_override: None,
179        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
180        value_type_override: Some(ValueType::Integer),
181        test_json: None,
182        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
183    };
184
185    /// `otlp_config.traces.probabilistic_sampler.sampling_percentage`—default 100.0.
186    OTLP_CONFIG_TRACES_PROBABILISTIC_SAMPLER_SAMPLING_PERCENTAGE = SalukiAnnotation {
187        schema: &schema::OTLP_CONFIG_TRACES_PROBABILISTIC_SAMPLER_SAMPLING_PERCENTAGE,
188        support_level: SupportLevel::Full,
189        additional_yaml_paths: &[],
190        env_var_override: None,
191        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
192        value_type_override: None,
193        test_json: None,
194        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
195    };
196
197    /// `otlp_config.traces.string_interner_size`—ADP-specific; default 512 KiB.
198    OTLP_CONFIG_TRACES_STRING_INTERNER_SIZE = SalukiAnnotation {
199        schema: &OTLP_CONFIG_TRACES_STRING_INTERNER_SIZE_SCHEMA,
200        support_level: SupportLevel::Full,
201        additional_yaml_paths: &[],
202        env_var_override: None,
203        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
204        value_type_override: None,
205        test_json: None,
206        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
207    };
208
209    // ── Logs / Metrics ────────────────────────────────────────────────────────
210
211    /// `otlp_config.logs.enabled`—schema default is false but saluki defaults to true; `test_json` injects false explicitly.
212    OTLP_CONFIG_LOGS_ENABLED = SalukiAnnotation {
213        schema: &schema::OTLP_CONFIG_LOGS_ENABLED,
214        support_level: SupportLevel::Full,
215        additional_yaml_paths: &[],
216        env_var_override: None,
217        used_by: &[structs::OTLP_CONFIGURATION],
218        value_type_override: None,
219        test_json: Some("false"),
220        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
221    };
222
223    /// `otlp_config.metrics.enabled`.
224    OTLP_CONFIG_METRICS_ENABLED = SalukiAnnotation {
225        schema: &schema::OTLP_CONFIG_METRICS_ENABLED,
226        support_level: SupportLevel::Full,
227        additional_yaml_paths: &[],
228        env_var_override: None,
229        used_by: &[structs::OTLP_CONFIGURATION],
230        value_type_override: None,
231        test_json: None,
232        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
233    };
234
235    // ── OtlpConfiguration source-specific ─────────────────────────────────────
236
237    /// `otlp_allow_context_heap_allocs`.
238    OTLP_ALLOW_CONTEXT_HEAP_ALLOCS = SalukiAnnotation {
239        schema: &OTLP_ALLOW_CONTEXT_HEAP_ALLOCS_SCHEMA,
240        support_level: SupportLevel::Full,
241        additional_yaml_paths: &[],
242        env_var_override: None,
243        used_by: &[structs::OTLP_CONFIGURATION],
244        value_type_override: None,
245        test_json: None,
246        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
247    };
248
249    /// `otlp_cached_contexts_limit`—ADP-specific, default 500,000.
250    OTLP_CACHED_CONTEXTS_LIMIT = SalukiAnnotation {
251        schema: &OTLP_CACHED_CONTEXTS_LIMIT_SCHEMA,
252        support_level: SupportLevel::Full,
253        additional_yaml_paths: &[],
254        env_var_override: None,
255        used_by: &[structs::OTLP_CONFIGURATION],
256        value_type_override: None,
257        test_json: None,
258        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
259    };
260
261    /// `otlp_cached_tagsets_limit`—ADP-specific, default 500,000.
262    OTLP_CACHED_TAGSETS_LIMIT = SalukiAnnotation {
263        schema: &OTLP_CACHED_TAGSETS_LIMIT_SCHEMA,
264        support_level: SupportLevel::Full,
265        additional_yaml_paths: &[],
266        env_var_override: None,
267        used_by: &[structs::OTLP_CONFIGURATION],
268        value_type_override: None,
269        test_json: None,
270        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
271    };
272
273    /// `otlp_string_interner_size`—ADP-specific; default 2 MiB.
274    OTLP_STRING_INTERNER_SIZE = SalukiAnnotation {
275        schema: &OTLP_STRING_INTERNER_SIZE_SCHEMA,
276        support_level: SupportLevel::Full,
277        additional_yaml_paths: &[],
278        env_var_override: None,
279        used_by: &[structs::OTLP_CONFIGURATION],
280        value_type_override: None,
281        test_json: None,
282        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Otlp]),
283    };
284}