feat(dogstatsd): add support for observability_pipelines_worker.metrics / vector.metrics config keys#1655
Conversation
Binary Size Analysis (Agent Data Plane)Target: 0408d5c (baseline) vs 08eb7ac (comparison) diff
|
| Module | File Size | Symbols |
|---|---|---|
figment |
-61.74 KiB | 140 |
saluki_components::config_registry::datadog |
-43.20 KiB | 3 |
core |
+41.36 KiB | 1626 |
tonic |
-26.68 KiB | 64 |
prost |
+22.26 KiB | 108 |
otlp_protos::otlp_include::opentelemetry |
-19.45 KiB | 134 |
serde_with |
-18.52 KiB | 17 |
saluki_components::common::otlp |
+16.98 KiB | 29 |
serde |
+16.70 KiB | 21 |
http_body_util |
+15.46 KiB | 67 |
&mut serde_json |
+14.94 KiB | 21 |
saluki_components::transforms::dogstatsd_mapper |
+14.69 KiB | 8 |
serde_json |
-9.95 KiB | 39 |
axum |
+6.77 KiB | 29 |
saluki_context::hash::hash_context_with_seen |
+6.04 KiB | 3 |
[sections] |
-5.97 KiB | 8 |
hyper_util |
+5.75 KiB | 7 |
saluki_components::forwarders::otlp |
+5.53 KiB | 2 |
saluki_components::transforms::aggregate |
+5.43 KiB | 7 |
tracing |
+5.25 KiB | 17 |
Detailed Symbol Changes
FILE SIZE VM SIZE
-------------- --------------
+34e3% +43.5Ki +89e3% +43.5Ki core::ops::function::FnOnce::call_once::h734b67589c43d342
[NEW] +42.3Ki [NEW] +42.2Ki saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h066303133936e970
+723% +38.7Ki +741% +38.7Ki saluki_components::common::otlp::traces::translator::OtlpTracesTranslator::translate_spans::hca110ec4a6bf0390
[NEW] +12.3Ki [NEW] +12.1Ki _<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll::h78b34981b14d9408
[NEW] +10.8Ki [NEW] +10.7Ki saluki_components::sources::otlp::logs::transform::transform_log_record::hefcb9c2341939142
[NEW] +10.5Ki [NEW] +10.3Ki saluki_components::transforms::dogstatsd_mapper::_::_<impl serde_core::de::Deserialize for saluki_components::transforms::dogstatsd_mapper::MetricMappingConfig>::deserialize::h0e19828712c22b7b
[NEW] +8.28Ki [NEW] +8.12Ki _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_any::hb25ca949f7beffcd
[NEW] +8.06Ki [NEW] +7.90Ki _<&mut serde_json::de::Deserializer<R> as serde_core::de::Deserializer>::deserialize_struct::h296a1abeac8594b2
[NEW] +7.38Ki [NEW] +7.24Ki saluki_components::common::datadog::config::ForwarderConfiguration::build_routable_endpoints::h635d5bf8a146ce9e
[NEW] +6.97Ki [NEW] +6.73Ki saluki_components::transforms::dogstatsd_mapper::_::_<impl serde_core::de::Deserialize for saluki_components::transforms::dogstatsd_mapper::MappingProfileConfig>::deserialize::ha53eba20458470ca
[DEL] -6.95Ki [DEL] -6.78Ki _<serde_with::content::de::ContentDeserializer<E> as serde_core::de::Deserializer>::deserialize_struct::he154ba270aa5f917
[DEL] -7.82Ki [DEL] -7.68Ki _<serde_json::de::SeqAccess<R> as serde_core::de::SeqAccess>::next_element_seed::h7d6778903c1cffa1
[DEL] -8.42Ki [DEL] -8.25Ki _<serde_with::content::de::ContentDeserializer<E> as serde_core::de::Deserializer>::deserialize_struct::h72e6f84457605ff5
[DEL] -9.96Ki [DEL] -9.82Ki _<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll::h8a9881bd2979145e
-83.9% -10.3Ki -85.1% -10.3Ki _<saluki_components::sources::otlp::logs::translator::OtlpLogsTranslator as core::iter::traits::iterator::Iterator>::next::h3860cbd002a9a1e5
-69.3% -12.7Ki -69.7% -12.7Ki h2::proto::connection::DynConnection<B>::recv_frame::hfe9e3743004c5b69
[DEL] -19.2Ki [DEL] -19.0Ki _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_any::h6d4c5015194831f4
[DEL] -19.6Ki [DEL] -19.5Ki saluki_components::common::otlp::traces::transform::otel_span_to_dd_span::h886792eeb237ebc9
-0.3% -24.7Ki -0.3% -15.8Ki [7520 Others]
[DEL] -41.6Ki [DEL] -41.5Ki saluki_components::config_registry::datadog::SUPPORTED_ANNOTATIONS::_{{closure}}::h23d11e78cfbe0815
[DEL] -41.6Ki [DEL] -41.5Ki saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::hc63512f5c44efe66
-0.0% -14.0Ki -0.0% -5.27Ki TOTAL
Regression Detector (Agent Data Plane)Run ID: Optimization Goals: ✅ No significant changes detectedFine details of change detection per experiment (35)Experiments configured
Bounds Checks: ✅ Passed (5)
ExplanationA change is flagged as a regression when |Δ mean %| > 5.00% in the regressing direction for its optimization goal AND SMP marks the experiment as a regression ( |
observability_pipelines_worker.metrics / vector.metrics config keys
…ics` / `vector.metrics` config keys (#1655) ## Summary <!-- Please provide a brief summary about what this PR does. --> [Source](#1586) Adds ADP support for routing metric series and sketches to Observability Pipelines Worker using: - `observability_pipelines_worker.metrics.enabled` - `observability_pipelines_worker.metrics.url` legacy aliases: - `vector.metrics.enabled` - `vector.metrics.url` When enabled with a valid URL, metric payloads use OPW as the primary endpoint. Non-metric payloads continue using the normal Datadog primary endpoint. additional_endpoints continue receiving dual-shipped payloads. Changes: - Added OPW metrics config parsing with vector.metrics.* fallback. - Added per-path routing for series and sketches in the Datadog forwarder. - Kept dynamic API-key refresh attached to OPW-routed traffic. - Registered OPW metrics keys as supported config. - Kept OPW logs/traces keys explicitly unsupported. - Updated DogStatsD config docs and known config inventory. ## Change Type - [ ] Bug fix - [x] New feature - [ ] Non-functional (chore, refactoring, docs) - [ ] Performance ## How did you test this PR? <!-- Please how you tested these changes here --> Unit tests Manual Testing Started a local OPW listener: `nc -l 127.0.0.1 8080` Started the dev core Agent with ADP enabled: ``` DD_DATA_PLANE_FORCE_ENABLE=true \ DD_DATA_PLANE_ENABLED=true \ DD_DATA_PLANE_DOGSTATSD_ENABLED=true \ ./bin/agent/agent run -c dev/dist/datadog.yaml ``` Started ADP with OPW metrics routing enabled: ``` DD_API_KEY=<api_key> \ DD_CMD_PORT=5001 \ DD_DATA_PLANE_ENABLED=true \ DD_DATA_PLANE_DOGSTATSD_ENABLED=true \ DD_DOGSTATSD_PORT=9191 \ DD_DOGSTATSD_SOCKET=/tmp/adp-dogstatsd-dgram.sock \ DD_DOGSTATSD_STREAM_SOCKET=/tmp/adp-dogstatsd-stream.sock \ DD_DATA_PLANE_TELEMETRY_ENABLED=true \ DD_DATA_PLANE_TELEMETRY_LISTEN_ADDR=tcp://127.0.0.1:5102 \ DD_AUTH_TOKEN_FILE_PATH=/path/to/datadog-agent/dev/dist/auth_token \ DD_IPC_CERT_FILE_PATH=/path/to/datadog-agent/dev/dist/ipc_cert.pem \ DD_OBSERVABILITY_PIPELINES_WORKER_METRICS_ENABLED=true \ DD_OBSERVABILITY_PIPELINES_WORKER_METRICS_URL=http://127.0.0.1:8080 \ RUST_LOG=info \ target/devel/agent-data-plane run ``` Sent a DogStatsD metric to ADP: ``` echo "opw.manual.test:1|c" | nc -u -w0 127.0.0.1 9191 ``` Verified the OPW listener received the metrics request: ``` nc -l 127.0.0.1 8080 POST /api/v2/series HTTP/1.1 content-type: application/x-protobuf content-encoding: zstd dd-api-key: apikey dd-agent-version: 0.1.37 user-agent: agent-data-plane/0.1.37 host: 127.0.0.1:8080 transfer-encoding: chunked ``` ## References <!-- Please list any issues closed by this PR. --> <!-- - Closes: <issue link> --> <!-- Any other issues or PRs relevant to this PR? Feel free to list them here. --> Co-authored-by: andrew.qian <andrew.qian@datadoghq.com> 55cfc71
## Summary
OPW logs and traces routing is entirely out of scope for ADP, so the `observability_pipelines_worker.{logs,traces}.{enabled,url}` and `vector.{logs,traces}.{enabled,url}` keys have no effect on ADP behavior. Moving them from `unsupported.rs` (which surfaces `Incompatible` warnings to operators) to `ignored_keys.yaml` (silently ignored) avoids misleading noise for users who have these keys set.
These annotations were added in #1655 but I think this was a mistake.
## Test plan
- [ ] `cargo check --workspace` passes
- [ ] Verify config registry emits no warning for `observability_pipelines_worker.logs.enabled` when set
Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com>
## Summary
OPW logs and traces routing is entirely out of scope for ADP, so the `observability_pipelines_worker.{logs,traces}.{enabled,url}` and `vector.{logs,traces}.{enabled,url}` keys have no effect on ADP behavior. Moving them from `unsupported.rs` (which surfaces `Incompatible` warnings to operators) to `ignored_keys.yaml` (silently ignored) avoids misleading noise for users who have these keys set.
These annotations were added in #1655 but I think this was a mistake.
## Test plan
- [ ] `cargo check --workspace` passes
- [ ] Verify config registry emits no warning for `observability_pipelines_worker.logs.enabled` when set
Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com> 2af77b5
Summary
Source
Adds ADP support for routing metric series and sketches to Observability Pipelines Worker using:
observability_pipelines_worker.metrics.enabledobservability_pipelines_worker.metrics.urllegacy aliases:
vector.metrics.enabledvector.metrics.urlWhen enabled with a valid URL, metric payloads use OPW as the primary endpoint. Non-metric payloads continue using the normal Datadog primary endpoint. additional_endpoints continue receiving dual-shipped payloads.
Changes:
Change Type
How did you test this PR?
Unit tests
Manual Testing
Started a local OPW listener:
nc -l 127.0.0.1 8080Started the dev core Agent with ADP enabled:
Started ADP with OPW metrics routing enabled:
Sent a DogStatsD metric to ADP:
Verified the OPW listener received the metrics request:
References