Open andykellr opened 2 weeks ago
Related issue in the collector: https://github.com/open-telemetry/opentelemetry-collector/issues/10570
We discussed in the SIG meeting that a generic map<string, string> metadata
could be added to the AgentDescription
message and the structure documented for OpenTelemetry-based agents.
We also discussed making a separate top level AgentMetadata
message with a separate agent capability ReportsMetadata
.
I think logically, you'd consider this part of the AgentDescription
. I'd personally advocate for adding it there if possible.
I think the primary advantage we discussed for the separate message was that it did not need to be sent if the OpAMP server does not use it. I'm not sure if that's a huge advantage or not though, given the AgentDescription
is generally static over the lifetime of an agent and status compression allows it to be omitted most of the time.
Regarding the structure of the field, how would you propose representing the components for the collector in a map[string]string?
Additionally, I feel like arbitrary metadata describing agent is already covered in the identifying/non-identifying attributes, how does this differ?
We discussed this again today at the SIG.
We primarily discussed adding this information to the ComponentHealth message, or to the AgentDescription.
I'll describe this in the context of OpenTelemetry, but similar issues will exist for other agents.
OpenTelemetry distributions may have different components included during the build. Before sending a configuration to an agent, the management server will want to know what components are available. Sending a configuration with unsupported components will cause an error. It may be desirable to avoid errors and only allow configurations to be applied to agents that are able to use them.
This is similar to agent capabilities but will need more than a bitmask to support arbitrary component names and versions.
This is similar to what is available in component health, but components not in use (but still supported) would not be reported.
This is similar to package statuses but components are not necessarily packages.
This could be reported with remote configuration but doesn't feel right.