Skip to content

chore(config): migrate APM stats transform to typed config - #2265

Merged
webern merged 1 commit into
mainfrom
m/confra-astat
Aug 10, 2026
Merged

chore(config): migrate APM stats transform to typed config#2265
webern merged 1 commit into
mainfrom
m/confra-astat

Conversation

@webern

@webern webern commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Migrate the APM Stats transform to the resolved typed traces configuration. The transform now receives typed stats, peer-tag, environment, and hostname inputs, and the legacy APM configuration adapter is removed.

Change Type

  • Non-functional (chore, refactoring, docs)

How did you test this PR?

  • make fmt
  • make check-docs
  • make check-clippy
  • make check-all
  • APM Stats tests: 38 passed
  • cargo check -p saluki-components -p agent-data-plane --tests

References

@pr-commenter

pr-commenter Bot commented Aug 5, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 14fb28f · Comparison: 8db85b8 · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 41.39 MiB (baseline) vs 41.39 MiB (comparison)
Size Change: +1.22 KiB (+0.00%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
prost -45.75 KiB 88
h2 +31.94 KiB 112
hyper -25.02 KiB 59
otlp_protos::otlp_include::opentelemetry +22.59 KiB 72
anon.71247e6768bc3ff5210891ad39f5ad3e.573.llvm.16394933846966769920 -17.62 KiB 1
anon.d25442021e55207a1dc52a0783b8a331.602.llvm.11360328729134350799 +17.61 KiB 1
saluki_components::sources::otlp -16.19 KiB 34
tracing +15.28 KiB 26
saluki_components::common::datadog -14.50 KiB 95
serde_core +13.51 KiB 103
anon.d25442021e55207a1dc52a0783b8a331.713.llvm.11360328729134350799 +12.37 KiB 1
anon.71247e6768bc3ff5210891ad39f5ad3e.686.llvm.16394933846966769920 -12.37 KiB 1
&mut serde_json -11.55 KiB 34
rmp +10.59 KiB 16
agent_data_plane_config::_::_<impl serde_core -10.12 KiB 1
figment -9.76 KiB 83
anon.d25442021e55207a1dc52a0783b8a331.146.llvm.11360328729134350799 +9.71 KiB 1
anon.71247e6768bc3ff5210891ad39f5ad3e.144.llvm.16394933846966769920 -9.62 KiB 1
anon.d25442021e55207a1dc52a0783b8a331.599.llvm.11360328729134350799 +9.15 KiB 1
anon.71247e6768bc3ff5210891ad39f5ad3e.570.llvm.16394933846966769920 -9.06 KiB 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW] +17.6Ki  [NEW]     +76    anon.d25442021e55207a1dc52a0783b8a331.602.llvm.11360328729134350799
  +141% +16.7Ki  +143% +16.7Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h8152b7ae42bbdf3b
  +152% +15.0Ki  +155% +15.0Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::ha14640b20f74d1e4
  +124% +14.6Ki  +126% +14.6Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h620744619ca067ad
  +124% +14.6Ki  +126% +14.6Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::ha466ba9027a7db13
  [NEW] +12.4Ki  [NEW]     +81    anon.d25442021e55207a1dc52a0783b8a331.713.llvm.11360328729134350799
  +123% +12.4Ki  +125% +12.4Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h70e2afbf0bb450d6
  +127% +12.1Ki  +129% +12.1Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h1be15f59da19991b
  +163% +11.8Ki  +167% +11.8Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::hf32fb3e80e974af1
  +122% +10.9Ki  +124% +10.9Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h6abd0fc21cbbc508
  +132% +10.9Ki  +134% +10.9Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h2ad11a8a7bba86cd
  [NEW] +10.7Ki  [NEW] +10.6Ki    h2::proto::connection::Connection<T,P,B>::poll::hf55737dd7d0240e8
  [NEW] +10.4Ki  [NEW] +10.3Ki    h2::proto::connection::Connection<T,P,B>::poll::hde2b4edde49019aa
  [NEW] +10.4Ki  [NEW] +10.3Ki    h2::proto::connection::Connection<T,P,B>::poll::h8dffaa99d2c44419
 -93.8% -10.1Ki -95.5% -10.1Ki    agent_data_plane_config::_::_<impl serde_core::ser::Serialize for agent_data_plane_config::SalukiConfiguration>::serialize::ha4890af58c866150
  [DEL] -12.4Ki  [DEL]     -81    anon.71247e6768bc3ff5210891ad39f5ad3e.686.llvm.16394933846966769920
  [DEL] -14.9Ki  [DEL] -14.8Ki    h2::server::Connection<T,B>::poll_closed::h7604ccd75fdaaad4
  [DEL] -14.9Ki  [DEL] -14.8Ki    h2::server::Connection<T,B>::poll_closed::h02c231ef513ced37
  [DEL] -16.0Ki  [DEL] -15.9Ki    h2::server::Connection<T,B>::poll_closed::h019bce247788111f
  [DEL] -17.6Ki  [DEL]     -76    anon.71247e6768bc3ff5210891ad39f5ad3e.573.llvm.16394933846966769920
  -1.0% -93.4Ki  -1.0% -70.8Ki    [10811 Others]
  +0.0% +1.22Ki  +0.1% +23.9Ki    TOTAL

