From 1e24ed0321ee27977507def6eec4ffbbb1b72b05 Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Fri, 10 Jul 2026 09:19:28 +0200 Subject: [PATCH 1/5] remote config memory profiler --- specification/opamp_datamodel.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/specification/opamp_datamodel.md b/specification/opamp_datamodel.md index 4ac458b..b92f7d6 100644 --- a/specification/opamp_datamodel.md +++ b/specification/opamp_datamodel.md @@ -307,6 +307,8 @@ distribution: always_on: cpu_profiler: sampling_interval: 1001 + memory_profiler: + max_memory_samples: 201 ``` Agents SHOULD be relaxed in parsing and SHOULD ignore all other values. @@ -317,11 +319,17 @@ Agents SHOULD be relaxed in parsing and SHOULD ignore all other values. if it is currently running. * 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. +* When `max_memory_samples` is present, it indicates the maximum number of + memory samples collected per minute. 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) From 0e25cc833d1d511cbd64eb7001407d55e73053de Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Fri, 10 Jul 2026 11:38:37 +0200 Subject: [PATCH 2/5] remove max memory samples from spec --- specification/opamp_datamodel.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/specification/opamp_datamodel.md b/specification/opamp_datamodel.md index b92f7d6..aae2b0d 100644 --- a/specification/opamp_datamodel.md +++ b/specification/opamp_datamodel.md @@ -308,7 +308,6 @@ distribution: cpu_profiler: sampling_interval: 1001 memory_profiler: - max_memory_samples: 201 ``` Agents SHOULD be relaxed in parsing and SHOULD ignore all other values. @@ -323,8 +322,6 @@ Agents SHOULD be relaxed in parsing and SHOULD ignore all other values. 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. -* When `max_memory_samples` is present, it indicates the maximum number of - memory samples collected per minute. Agents SHOULD detect when remote configuration differs from current effective configuration and SHOULD alter its internal state to match remote config. In From a3a1942b4d6677d0ec1b9b2a76d06ecaa229c51c Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Fri, 17 Jul 2026 09:28:55 +0200 Subject: [PATCH 3/5] Uppercase SHOULD --- specification/opamp_datamodel.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/specification/opamp_datamodel.md b/specification/opamp_datamodel.md index aae2b0d..c7e4d3f 100644 --- a/specification/opamp_datamodel.md +++ b/specification/opamp_datamodel.md @@ -312,16 +312,16 @@ distribution: 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. + 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. + 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 From c88936d460be7b0a39591a4a6fcba9005a2a7083 Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Fri, 17 Jul 2026 09:31:38 +0200 Subject: [PATCH 4/5] Changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) 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 From 0bb55c4bd278686f684f603aa2dbb14d881e3f91 Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Mon, 20 Jul 2026 12:09:11 +0200 Subject: [PATCH 5/5] Clarify remote config precedence for profiling --- specification/configuration.md | 11 ++++++----- specification/opamp_datamodel.md | 7 +++++++ 2 files changed, 13 insertions(+), 5 deletions(-) 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 c7e4d3f..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