Spring
Spring Boot apps export OpenTelemetry over OTLP to the avuru gateway. The eBPF
sensor already maps the service; this adds rich in-process spans (HTTP
routes, JDBC statements, custom business spans).
Quick start
# Flagship install — the chart is published to GHCR as an OCI artifact,
# eBPF auto-discovers your services. No repo to add.
helm install avuruobs oci://ghcr.io/avuruvision/charts/avuruobs \
--version <X.Y.Z> -n avuruobs --create-namespace
# Point apps at the gateway (OTLP):
# http://avuruobs-gateway:4318 (HTTP)
# http://avuruobs-gateway:4317 (gRPC)
# Open the UI:
kubectl -n avuruobs port-forward svc/avuruobs-ui 8080:80
Add the OpenTelemetry Java agent (zero-code) and point it at the gateway:
java -javaagent:opentelemetry-javaagent.jar \
-Dotel.exporter.otlp.endpoint=http://avuruobs-gateway:4318 \
-Dotel.service.name=checkout \
-jar checkout.jar
Signals collected
| Signal | Status | Notes |
|---|---|---|
| Traces | ✅ Supported | HTTP, JDBC, custom spans |
| Metrics | ✅ Supported | JVM + HTTP server metrics |
| Logs | ⚠️ Partial | Via OTLP log appender |
| Profiling | ❌ No | Use the eBPF profiler instead |
Configuration
⚙️ Config builder
Interactive builder for schema integrations/spring is coming soon. For now, copy the YAML from the example below and edit it by hand.
otel.exporter.otlp.endpoint=http://avuruobs-gateway:4318
otel.exporter.otlp.protocol=http/protobuf
otel.service.name=checkout
otel.resource.attributes=deployment.environment=prod
Verification
# Drive a request, then look for the service in the avuru UI → Service Map.
curl -s http://localhost:8080/api/checkout >/dev/null
The checkout service should appear with in-process spans nested under the
eBPF-discovered trace.
Troubleshooting
- No spans? Confirm the agent endpoint and that the gateway is reachable from
the pod (
:4318). - Service name
unknown_service:java? Setotel.service.name. - Logs missing? The OTLP log appender is opt-in; wire it in
logback.xml.