@pr-commenter

pr-commenter Bot commented Aug 5, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: 98434c58-142b-47ae-857b-2e71e0777a34
Baseline: 14fb28f7 · Comparison: 8db85b8f · diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment (5)

Experiments configured erratic: true are tagged (ignored) and skipped when determining which experiments regressed or improved. Experiments which are detected as erratic at runtime are tagged (erratic) to flag that the run's sample dispersion was high, but their regression / improvement signal still counts.

experiment goal Δ mean % links
quality_gates_rss_idle memory ⚪ +0.87 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ +0.79 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ +0.42 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ +0.41 metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory ⚪ -0.40 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 227 MiB ≤ 250 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 50.6 MiB ≤ 60 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 90.7 MiB ≤ 100 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 384 MiB ≤ 420 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 31.9 MiB ≤ 40 MiB metrics profiles logs
Explanation

A 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 (is_regression: true). Improvements use the matching criteria for the improving direction. Experiments configured erratic: true (tagged (ignored)) are skipped outright; experiments detected as erratic at runtime (tagged (erratic)) still count, since that flag describes sample dispersion rather than directional certainty. The Δ mean % cell is colored accordingly: 🟢 = improvement, 🔴 = regression, ⚪ = neutral. Reduction in CPU or memory is an improvement; reduction in ingress throughput is a regression.

@webern
webern force-pushed the m/confra-astat branch 2 times, most recently from 62ba99f to 68de52c Compare August 6, 2026 10:10
@webern
webern marked this pull request as ready for review August 6, 2026 10:19
@webern
webern requested a review from a team as a code owner August 6, 2026 10:19

@datadog-official datadog-official Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Datadog Autotest: PASS

More details

The migration preserves the APM Stats inputs: resolved Datadog defaults keep span-kind computation and peer-tag aggregation enabled, explicit false values propagate, and environment/hostname fallback behavior is equivalent. Runtime execution was unavailable because the sandbox could not fetch the uncached hyper-http-proxy dependency, so confidence is based on the diff and configuration translation paths.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Datadog Autotest · Commit 68de52c · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

@webern
webern force-pushed the m/confra-astat branch 2 times, most recently from 0c58809 to 7f36fef Compare August 6, 2026 12:31
@webern
webern force-pushed the m/confra-otran branch 2 times, most recently from d8f4844 to ef23127 Compare August 6, 2026 12:49
@webern
webern force-pushed the m/confra-astat branch 2 times, most recently from 2e72291 to 197bef2 Compare August 6, 2026 13:06
@webern webern changed the title chore(config): migrate APM stats transform to typed configuration chore(config): migrate APM stats transform to typed config Aug 7, 2026
@webern
webern force-pushed the m/confra-astat branch 2 times, most recently from ce847d7 to dead4ad Compare August 10, 2026 14:56

@lucastemb lucastemb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Definitely think it's much cleaner now 👍

Base automatically changed from m/confra-otran to main August 10, 2026 17:09

@datadog-official datadog-official Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Datadog Autotest: PASS

More details

The typed stats path preserves the legacy true defaults, peer-tag and environment values, and environment-provider hostname fallback. The apparent OTTL changes are byte-identical to the base branch and merge cleanly.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Datadog Autotest · Commit 5d63aca · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

@webern
webern merged commit c07a446 into main Aug 10, 2026
93 checks passed
@webern
webern deleted the m/confra-astat branch August 10, 2026 17:35
dd-octo-sts Bot pushed a commit that referenced this pull request Aug 10, 2026
## Summary

Migrate the APM Stats transform to the resolved typed traces
configuration. The transform now receives typed stats, peer-tag,
environment, and hostname inputs, and the legacy APM configuration
adapter is removed.

## Change Type
- [x] Non-functional (chore, refactoring, docs)

## How did you test this PR?

- `make fmt`
- `make check-docs`
- `make check-clippy`
- `make check-all`
- APM Stats tests: 38 passed
- `cargo check -p saluki-components -p agent-data-plane --tests`

## References

- Progresses #2169
- Progresses #2193 c07a446
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/components Sources, transforms, and destinations. transform/apm-stats APM Stats transform.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants