Skip to content

collector: pass cpu and textfile config through runtime#3665

Draft
nicolastakashi wants to merge 6 commits into
prometheus:masterfrom
nicolastakashi:embeddable-collector-cpu-textfile-config
Draft

collector: pass cpu and textfile config through runtime#3665
nicolastakashi wants to merge 6 commits into
prometheus:masterfrom
nicolastakashi:embeddable-collector-cpu-textfile-config

Conversation

@nicolastakashi
Copy link
Copy Markdown

@nicolastakashi nicolastakashi commented May 20, 2026

Summary

This continues the incremental refactor to make node_exporter easier to embed outside the standalone binary.

The broader goal is to support ongoing work to make Prometheus exporters embeddable inside the Prometheus OpenTelemetry Collector distribution as native receivers, without requiring each exporter to be rewritten as an OpenTelemetry component.

This PR builds on the earlier config, runtime, binary wiring, and runtime-state groundwork by moving a first slice of collector-specific configuration behind runtime-owned state.

Specifically, this PR:

  • snapshots shared collector path settings into runtime-owned config
  • snapshots cpu collector settings into runtime-owned config
  • snapshots textfile collector settings into runtime-owned config
  • configures the cpu collector from runtime state instead of reading package-global flags during collector setup and update
  • configures the textfile collector from runtime state instead of reading package-global flags during collector setup
  • adds tests covering runtime-local config snapshot behavior for both collectors

Why

The goal of this change is to start moving individual collectors off mutable package-global configuration and onto explicit runtime-owned inputs.

Before this change, the cpu and textfile collectors read their configuration directly from package-global CLI flag state. That made runtime behavior depend on mutable process-global values and limited how cleanly a runtime instance could be constructed and reused as an embeddable component.
After this change, collector.Runtime snapshots the relevant collector configuration once and applies it when constructing/configuring collectors. Derived filtered runtimes continue to use the base runtime's captured collector configuration instead of re-reading current global flag values.
This is intentionally a narrow first collector slice rather than a broad collector-wide rewrite. The intent of this PR is to establish and validate the pattern for moving collector-specific configuration behind runtime-owned state while preserving the current standalone binary behavior.

Stack

This PR is part of a stacked series and should be reviewed after the earlier config, runtime, binary wiring, and collector runtime-state groundwork PRs.

Those earlier PRs introduced reusable config and runtime layers and reduced shared runtime mutation. This PR starts applying that foundation to concrete collector configuration.

Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
@nicolastakashi nicolastakashi force-pushed the embeddable-collector-cpu-textfile-config branch from 4105392 to d75fe55 Compare May 20, 2026 10:19
@nicolastakashi
Copy link
Copy Markdown
Author

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant