Skip to content
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

jmx receiver: migration plan to use jmx-scraper #37469

Open
SylvainJuge opened this issue Jan 24, 2025 · 2 comments
Open

jmx receiver: migration plan to use jmx-scraper #37469

SylvainJuge opened this issue Jan 24, 2025 · 2 comments
Labels
receiver/jmx JMX Receiver

Comments

@SylvainJuge
Copy link

SylvainJuge commented Jan 24, 2025

Component(s)

receiver/jmx

Describe the issue you're reporting

This relates to #34825.

The path we took to implement this involved the creation of a new jmx-scraper artifact which is now published in maven central with version 1.46.0 of java contrib.

The next step is to allow users of jmxreceiver to start using it.

On the collector/jmxreceiver side @rogercoll is likely to handle most of the contributions, on the java side @SylvainJuge and @robsunday can help with testing and implementation details of jmx-scraper.

Steps

1) Provide the ability to use jmx-scraper with jmxreceiver

  • add an option to switch between jmx-gatherer (still default for now) and jmx-scraper (new)
  • modify the reference artifact hashes to include jmx-scraper + update automation that updates it
  • provide documentation and start defining a migration path for existing users

2) Add an option to allow using custom metric definitions yaml files:

This is a new feature that wasn't previously available with jmx-gatherer because it relied on groovy scripts which could lead to code execution.

This depends on aligning the config name + using multiple custom yaml files (in jmx-scraper):

Future steps: providing ability to select which variant of metrics definitions to use

Those are here mostly for documentation and to give a glimpse at future direction, they will need to be refined in the future.

UPDATE: I opened another issue to further discuss the possible options.

  • we currently have 3 metrics definitions: 2 in yaml with jmx-gatherer and jmx-insight (in java instrumentation), and one in groovy.
  • we need to define a single location to define them in yaml that will be shared between jmx-scraper and java instrumentation
  • we need to align the metrics definitions, which is expected to take a bit of time and effort and will introduce some breaking changes.
  • we need to provide the ability to switch the version of the yaml files that are being used, or at least to toggle between "current yaml definition in jmx-scraper that is mostly 1:1 to the jmx-gatherer groovy" and "common yaml definitions shared with instrumentation"
@SylvainJuge SylvainJuge added the needs triage New item requiring triage label Jan 24, 2025
@github-actions github-actions bot added the receiver/jmx JMX Receiver label Jan 24, 2025
Copy link
Contributor

Pinging code owners:

See Adding Labels via Comments if you do not have permissions to add labels yourself.

songy23 pushed a commit that referenced this issue Jan 24, 2025
Proposing to take the position of codeowner of the jmxreceiver with
@atoulme.

Next planned features
#37469
chengchuanpeng pushed a commit to chengchuanpeng/opentelemetry-collector-contrib that referenced this issue Jan 26, 2025
)

Proposing to take the position of codeowner of the jmxreceiver with
@atoulme.

Next planned features
open-telemetry#37469
@atoulme atoulme removed the needs triage New item requiring triage label Jan 28, 2025
@SylvainJuge
Copy link
Author

Status update:

  • YAML metrics definitions are being added to instrumentation, they will be inherited by jmx-scraper
  • jmx-scraper now provides the otel.jmx.target.source configuration option to select the priority between existing definitions (close to jmx-gatherer) and reusing the ones from instrumentation (for now there is none merged yet).

There will still be 3 places for JMX metrics definitions, but 2 of them are expected to be static:

  • JMX Gatherer groovy definitions, deprecated.
  • JMX Scraper legacy YAML definitions, very close to JMX Gatherer and provided for compatibility only
  • Java Instrumentation YAML definitions: the new reference for up-to-date and maintained metrics definitions, is automatically inherited by JMX scraper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
receiver/jmx JMX Receiver
Projects
None yet
Development

No branches or pull requests

2 participants