Skip to content

Agent: apply controller's OpAMP-pushed RemoteConfig at runtime (real fix for #381 workaround) #413

Description

@zzylol

Goal

Make the OTel agent apply the controller's OpAMP-pushed RemoteConfig at runtime, so the agent's effective pipeline is the controller's per-query-tailored stage-split — not a static placeholder.

Why this is still open (re #381)

#381 documented the gap ("agent never APPLIES the OpAMP RemoteConfig push at runtime") and is closed — but it was closed via PR #350's workaround, not the real fix: the static bootstrap YAML (deploy/mvp-{singlenode,multinode}/configs/asap/asap-otel-agent-b6-asap-single-sketch.yaml) was hand-shaped to match the controller's full 5-sketch routing-connector output so the demo runs "even without OpAMP-push." The header still says so verbatim. So the agent runs a static, all-5-family config regardless of the query workload; the controller emits a correct typed plan that is never engaged.

Confirmed again in the 2026-05 #46 sweep: the agent ran the static all-5 routing-connector config; /api/v1/collector-config/agent shows the controller's tailored YAML, but the effective pipeline is the static one.

Why it matters

  • Criterion ② of MVP demo: test-first validation of ASAPCollector + ASAPQuery-backend #46 ("sketches + delta + stage placement determined by the controller based on the query workload") can't be truly demonstrated while the agent ignores the push — it's faked by the static file matching.
  • Resource efficiency: the static config instantiates all 5 sketch pipelines even when the workload needs one. Idle families cost ~0 CPU/state (the routing connector feeds each metric to exactly one family), but they are scaffolding + an over-broad config. A controller-tailored config would instantiate only the needed families.
  • It blocks controller-emitted changes (e.g. edge-aggregation plans, family selection, delta-transmission toggles) from taking runtime effect without a manual static-config edit.

Acceptance criteria

  • Agent receives an OpAMP RemoteConfig from the controller and reloads its collector pipeline to match it (OpAMP effective_config == the pushed config).
  • With a latency-only workload, the agent's effective pipeline contains only the planned family (e.g. ddsketch) — no KLL/HLL/countsketch/countmin pipelines instantiated — verifiable via processor metrics / effective-config preview.
  • Changing the controller's workload input changes the agent pipeline shape without editing the static bootstrap YAML.
  • The static placeholder is reduced to a minimal bootstrap (receivers + OpAMP extension), with families/processors supplied by the push.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions