Skip to content

[APM] Agent configuration should support configs across all environment and/or services #44475

@sorenlouv

Description

@sorenlouv

The current Central Configuration solution in APM UI is very simple. To create a configuration the user is required to specify a service name and an environment.

Problem
If a user has many services and want to apply the same config to all of them they have to create a separate config for each service/environment combination. So if they have 50 services and 3 environments they have to create 150 configurations - even if all of them are identical. Updating is just as problematic since they have to go through all 150 configurations.

Proposal
Instead of requiring the user to select a specific service and environment, they should have an "All" option for service name and environment. Selecting "All" for services will simply create a configuration with no service specified, and this will be returned to APM Server when it queries for configs, regardless of the service name it provides.

Specificity
This opens up the possibility of several configs matching a request from APM Server, and we have to create logic for which config to return.

Example: Three configs exists:

  • Config 1: ServiceA + Production
  • Config 2: ServiceB + Production
  • Config 3: <All> + Production

If the APM Server requests configs for ServiceA + Production it will get Config 1.
If the APM Server requests configs for ServiceC + Production it will get Config 3.
If the APM Server requests configs for ServiceC + Development it will get nothing (404)

Breaking change
There is currently an option to select a "Not set" option for services without environment. I propose to remove the "Not set" option in light of the new "All" option. This will require the user user to either specify an environment or select "All".
It would simplify implementation if we don't have to retain backwards compatibility, and seeing agent configuration is still in beta I think this is acceptable.

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions