elastic / elastic/apm-agent-java

Exclude agent plugins from instrumentation

Open
#2,757 1 comment 0 reactions 0 assignees View on GitHub
agent-java technical-debt
Dominant language
Java
Stars
594
Forks
338
Avg merge
1d 13h
Merged PRs (30d)
25

Description

This is a follow-up issue of #2724, where the issue was excluding the ECS logging instrumentation for the internal copy of ECS logging within the agent (thus loaded within agent/internal plugin classloader), but not the one that might be present in the application.

Classes that are loaded by the internal plugin classloader do not need to be instrumented and should thus be excluded from instrumentation.

See https://github.com/elastic/apm-agent-java/pull/2724#discussion_r951727013 for hints on why this might be required.

For external plugins, instrumentation is required in order to allow the agent to delegate to internal tracer.

Few ideas that needs to be explored:
- can we exclude by default for all instrumentations without having to rewrite all overrides of `co.elastic.apm.agent.sdk.ElasticApmInstrumentation#getClassLoaderMatcher`
- can we provide an opt-in exclusion from this exclusion, which could be for example used for external OpenTelemetry or for the rare cases that require agent self-instrumentation ?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.