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

Instrumentation Metadata System #13468

Open
5 of 17 tasks
jaydeluca opened this issue Mar 6, 2025 · 1 comment
Open
5 of 17 tasks

Instrumentation Metadata System #13468

jaydeluca opened this issue Mar 6, 2025 · 1 comment
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@jaydeluca
Copy link
Member

jaydeluca commented Mar 6, 2025

Is your feature request related to a problem? Please describe.

The java instrumentation project currently includes 250 individual instrumentations. There are 242 javaagent instrumentations - 15 of which currently have readmes, and 59 library instrumentations - 35 of which currently have readmes. These readmes can have varying depth in terms of their contents. Going through one by one and creating and updating documentation for each instrumenation manually would require considerable effort and toil.

Describe the solution you'd like

Having a system to manage and generate meta data about each instrumentation can unlock automated documentation as well as unlock other tooling capabilities. This information will give users much better insight into what they can expect when using the instrumentation, as well as more information around changes between releases.

We will establish a standard set of metadata we want to track for each instrumentation, and design a system that leverages automated gathering of information that is then augmented by some human maintained metadata file per instrumentation to generate an instrumentation list yaml file that can then be used to feed other workflows.

Metadata that would be useful to have available:

  • Some description of what an instrumentation provides
  • A breakdown of the library versions that are supported, broken down by javaagent vs library support
  • Minimum Java version supported (if not 8+)
  • Whether the instrumentation is enabled or disabled by default
  • The key to use to disable/enable
  • The configuration options and defaults
  • Scope information
    • name
    • schemaUrl
    • attributes
  • Semantic conventions
  • Span attributes
  • Metrics

There are various ways we can attempt to obtain some of this information, and for other pieces we will create a metadata.yaml file for each instrumentation, similar to the collector

Ideas

Things to explore:

Other notes:

Additional context

If we complete this issue, I believe it will also solve the following:


See latest instrument list output here

@jaydeluca jaydeluca added enhancement New feature or request needs triage New issue that requires triage labels Mar 6, 2025
@jaydeluca jaydeluca self-assigned this Mar 6, 2025
@jaydeluca jaydeluca added documentation Improvements or additions to documentation and removed needs triage New issue that requires triage labels Mar 6, 2025
@jaydeluca
Copy link
Member Author

jaydeluca commented Mar 8, 2025

Capturing input from @jackshirazi around scope information:

Having all of the fields from the InstrumentationScopeInfo object available to be able to re-construct it is useful because it is used as the key in a map to the tracer, and if you want to let users dynamically adjust the scope, that's how they would access it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant