v2.4.0 / 2024-02-27
This is a big release that comes with a major new feature: Distributed Tracing via OpenTelemetry (#297).
You can find the full documentation in ./tracing.
As a quick demo, you could run a demo locally with a provided Docker image:
- Run Jaeger
all-in-one
to provide an OpenTelemetry sink and UI:
docker run --rm -it --net host jaegertracing/all-in-one:1.54.0
-
Open Jaeger UI: http://localhost:16686/.
-
Build tracing demos from the root of the repo:
make tracing-demos
- Run
ebpf_exporter
with asock-trace
example from the root of the repo:
docker run --rm -it --privileged --net host -e OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 -v $(pwd)/tracing:/tracing ghcr.io/cloudflare/ebpf_exporter:v2.4.0 --config.dir=examples --config.names=sock-trace
- Run the demo:
./tracing/demos/sock/demo
-
Refresh the Jaeger UI and select
demo
as the service, click "Find Traces". -
Observe a trace that includes both userspace demo component produced spans and kernel spans produced with
ebpf_exporter
:
![image](https://private-user-images.githubusercontent.com/89186/308410497-37d9d4a9-6764-4b0c-8cfc-343f9546fde5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwMDMwMjMsIm5iZiI6MTcxOTAwMjcyMywicGF0aCI6Ii84OTE4Ni8zMDg0MTA0OTctMzdkOWQ0YTktNjc2NC00YjBjLThjZmMtMzQzZjk1NDZmZGU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIxVDIwNDUyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ5NjFlZGQzMTdjMmEzZDYyNjAwZmZiOGFkZjhiZTI5OWI3YzlmMmZiYzQwYzQxNmQ1YjAwNThhZGFlNWJkNWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.wy2955HGNCAgzPdtUEozm0z9vgs_crLaXymGyaOwMmE)
![image](https://private-user-images.githubusercontent.com/89186/308410548-3f342237-a36c-4c2e-92b4-0d6cdb2a43b6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwMDMwMjMsIm5iZiI6MTcxOTAwMjcyMywicGF0aCI6Ii84OTE4Ni8zMDg0MTA1NDgtM2YzNDIyMzctYTM2Yy00YzJlLTkyYjQtMGQ2Y2RiMmE0M2I2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIxVDIwNDUyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM5MGRjMjYxZDk0MmMxYmY3MmMwYmJkY2UzNDViNDUwYTc0OWI4ZWM3NzE1MmFkNTBmYzc2ZDk0OTVmMWMxMzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.4-Ma-3BA5cccuj-qn9h0FTQEg44U4s28LHd31IRdQy8)
We have more examples bundled, please see the docs.
Tracing support required us to take a few dependencies that needed a newer Go version, so we bumped the build requirement from go1.18 to go1.20.
Other changes: