The purpose of this application is to create a distributed trace using OpenTelemetry libraries for many different languages. So, the project essentially "chains" the services together in a single trace.
Currently, the languages are:
- Node.js
- Go
- Python
- Rust
- Java
- Dotnet (core)
- Ruby
The current call flow is
Node.js --> Go --> Python --> Rust --> Java --> Dotnet --> Ruby
Note: This project is configured to use the OpenTelemetry Collector to receive the spans - but the OTel Collector is not part of this repo!
- This local-monitoring-stack repo might help you to setup the OTel Collector, or check out the OTel Collector Getting Started docs.
- When running the first time, create docker network
monitoring
docker create network monitoring
-
Start OpenTelemetry Collector (and, optionally, whichever desired backend).
Note: As mentioned above, an OTel Collector is required but not included in this repo.
-
Build the services via
docker-compose
docker-compose build
- Start entire system via
docker-compose
docker-compose up -d
- Issue request to Node.js entrypoint
curl localhost:40000/node-start
- Look at your backend to see the traces, or have a look at the OTel Collector's logs
docker logs -f otel-collector
The entry point service (root span) of the trace.
Property | Value |
---|---|
Server | Express |
Instrumentation | Manual |
Default Port | 40000 |
More detailed README.
The second service of the trace.
Property | Value |
---|---|
Server | net/http |
Instrumentation | Manual |
Default Port | 41000 |
More detailed README.
The third service of the trace.
Property | Value |
---|---|
Server | flask |
Instrumentation | flask , requests Auto-Instrumentation |
Default Port | 42000 |
More detailed README.
The fourth service of the trace.
Property | Value |
---|---|
Server | hyper |
Instrumentation | Manual |
Default Port | 43000 |
More detailed README.
The fifth service of the trace.
Property | Value |
---|---|
Server | spring-boot |
Instrumentation | Manual |
Default Port | 44000 |
More detailed README.
The sixth service of the trace.
Property | Value |
---|---|
Server | AspNetCore.Hosting |
Instrumentation | OpenTelemetry.Extensions.Hosting , OpenTelemetry.Instrumentation.AspNetCore , OpenTelemetry.Instrumentation.Http Auto-Instrumentation |
Default Port | 45000 |
More detailed README.
The final service in the trace.
Property | Value |
---|---|
Server | Sinatra |
Instrumentation | all Auto-Instrumentation |
Default Port | 47000 |
More detailed README
- load generator
- finish individual service
READMEs