To run the OpenTelemetry demo using Kieker, run the following steps:
- Start the kieker listener:
git clone -b GH-13-GetOERFromProto git@github.com:kieker-monitoring/kieker.git
cd kieker/
cd tools/otel-transformer
../../gradlew assemble
cd build/distributions
unzip otel-transformer-2.0.3-SNAPSHOT.zip
cd otel-transformer-2.0.3-SNAPSHOT/
bin/otel-transformer -lp 9000 -standard OPENTELEMETRY
(leave this process running, and stop via Ctrl + C after running the demo)
- Prepare the OpenTelemetry demo:
git clone https://github.com/open-telemetry/opentelemetry-demo.git - Edit the repo (go to
opentelemetry-demofirst):
- Edit
src/otel-collector/otelcol-config-extras.yml: Add (replacing $MYIP by your IP):
exporters:
otlp/example:
endpoint: http://$MYIP:9000
tls:
insecure: true
service:
pipelines:
traces:
exporters: [spanmetrics, otlp/example]
- Edit
docker-compose.yml: Add- _JAVA_OPTIONS=-Dotel.instrumentation.methods.include=oteldemo.AdService[main,getInstance,getAdsByCategory,getRandomAds,createAdsMap,start,stop,blockUntilShutdown];oteldemo.AdService.AdServiceImpl[getAds];oteldemo.problempattern.CPULoad[getInstance,execute,spawnLoadWorkers,stopWorkers]to the AdService
- Run the demo (in
opentelemetry-demo)
- Run
make start - Do anything you'd like to do with the interface
- Run
docker compose down -v
- Visualize the results within Kieker (replacing
$KIEKERPATHwith the path the listener showed you):
cd tools/trace-analysis
../../gradlew assemble
cd build/distributions
unzip trace-analysis-2.0.3-SNAPSHOT.zip
cd trace-analysis-2.0.3-SNAPSHOT/
mkdir graphs
bin/trace-analysis \
-i $KIEKERPATH \
-o graphs \
--plot-Deployment-Component-Dependency-Graph responseTimes-ms \
--plot-Deployment-Operation-Dependency-Graph responseTimes-ms \
--plot-Aggregated-Deployment-Call-Tree \
--plot-Aggregated-Assembly-Call-Tree
cd graphs
for file in *.dot; do dot -Tpng $file -o $file.png; done

Could you try
docker logs ad? There should be no errors here.And in the kieker process, it should contain stuff like
The university network should not interfere, because if your services can communicate among each other, it should also be possible to communicate between the containers and port 9000.