diff --git a/CHANGELOG.md b/CHANGELOG.md index 3588759..8b726b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,9 @@ - Align OpAMP data model guidance with upstream `opamp-spec`. - Add initial data model for agent identify with OpAMP. [#379](https://github.com/signalfx/gdi-specification/pull/379) +- Add support for remote config. + [#396](https://github.com/signalfx/gdi-specification/pull/396), + [#402](https://github.com/signalfx/gdi-specification/pull/402) ## [1.9.0] - 2026-04-07 diff --git a/specification/configuration.md b/specification/configuration.md index e3cfc32..9c948f9 100644 --- a/specification/configuration.md +++ b/specification/configuration.md @@ -183,11 +183,12 @@ instance using the following environment variables: [`access_token_passthrough`](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/signalfxreceiver#configuration)). This environment variable MUST work for `otlp` and `jaeger-thrift-splunk` exporters. -- [2]: The instrumentation library SHOULD NOT allow changing the setting at - runtime, and the initial setting SHOULD be used for the entire lifespan of - the application run. An instrumentation library whose profiling capability is - deactivated MUST NOT introduce additional profiling-based overhead. It also - MUST NOT emit profiling-based data. +- [2]: The instrumentation library uses this setting as the initial profiling + state. When OpAMP remote configuration is enabled and accepted, remote + configuration takes precedence over this setting for the current process. + An instrumentation library whose profiling capability is deactivated MUST NOT + introduce additional profiling-based overhead. It also MUST NOT emit + profiling-based data. - [3]: By default, instrumentation libraries are configured to send to a local collector (see `OTEL_TRACES_EXPORTER` below). If `SPLUNK_REALM` is set to anything besides `none` then the `OTEL_EXPORTER_*_ENDPOINT` is set to an diff --git a/specification/opamp_datamodel.md b/specification/opamp_datamodel.md index 4ac458b..0175985 100644 --- a/specification/opamp_datamodel.md +++ b/specification/opamp_datamodel.md @@ -295,6 +295,13 @@ content-type is `application/yaml`. Agents MAY accept payloads from other `AgentRemoteConfig.AgentConfigMap` keys not defined in this specification. +Remote configuration takes precedence over startup configuration for the +profiling settings represented by this remote configuration schema. Startup +configuration determines the initial profiling state until the agent accepts a +remote configuration. After that, the accepted remote configuration is the +authoritative source for whether profilers are running and for the profiler +settings it contains. + ### Data Format When agents receive a remote configuration with the key `splunk.remote.config` and @@ -307,21 +314,26 @@ distribution: always_on: cpu_profiler: sampling_interval: 1001 + memory_profiler: ``` Agents SHOULD be relaxed in parsing and SHOULD ignore all other values. -* When `cpu_profiler` is present, it indicates that the CPU profiler should be started +* When `cpu_profiler` is present, it indicates that the CPU profiler SHOULD be started if it is not currently running. -* When `cpu_profiler` is omitted, it indicates that the CPU profiler should be stopped +* When `cpu_profiler` is omitted, it indicates that the CPU profiler SHOULD be stopped if it is currently running. -* When `sampling_interval` is present, it indicates how often the profiler should +* When `sampling_interval` is present, it indicates how often the profiler SHOULD sample. +* When `memory_profiler` is present, it indicates that the memory profiler + SHOULD be started if it is not currently running. +* When `memory_profiler` is omitted, it indicates that the memory profiler + SHOULD be stopped if it is currently running. Agents SHOULD detect when remote configuration differs from current effective configuration and SHOULD alter its internal state to match remote config. In other words, remote config can cause the agent to start or stop the profiler or -modify the sampling interval. +modify profiler settings. When an agent is able to change state based on remote configuration values, subsequent effective configuration reports (as requested by the server)