Skip to content

feat(java-vertx3): add JAX-RS/RESTEasy agent test app and exception capture docs#197

Open
prathamesh-sonpatki wants to merge 6 commits into
mainfrom
feat/resteasy-jaxrs-agent-test
Open

feat(java-vertx3): add JAX-RS/RESTEasy agent test app and exception capture docs#197
prathamesh-sonpatki wants to merge 6 commits into
mainfrom
feat/resteasy-jaxrs-agent-test

Conversation

@prathamesh-sonpatki
Copy link
Copy Markdown
Member

Summary

  • New example app (java-vertx3-rxjava/resteasy-agent-test): minimal Vert.x 3 + RESTEasy application for verifying zero-code JAX-RS instrumentation. Covers sync handlers, CompletionStage async handlers, and both sync/async exception paths. Wired to the zero-code agent via -javaagent; no manual TracedRouter or span code.
  • Docs (auto-instrumentation): add local E2E quickstart section, exception capture verification guide, and align error endpoint names with current MainVerticle.
  • Dockerfile: copy only compile-time JARs at build stage; agent JAR is runtime-only and passed via -javaagent at startup.

Test plan

  • java-vertx3-rxjava/resteasy-agent-test — build with local agent JARs in lib/, run with -javaagent:lib/vertx3-otel-agent.jar
  • GET /api/v1/contests/{id} — SERVER span with http.route, http.request.method, http.response.status_code
  • POST /api/v1/contests/{id}/submit — async CompletionStage handler produces SERVER span ending after async completion
  • POST /api/v1/contests/{id}/fail — async exception path: span status ERROR, exception event attached
  • POST /api/v1/contests/{id}/fail-sync — sync exception path: same
  • OTel collector debug output shows spans forwarded to OTLP endpoint

🤖 Generated with Claude Code

prathamesh-sonpatki and others added 6 commits May 16, 2026 12:08
Send Gemini CLI telemetry — traces, metrics, and logs — to Last9 via
OpenTelemetry. Two paths documented:

- Direct: GEMINI_TELEMETRY_* env vars set endpoint; standard
  OTEL_EXPORTER_OTLP_HEADERS provides auth (picked up by underlying
  OpenTelemetry JS SDK even though gemini-cli does not pass headers
  explicitly to its OTLP exporters).
- Local OTel Collector: useful for batching or fan-out.

Traces are opt-in via GEMINI_TELEMETRY_TRACES_ENABLED=true.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Demonstrates dual-pipeline filterprocessor approach for handling delta
and cumulative OTLP metrics across multi-replica collectors:

- nginx round-robin simulates K8s Service load-balancing
- filter/keep_delta + setshardkey + deltatocumulative per-pod isolation
- filter/keep_cumulative passthrough (SDK owns the counter)
- metrics/delta_broken pipeline shows undercount without setshardkey
- verify.sh queries local VictoriaMetrics for series count sanity check

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…usions

- Replace split mounts with single /:hostfs:ro,rslave to prevent ENOENT
  errors when hostmetrics prepends /hostfs to /proc/mounts paths
- Add exclude_fs_types for squashfs/snap/tmpfs/overlay to eliminate snap
  loopback noise without per-revision exclusion rules
- Fix exclude_mount_points patterns to match new single-mount layout
- Bump image to otel/opentelemetry-collector-contrib:0.144.0
- Update process: scraper comment to document TOCTOU limitation
- Add comment on when to use network_mode: host for prometheus scraping

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Demonstrates counter, histogram, and gauge using raw OTel Go SDK
with OTLP HTTP export. Includes guard against empty string attribute
values which are silently dropped per the Prometheus data model.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tion

Sample app (java-vertx3-rxjava/resteasy-agent-test) with four endpoints
that exercise the three FDE-196 bug fixes in vertx3-otel-agent:

  GET  /api/v1/contests/{id}?wsId=... — url.query attribute (Bug 3)
  POST /api/v1/contests/{id}/submit  — body capture + async CompletionStage (Bug 1+2)
  POST /api/v1/contests/{id}/fail    — async exception via writeException (Bug 2)
  POST /api/v1/contests/{id}/fail-sync — sync exception baseline

Uses RESTEasy 3.15.6 embedded with Undertow. Includes docker-compose +
OTel collector config. Build with: mvn package -DskipTests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…l E2E guide

- README: add local E2E script section, exception capture endpoints, and
  verification instructions for automatic stack traces on SERVER spans
- Dockerfile: copy only the two compile-time JARs (agent excluded — runtime only)
- docker-compose.yaml: minor cleanup
- MainVerticle: align error handler routes with updated docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant