Releases: cloudflare/ebpf_exporter
v2.5.1 / 2025-08-05
v2.5.0 / 2025-07-31
- Added a way to synchronize cgroup id with ebpf program via shared map (#531)
- Added a negative cache to regexp decoder (#527)
- Added support for regexp sumatches to be used as values (#433)
- Added a
cgroup-rstat-flushing
example (#457) - Added a
cephfs
example (#543) - Added
ebpf_exporter.config
tag to tracing spans (#434) - Fixed off-by-one in histogram buckets (#515)
- Added forward and backward lookup tables for cgroup observer (#444)
- Added cgroup observer to prevent infinite fanotify growth (#443)
- Removed includes of
bpf_helpers.h
ifbpf_core_read.h
was included (#440) - Fixed
golangci-lint
and enablederrorlint
(#505, #439) - Skipping
nil
links on detach to avoid panic (#437) - Added an ignore for "no such file or directory" in cgroup walker (#436, #438)
- Fixed markdown link checker in CI (#476, #506)
- Remove redundant check in
maps.bpf.h
(#530) - Fixed a panic due to
ErrSkipLabelSet
when reading map values (#479) - Enabled native arm64 builds and switched to matrix builds (#504, #511, #512)
- Fixed stale packages in CI (#538)
- Bumped dependencies to latest (#432, #447, #445, #450, #451, #452, #456, #458, #459, #461, #462, #466, #467, #469, #472, #474, #475, #477, #481, #482, #483, #484, #485, #486, #490, #494, #497, #498, #499, #500, #501, #507, #508, #509, #510, #513, #514, #516, #517, #518, #519, #520, #521, #524, #525, #528, #529, #532, #533, #534, #535, #536, #537, #539, #540, #541, #544, #545, #546, #547, #549, #550, #552, #556, #557, #558, #559, #560, #561)
v2.4.2 / 2024-05-30
- Removed debug sleep on shutdown (#398)
- Detach programs with a trace on exit (#389)
- Enabled truly static linkage with no nss (#385)
- Switched to dynamic linking for tests (#414)
- Added decoder error counter (#386)
- Added a release archive job to CI (#383)
- Added a markdown link linter (#413)
- Fixed USDT example on ubuntu 24.04 (#416)
- Re-enabled
unix-socket-backlog
example checking in CI (#417) - Switched to
pkg-config
to findlibbpf
dependencies (#415) - Bumped dependencies to latest (#384, #387, #391, #394, #395, #396, #399, #400, #401, #402, #403, #404, #405, #406, #407, #409, #410, #418, #419, #420, #421, #422, #424, #429, #430, #431)
v2.4.1 / 2024-04-18
- Disabled cache for tracing labels, which was causing a memory leak (#363)
- Enabled
pprof
support (#364) - Added
errno
decoder (#378) - Added
padding
to label decoder to skipstruct
holes (#376) - Added
ext4dist
example (#365) - Added
xfsdist
example (#368) - Fixed
biolatency
example (#373, #374, #375) - Rewrote
sock-trace
and simplified example with socket cookies (#381) - Split
cachestat
into pre and post kernel 5.16 (#372) - Fixed tracing screenshot path in the README (#379)
- Added a helper to extract tracing propagation args (#358)
- Added probing for
/usr/share/hwdata/pci.ids
for RedHat/Fedora/CentOS (#380) - Added
sd_notify
support when running under systemd (#382) - Bumped dependencies to latest (#359, #360, #361, #366, #367)
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
:


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:
v2.3.3 / 2024-02-06
- Partition decoder cache by name (#346)
v2.3.2 / 2024-02-05
v2.3.1 / 2024-02-05
v2.3.0 / 2023-12-26
Highlights:
- Added support for
fanotify
for a faster and more reliable cgroup monitoring (#244, #263, #264, #265, #266, #279, #288) - Added builds with built-in libbpf (now preferred) and system provided libbpf (#286)
- Started publishing Docker images on GitHub (#271, #290, #291, #292, #293, #294, #295)
New examples:
- Added
icmp-ip
example withinet_ip
decoder (#251) - Added
pci_vendor
,pci_device
,pci_class
,pci_subclass
decoders with examples (#255, #274) - Added
kstack
decoder with an example (#313) - Added
unix-socket-backlog
example (#284) - Added
softirq-latency
example (#300, #304) - Added
softirq-latency-net-rx
example that's an array based version ofsoftirq-latency
(#310) - Added
cfs-throttling
example (#311) - Added
tcp-retransmit
example (#318, #335)
Changes to examples:
- Added
jsonschema
for examples and cleaned up unused keys (#314) - Added
exp2zero
histogram type for cases when 0 is a significant outcome and addedtcp-syn-backlog-exp2zero
example (#280) - Fixed
uint
decoder for very large numbers (#296) - Removed copy-pasted division by 50 in
tcp-syn-backlog-exp2zero
example (#301) - Added
increment_exp2zero_histogram
helper macro for examples (#302) - Added
{increment_map,increment_{exp2,ex2zero}_histogram}_nosync
helper macros (#303, #305) - Fixed
tcp-syn-backlog
example with linear histogram (#306) - Added example rebuild if any of the headers change (#307)
- Simplified header includes in examples (#312)
- Fixed
shrinklat
example failure due to wrongly sized key (#319) - Suppressed BTF warning in the
shrinklat
example due to type mismatch (#327) - Fixed
biolatency
kernel version check after an upstream LTS backport (#309)
Build changes:
- Bumped Go to 1.20 and dependencies to latest (#249, #258, #281, #282, #283, #289, #317, #333, #334)
- Added
build-dynamic
andbuild-static
make goals (#241) - Expanded linting from
golangci-lint
and fixed uncovered issues (#256, #259, #269, #270) - Added configuration loading checks for existing configs to CI (#322, #326)
- Added export of built examples in CI jobs to attach them to releases (#308, #325)
- Suppressed errors when building outside of a git repo (#242)
- Added checks for
libbpf
version on startup to prevent runtime errors (#247) - Clarified
libbpf
instructions (#262) - Started running tests with
-race
if available (#267) - Added checks that produced binaries work in CI (#268)
- Switched from
dbhi/qus/action
to more officialdocker/setup-qemu-action
for CI builds (#272) - Split Docker image into multiple variants:
ebpf_exporter
andebpf_exporter_with_examples
(#273) - Optimized
libbpf
dependencies in CI (#275) - Added clang-format output diff to CI failures (#328)
Other changes:
- Styling and typo fixes (#252, #276, #329)
- Added map value size validation to startup config checks (#257, #321, #322)
- Added
linguist
ignores forvmlinux.h
files that were screwing language stats (#248) - Added
.dockerignore
forlibbpf
and built examples (#298) - Removed unused
perf_event
from config definitions (#315) - Added support for external BTF information (#320, #323)
- Added a uprobe benchmark (it's slow!) (#331)
v2.2.0 / 2023-07-25
The best release yet! Syscalls, per-cpu maps, running with no elevated capabilities at runtime — it has it all.
- Added capability dropping and documented necessary capabilities (#231)
- Added support for systemd socket activation (#237)
- Added tracepoints and empty probes benchmark (#236)
- Added support for reading percpu maps (#226)
- Added support for XDP attachment with an example (#215, thanks @huseyinsaatci)
- Added syscall decoder with an example (#214, thanks @huseyinsaatci)
- Added udp receive packet drops example (#213, #229)
- Added
kfree_skb
example (#233, #234) - Simplified oomkill example (#230)
- Replaced tracepoints with
tp_btf
in examples to remove the need fortracefs
(#227) - Reduced libbpf logging unless
--debug
is enabled (#216) - Allowed suppressing timestamps in logs with
--log.no-timestamps
(#239) - Added
clang-format
config to enforce formatting on C code (#222) - Formatted examples uniformly (#228)
- Added default build goals to Makefiles (#225)
- Updated ubuntu in CI from 20.04 to 22.04 (#223)
- Updated
vmlinux.h
from 5.15.0-25 to 6.3.0-7 and generation instructions (#224) - Updated dependencies to latest (#197, #202, #203, #204, #205, #206, #207, #210, #211, #212, #218, #238)