Skip to content

Instrumentation Metadata System #13468

@jaydeluca

Description

@jaydeluca

This is a meta issue, see full Project board here

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 instrumentation 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:

  • Classification of the instrumentation
    • library - instrumentation for particular libraries
    • internal - instrumentation used internally within the agent
    • custom - instrumentation associated with supporting or generating custom instrumentation
  • Some description of what an instrumentation provides
    • Ability add descriptions via the metadata.yaml file
    • Descriptions added for all modules
  • 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

Sub-issues

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationenhancementNew feature or request

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions