docs: add OpenTelemetry guide for Java workloads - #130
Merged
Bruno Borges (brunoborges) merged 1 commit intoSep 29, 2026
Merged
Conversation
Describe where to place the OpenTelemetry Java agent (node JDK image, application class-path layer, image volume), how to deliver -javaagent, the SDK/starter alternative, and patterns that do not work with the current handler (init containers, sidecars, OTel Operator injection). Also cover runtime self-attach (JEP 451), artifact env precedence and AppCDS interaction. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 421ddc4c-2c4e-48db-a4b8-e772991051a6
Bruno Borges (brunoborges)
deleted the
brunoborges-verify-opentelemetry-java
branch
September 29, 2026 20:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The docs only said that OpenTelemetry "works as usual" on Brewlet. That hides how different it is in practice: a Brewlet image is JAR-only (no Dockerfile to copy an agent into), and some common Kubernetes injection patterns fail in
runtimeClassName: brewletpods.This PR adds
docs/opentelemetry.md, a guide that explains where the OpenTelemetry Java agent can live and how-javaagentshould reach the JVM:temurin-otel) and managed by the platform team; or agent shipped in the application image as a class-path layer (/app/lib), owned by the application team.spring-boot-starter-opentelemetry); Kubernetes image volumes for raw Pods;hostPath(works, but discouraged).jvm.args.JAVA_TOOL_OPTIONSalso works; the guide covers its side effects and the informationalEnvOptionsOverlapcondition.opentelemetry-runtime-attach), which depends on the dynamic agent loading that JEP 451 is phasing out.-javaagentat startup is not affected.spec.env. The agent extends the boot class path, which limits CDS/AppCDS sharing to boot-loader classes.The page is linked from the site nav (Operate),
docs/README.mdanddocs/observability.md.Validation
debugexporter.service.namereached the Collector for the node JDK image, class-path layer (viajvm.argsand viaJAVA_TOOL_OPTIONS), Spring Boot starter, runtime attach, image volume andhostPath.-javaagentprints no warning; self-attach warns, and fails with-XX:-EnableDynamicAgentLoading.mkdocs build --strict -f site/mkdocs.ymlpasses, and all in-page anchors resolve.make site-contract-checkpasses.The page states that this validation was manual and is not part of the automated E2E suite.
Compatibility and operations
None. Documentation only; no code or behavior changes.
Checklist