This example illustrates how to use Spring Boot with Camel to demonstrate observability capabilities. It implements a REST service that generates random numbers with variable response times, showcasing distributed tracing, metrics collection, and monitoring through OpenTelemetry.
The project uses camel-observability-services-starter component for automatic instrumentation, camel-platform-http-starter for REST endpoints, and integrates with OpenTelemetry Java agent for comprehensive observability.
For additional information there is blog post
To run the complete observability stack with Jaeger and Prometheus:
docker-compose upThis will start:
-
OpenTelemetry Collector (ports 4317/4318) - collects traces and metrics
-
Jaeger UI (http://localhost:16686) - distributed tracing visualization
-
Prometheus (http://localhost:9090) - metrics collection and storage
The application, using agent, sends telemetry data to the OpenTelemetry Collector, which exports traces to Jaeger and metrics to Prometheus.
You can run this example using:
mvn spring-boot:runAfter the Spring Boot application is started, you can execute the following HTTP requests:
curl http://localhost:8080/api/randomThe command will call the random number generator endpoint. Each call will: - Generate a random number between 1-1000 - Simulate a random delay between 100-2000ms - Return the number as response body - Create traces and metrics for observability
You should see output similar to:
INFO 101511 --- [ task-1] generate-random-number : Generated random number: 742 with delay: 1250ms
The camel-observability-services-starter will configure the application and overrides the actuator setup so the health and metrics (in prometheus format) endpoints will be
http://localhost:9876/observe/health
http://localhost:9876/observe/metricseven if in this example the metrics will be distributed using OpenTelemetry agent and not scraping the /observe/metrics endpoint
-
Generate some traffic:
for i in {1..10}; do curl http://localhost:8080/api/random; echo; sleep 1; done
-
View traces in Jaeger:
-
Select service and search for traces
-
View metrics in Prometheus:
-
Query metrics like
camel_route_exchange_completed_total
The Spring Boot application can be stopped pressing [CTRL] + [C] in the shell.
If you hit any problem using Camel or have some feedback, then please let us know.
We also love contributors, so get involved :-)
The Camel riders!