-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable Remote Config for all dynamic parameters. #213
Comments
Agents should generate or hard-code a JSON definition of which options are supported. The schema would be like this:
When the agents send up this information on startup the UI can be rendered generically, based on the options each agent supports. As the UI doesn't hard-code the options, it can display new ones without having to update Kibana. Open questions
Generated options from the Java agent Click to expand
@elastic/apm-agent-devs WDYT? Anything missing from here? To get a list of applicable options, you can do this:
|
WIP Java agent PR: elastic/apm-agent-java#1046 |
Great stuff! Just a couple of questions/comments
|
|
Regarding |
apm-server might need to add support for this (didn't look in detail), is there any target release? One thing for sure we need is to know the subset of settings that RUM is going to apply. |
Yes, I guess we need a separate endpoint for that. Agents would send their supported options on startup.
It's scheduled for 7.7
IIRC, RUM is excluded for now. |
@jalvz For RUM we don't have any plans to add more config options, so it should still be limited to what we support today (i.e. |
The 7.7 target was additional predefined settings. I think we should separate the agent provided configuration settings from that expansion and find the right target for that, likely post 7.7. |
@felixbarny I was actually thinking the agent would just send up one document, with
We can then use a terms aggregation on
which would return:
Optionally we add cc @elastic/apm-ui for anyone who has additional ideas/thoughts. |
Perhaps we should specify the types for each setting according to their mapping in ES?
Btw. |
Since this PR is scheduled for 7.7 I assume it refers to hardcoding the settings in the UI. Making it possible for agents to specify settings on the fly is 7.8+ and perhaps belongs in another issue. |
Both The agents are aligned on the format. |
Capture_body docs: https://www.elastic.co/guide/en/apm/agent/ruby/current/configuration.html#config-capture-body (the table is missing, weirdly?) Given that most options can be set via Because of this, I think you can type them however it would make the most sense to get the UI to work right. |
Would you prefer receiving |
I think the safe option is to always include the unit, but it's fine to always be the same scale |
The problem is that this doesn't specify whether something is a list or a scalar. If the UI knows something is a list, it might render the input differently. Also, as discussed, users should be able to enter time durations or byte values like As for when which part of that should be targeted for which version, I leave that up to @sqren @graphaelli and @nehaduggal.
Not specifying the unit is possible with some agents but only for backwards-compatibility reasons. So always specifying the unit is the way to go to avoid ambiguities.
I seem to recall something around problems with aggregations on arrays. But I might be wrong or it may not be a problem in this case. |
It's the plan to add all of the above-mentioned settings for 7.7 (still hardcoded in the ui). |
If the settings will be hardcoded in 7.7, we probably should remove or at least somehow mark the options that are specific to the Java agent. |
The java settings will only be displayed where applicable. Meaning: only if the user is creating a config for a java service or has selected the "All" option (in this case all settings will be displayed). |
btw. I agree: would be very nice if the above table noted which of the settings are java specific |
Is it possible to write directly into the configuration index or does the APM Server white-list certain options or expect them to be in a non-string data type? |
Allowing that^ (in case it's currently not possible) might be enough for 7.7 (wdyt @nehaduggal ?). Then we can direct all eng resources towards making the UI dynamic for 7.8/7.9 without the "throwaway" work to statically support some more java specific options. |
Yes. Previously there was a whitelist but now I've opened up the API on the Kibana-side so any string-based key/value pair is allowed: {
"settings": {
"my_custom_java_setting": "true"
}
} |
@jalvz Will this require changes on the APM Server side for the agents to be able to consume custom (non-whitelisted) options? |
From apm-server perspective it should be fine |
@lreuven I'm currently working on adding the new options to the UI, and have a few questions/favours to ask:
Thanks! |
Cool! How does the endpoint of that API look like? Is that a Kibana API or is it something to be written directly in the ES index? That's probably disallowed because it's a system index, right? |
Yes, it's a Kibana API and documented here. |
Is the expected behavior for the |
IIRC, in #92 (comment) we agreed to deprecate |
@lreuven Having |
Agree, I assummed this was a mistake but thanks for brining it up. From the UI (and APM Serve) perspective |
I've talked to agent and Kibana devs and we still have a mismatch what's in Kibana remote config for the agents vs what the agents support. Go
Java
RUM Node.js
In other words, only these should be included:
Python .NET Ruby |
@elastic/apm-agent-devs please prioritize manually testing central config via Kibana. As we are already post feature freeze, please do your tests by end of next week (April 3rd).
|
@felixbarny I've created a follow up issue for removing those options for the specific agents elastic/kibana#61821 |
Python support is merged. @beniwohli will do the manual testing this week. |
Tested with the Go agent, Also there's an issue with the unit selection for duration-type config: elastic/kibana#62110 |
I've done manual testing with the Ruby agent for all options except for |
@estolfo recording/enabled are not required for 7.7 so I think you can check off Ruby above. |
The |
Well, I think we're mostly there. I remember seeing a note about only Java being ready with |
Closing this out as it has outlived its purpose. Let's take any outstanding tasks to new issues. |
Description of the issue
Till version 7.6 , we have exposed 3 agents config options,
CAPTURE_BODY, IGNORE_URLS & TRANSACTION_MAX_SPANS see here.
From UI Impl perspective, those options were static in the UI and adding each new config requires UI dev.
We would like to move for the next phase and expose most of the config options from APM UI.
here is the list of configuration options which we plan to support ( a unified cross agent list).
################################
there are few phases to this issue :
1.Align config options in agents -
we still have few gaps between the agent as can be seen here.
2.Expose the config metadata of each agent via .yaml file
3.Send the the file to an end point
4.Consume & build the UI based on the file.
The text was updated successfully, but these errors were encountered: