Hypertrace distribution of OpenTelemetry Java agent.
This agent supports these frameworks and adds following capabilities:
- capture request and response headers
- capture request and response bodies
- server request headers/bodies evaluation in agent filter that can result in request blocking. The filter implementation will be pluggable.
List of supported frameworks with additional capabilities:
| Library/Framework | Versions |
|---|---|
| Apache HttpAsyncClient | 4.1+ |
| Apache HttpClient | 4.0+ |
| gRPC | 1.6+ |
| JAX-RS Client | 2.0+ |
| Micronaut (basic support via Netty) | 1.0+ |
| Netty | 4.0+ |
| OkHttp | 3.0+ |
| Servlet | 3.0+ |
| Spark Web Framework | 2.3+ |
| Spring Webflux | 5.0+ |
| Vert.x | 3.0+ (4 not supported yet) |
| Struts | 2.3+ |
Custom filter implementations can be added via FilterProvider SPI (Java service loader).
The providers can be disabled at startup via ht.filter.provider.<provider-class-name>.disabled=true.
make init-submodules buildThe final artifact is in javaagent/build/libs/hypertrace-agent-<version>-all.jar
Download the latest version.
HT_REPORTING_ENDPOINT=http://localhost:5442 java -javaagent:javaagent/build/libs/hypertrace-agent-<version>-all.jar -jar app.jarIf TPA is configured with TLS server
HT_REPORTING_ENDPOINT=https://localhost:5443 java -javaagent:javaagent/build/libs/hypertrace-agent-<version>-all.jar -jar app.jarBy default the agent uses Otlp exporter.
The configuration precedence order
- OpenTelemetry Agent's trace config file
OTEL_TRACE_CONFIG/otel.trace.config - OpenTelemetry system properties and env variables
- Hypertrace configuration with the following precedence order:
- system properties
- environment variables, TODO add link to agent-config repo
- configuration file, specified
HT_CONFIG_FILE=example-config.yaml
Instrumentations can be disabled by -Dotel.instrumentation.<instrumentation-name>.enabled=false.
The following instrumentation names disable only Hypertrace instrumentations, not core OpenTelemetry:
ht- all Hypertrace instrumentationsservlet-ht- Servlet, Spark Webokhttp-ht- Okhttpgrpc-ht- gRPC
The Hypertrace instrumentations use also the core OpenTelemetry instrumentation names so for example
-Dotel.instrumentation.servlet.enabled=false disables all servlet instrumentations including core
OpenTelemetry and Hypertrace.
Tests use docker via Testcontainers.org.
When running tests from IDE set SMOKETEST_JAVAAGENT_PATH env variable.
make testRead more in our 'Introducing Hypertrace Java Agent' blog post.