docker: do not enable eBPF by default :(

It requires Linux 5.8+ and this may trigger some support request for
little gain.
This commit is contained in:
Vincent Bernat
2025-10-29 04:00:22 +01:00
parent 3575e7994b
commit 65b6bedfc5
5 changed files with 9 additions and 29 deletions

8
.github/e2e.hurl vendored
View File

@@ -67,14 +67,6 @@ inlet_sentflows: jsonpath "$.data.result[0].value[1]" toInt
[Asserts]
variable "inlet_sentflows" >= {{ inlet_receivedflows }}
## Test inlet has eBPF running
GET http://127.0.0.1:8080/prometheus/api/v1/query
[Query]
query: akvorado_inlet_flow_input_udp_ebpf_loaded{job="akvorado-inlet"}
HTTP 200
[Asserts]
jsonpath "$.data.result[0].value[1]" toInt == 1
## Check outlet received flows from Kafka
GET http://127.0.0.1:8080/prometheus/api/v1/query
[Query]

View File

@@ -431,6 +431,7 @@ In the example above, there were 486525 drops. You can solve this in different w
is often near the value of `kafka``queue-size`, increase this value. This
setting has the most impact.
1. Increase the number of workers for the UDP input.
1. Enable the eBPF load balancer on Linux (check `docker/docker-compose-local.yml`).
1. Increase the value of the `net.core.rmem_max` sysctl (on the host) and
increase the `receive-buffer` setting for the input to the same value,
1. Increase the number of Kafka brokers.

View File

@@ -12,24 +12,13 @@ identified with a specific icon:
## Unreleased
This release brings per-packet load-balancing for incoming flows using eBPF on
Linux. Previously, exporters were tied to one worker, triggering packet loss
despite many workers available. This requires Linux 5.8+ (support of `CAP_BPF`).
For older kernels, add this to your `docker/docker-compose-local.yaml`:
```yaml
services:
akvorado-inlet:
cap_add: !override
- SYS_ADMIN # BPF capability is supported only from Linux 5.8
```
However, if you were experiencing packet loss in the inlet after upgrading to
2.0.x, increase the value of `inlet``kafka``queue-size`, which was set too
low. The new shipped value is 4096 instead of 32.
If you were experiencing packet loss in the inlet after upgrading to 2.0.x,
increase the value of `inlet``kafka``queue-size`, which was set too low. The
new shipped value is 4096 instead of 32.
- 💥 *config*: stop shipping demo exporter configurations from the orchestrator
- 💥 *inlet*: load-balance incoming UDP packets to all workers using eBPF on Linux
- *inlet*: load-balance incoming UDP packets to all workers using eBPF on
Linux (check `docker/docker-compose-local.yaml` to enable)
- 🩹 *inlet*: fix `akvorado_inlet_flow_input_udp_in_dropped_packets_total` metric
- 🩹 *console*: fix completion tooltip being wrapped with Firefox
- 🌱 *config*: increase `inlet``kafka``queue-size` to a more sensible value

View File

@@ -110,9 +110,9 @@
# - subnet: 2001:db8::/64
# gateway: 2001:db8::1
# If you are running an older kernel than Linux 5.8, you need to uncomment the following block:
# You can enable the eBPF load balancer to evenly spread load between workers:
# services:
# akvorado-inlet:
# cap_add: !override
# - SYS_ADMIN # BPF capability is supported only from Linux 5.8
# cap_add:
# - BPF # or SYS_ADMIN if you don't have Linux 5.8+

View File

@@ -155,8 +155,6 @@ services:
kafka:
condition: service_healthy
command: inlet http://akvorado-orchestrator:8080
cap_add:
- BPF
volumes:
- akvorado-run:/run/akvorado
labels: