Basic compose file for testing OTEL tracing

Signed-off-by: Christopher Petito <47751006+krissetto@users.noreply.github.com>
This commit is contained in:
Christopher Petito 2024-04-19 09:50:47 +00:00
parent e829cca0ee
commit 4ef0d360bb
3 changed files with 76 additions and 0 deletions

27
hack/otel/compose.yaml Normal file
View file

@ -0,0 +1,27 @@
name: moby-otel
services:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- 16686:16686
aspire-dashboard:
image: mcr.microsoft.com/dotnet/nightly/aspire-dashboard
ports:
- 18888:18888
environment:
DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS: 'true'
otelcol:
image: otel/opentelemetry-collector:latest
restart: always
depends_on:
- jaeger
- aspire-dashboard
ports:
- 4318:4318 # default otlp http port
volumes:
# Mount the otelcol.yml config file
- ./otelcol.yaml:/etc/otelcol/config.yaml

21
hack/otel/otelcol.yaml Normal file
View file

@ -0,0 +1,21 @@
# Receive signals over gRPC and HTTP
# moby currently uses http
receivers:
otlp:
protocols:
grpc:
http:
exporters:
otlp/jaeger:
endpoint: jaeger:4317
tls::insecure: true
otlp/aspire:
endpoint: aspire-dashboard:18889
tls::insecure: true
service:
pipelines:
traces:
receivers: [otlp]
exporters: [otlp/jaeger, otlp/aspire]

28
hack/otel/usage.md Normal file
View file

@ -0,0 +1,28 @@
# Sample stack for testing OTEL functionality with moby
To easily test the OTEL functionality present in moby, you can spin up a small demo compose stack that includes:
- an OTEL collector container;
- a Jaeger container to visualize traces;
- an alternative Aspire Dashboard container to visualize traces;
The OTEL collector is configured to export Traces to both the Jaeger and Aspire containers.
The `hack/otel` directory contains the compose file with the services configured, along with a basic configuration file for the OTEL collector.
## How can I use it?
1) Export the env var used to override the OTLP endpoint:
`export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318` (if running in a devcontainer or in other ways, you might have to change how you pass this env var to the daemon);
2) Start the moby engine you want to get traces from (make sure it gets the env var declared above);
3) Start the otel compose stack by running `docker compose up -d` in the `hack/otel/` directory;
4) Make some calls to the engine using the Docker CLI to send some traces to the endpoint;
5) Browse Jaeger at `http://localhost:16686` or the Aspire Dashboard at `http://localhost:18888/traces`;
6) To see some traces from the engine, select `dockerd` in the top left dropdown
> **Note**: The precise steps may vary based on how you're working on the codebase (buiding a binary and executing natively, running/debugging in a devcontainer, etc... )
## Cleanup?
Simply run `docker compose down` in the `hack/otel/` directory.
You can also run `unset OTEL_EXPORTER_OTLP_ENDPOINT` to get rid of the OTLP env var from your environment