Skip to content

Latest commit

 

History

History
95 lines (62 loc) · 3.06 KB

File metadata and controls

95 lines (62 loc) · 3.06 KB

Spring Boot Example with Camel Observability Services

Introduction

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

Observability Stack

To run the complete observability stack with Jaeger and Prometheus:

docker-compose up

This will start:

The application, using agent, sends telemetry data to the OpenTelemetry Collector, which exports traces to Jaeger and metrics to Prometheus.

Run

You can run this example using:

mvn spring-boot:run

After the Spring Boot application is started, you can execute the following HTTP requests:

curl http://localhost:8080/api/random

The 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

Exposed Observability endpoints

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/metrics

even if in this example the metrics will be distributed using OpenTelemetry agent and not scraping the /observe/metrics endpoint

Testing Observability

  1. Generate some traffic:

for i in {1..10}; do curl http://localhost:8080/api/random; echo; sleep 1; done
  1. View traces in Jaeger:

  2. View metrics in Prometheus:

The Spring Boot application can be stopped pressing [CTRL] + [C] in the shell.

Help and contributions

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!