Commit Graph

173 Commits

Author SHA1 Message Date
Vincent Bernat
9982a0ae90 docker: update Traefik to 3.6.1
Fix #2095
2025-11-13 20:07:24 +01:00
Vincent Bernat
65b6bedfc5 docker: do not enable eBPF by default :(
It requires Linux 5.8+ and this may trigger some support request for
little gain.
2025-10-29 04:22:09 +01:00
Vincent Bernat
44381916ed docker: add snippet for older kernels to CAP_SYS_ADMIN for inlet
CAP_BPF was introduced in Linux 5.8.
2025-10-28 10:12:34 +01:00
Vincent Bernat
1fdf0c3f9f inlet/flow: use eBPF for per-packet load-balancing of incoming flows
By default, the 5-tuple is used to load balance flows. Exporters with
many flows are bound to a specific worker. Use eBPF to do a per-packet
load-balancing.

Currently, this is done randomly, but we will use a percpu counter in
the next commit. This will make the test easier too, maybe?

This should also enable graceful restart but not with the current
Docker Compose setup, we would need to use mode host or spawn a new one
in the same network namespace than the old one. This does not look like
very complex:

- spawn a new inlet in the same network namespace, but listening to a
  different HTTP port
- stop the previous inlet
- spawn a new inlet in the same network namespace
- stop the previous inlet

Alternatively, we could use SO_REUSEPORT for the HTTP socket too!
2025-10-28 09:45:51 +01:00
Vincent Bernat
3a6ba16a2e console/authentication: template logout and avatar URLs if not provided
Some checks failed
CI / 🤖 Check dependabot status (push) Has been cancelled
CI / 🐧 Test on Linux (${{ github.ref_type == 'tag' }}, misc) (push) Has been cancelled
CI / 🐧 Test on Linux (coverage) (push) Has been cancelled
CI / 🐧 Test on Linux (regular) (push) Has been cancelled
CI / ❄️ Build on Nix (push) Has been cancelled
CI / 🍏 Build and test on macOS (push) Has been cancelled
CI / 🧪 End-to-end testing (push) Has been cancelled
CI / 🔍 Upload code coverage (push) Has been cancelled
CI / 🔬 Test only Go (push) Has been cancelled
CI / 🔬 Test only JS (${{ needs.dependabot.outputs.package-ecosystem }}, 20) (push) Has been cancelled
CI / 🔬 Test only JS (${{ needs.dependabot.outputs.package-ecosystem }}, 22) (push) Has been cancelled
CI / 🔬 Test only JS (${{ needs.dependabot.outputs.package-ecosystem }}, 24) (push) Has been cancelled
CI / ⚖️ Check licenses (push) Has been cancelled
CI / 🐋 Build Docker images (push) Has been cancelled
CI / 🐋 Tag Docker images (push) Has been cancelled
CI / 🚀 Publish release (push) Has been cancelled
2025-10-19 15:54:07 +02:00
Vincent Bernat
d59562d348 docker: another example to enable SSO 2025-10-19 12:57:56 +02:00
Vincent Bernat
9c6856c88e docker: fix version scheme for Vector 2025-10-16 02:57:59 +02:00
Vincent Bernat
1a106303d9 docker: update vector 2025-10-14 06:58:24 +02:00
Vincent Bernat
afb9e0d60e docker: add an example on how to configure SSO
This is not really tested. The initial plan was to provide a demo with
Authelia, but the hard requirement on TLS makes it a bit difficult to
provide something that works out-of-the-box.

See also #1969, which is using a proxy instead.
2025-10-06 08:22:58 +02:00
Vincent Bernat
65de0b16f3 config: stop shipping demo exporter configurations from orchestrator
This pollutes the configuration. We can just ask the demo exporters to
read directly their configuration files.
2025-10-05 10:13:37 +02:00
Vincent Bernat
d5b0f99fb3 docker: upgrade some test images 2025-09-20 08:59:37 +02:00
Vincent Bernat
9acdb537e7 docker: upgrade Loki 2025-09-20 08:40:53 +02:00
Vincent Bernat
82958eee8e docker: provide a snippet to unset default database configuration 2025-09-16 22:29:15 +02:00
Vincent Bernat
5fedf43ee2 docker: remove copying mime.types in final container
It's present in distroless since more than a month.
2025-09-14 20:28:16 +02:00
Vincent Bernat
b920a369ed docker: rename console-auth-headers middleware to console-auth
The idea is that we could replace it with an authenticating
middleware (like OAuth2 Proxy).
2025-09-14 14:43:52 +02:00
Vincent Bernat
3807e2ac1e docker: update Kafka and Loki 2025-09-06 21:33:58 +02:00
Vincent Bernat
fa9904af8c docker: fix metric collection for loki and demo exporters 2025-09-06 19:50:06 +02:00
Vincent Bernat
d3cffe290d docker: fix healthcheck for vector 2025-09-06 19:50:06 +02:00
Vincent Bernat
ba96f130a8 docker: fix vector configuration for Grafana logs 2025-09-06 19:50:06 +02:00
Vincent Bernat
529a8f69be docker: use profiles to optionally enable Prometheus, Loki and Grafana
This is used for demo, it makes sense to also do that for the other
components. This helps test one of the component temporarily, for
example during the e2e tests.
2025-09-06 19:50:06 +02:00
Vincent Bernat
ec9380289e docker: fix broken /metrics endpoint for inlet
Add some tests in e2e.
2025-09-03 08:06:46 +02:00
Vincent Bernat
b1d6382585 common/embed: replace all go:embed use by an embedded archive
Some of the files were quite big:

- asns.csv ~ 3 MB
- index.js ~ 1.5 MB
- *.svg ~ 2 MB

Use a ZIP archive to put them all and embed it. This reduce the binary
size from 89 MB to 82 MB. 🤯

This also pulls some code modernization (use of http.ServeFileFS).
2025-09-03 00:00:05 +02:00
Vincent Bernat
d102e5f20e docker: delete unused JMX-related files
We don't use JMX anymore to monitor Kafka.
2025-09-02 23:38:27 +02:00
Vincent Bernat
bee9a5de67 docker: enable HTTP compression for Traefik
Also disable healthcheck. It triggers spurious errors (which eventually
get fixed).
2025-09-02 19:47:02 +02:00
Vincent Bernat
871fc59814 docs: make it even easier to hack on the console
We add a parameter to disable the healthcheck, making the console
available quickly.
2025-08-31 15:59:41 +02:00
Vincent Bernat
e41bae008b docs: make it a bit simpler to hack Akvorado
Add ability to enable the demo flows just with a profile instead of
modifying .env. Add more instructions on how to use Docker Compose and
how to hack on the console.
2025-08-31 15:46:14 +02:00
Vincent Bernat
378c1f5e0a docker: add logs for ClickHouse 2025-08-31 10:14:16 +02:00
Vincent Bernat
413f923dcc docker: update ClickHouse to 25.8 2025-08-30 23:46:17 +02:00
Vincent Bernat
d8e5a27364 docker: make Prometheus keep metrics 1 month 2025-08-30 22:54:26 +02:00
Vincent Bernat
14aa8ff3cc docker: make logs in Loki expire 2025-08-30 22:51:32 +02:00
Vincent Bernat
94fb1c6483 build: accept building with a not up-to-date toolchain
While I was relunctant to let Go download the right toolchain if we
didn't have one, this makes everything simpler. The Go version is now
fully controlled by `go.mod`. It also a nice for people wanting to build
on older distributions.

For Nix, GOTOOLCHAIN is set to local, so we rely on `go_latest` being
up-to-date enough. But they are usually quite fast to update, so it
should be OK.
2025-08-30 19:14:59 +02:00
Vincent Bernat
1ce435efde console/frontend: add a link to GitHub on the documentation page
This is only when branding is explicitely enabled. Now, that
akvorado.net does not redirect to GitHub anymore...
2025-08-30 17:03:23 +02:00
Vincent Bernat
17dad7088f docker: accept several domains for TLS_DOMAIN
And pass everything as SANs. Internally, the first one will be used for
the main domain.
2025-08-30 15:42:45 +02:00
Vincent Bernat
6ef6454f8c docker: add healthcheck for Traefik 2025-08-30 13:29:54 +02:00
Vincent Bernat
0339a87891 docker: fix missing quote in Vector tests 2025-08-30 10:02:17 +02:00
Vincent Bernat
84a6da3b8a docker: remove unused Alloy configuration for Loki 2025-08-30 07:25:57 +02:00
Vincent Bernat
91cd91f3f8 docker: factor a bit log level normalization 2025-08-30 07:25:57 +02:00
Vincent Bernat
95e2011d0c docker: replace Alloy by Vector for parsing logs
Alloy does not allow to turn the parsed metadata into actual metadata,
without enumerating each of them. Also, Vector is far more versatile.
And you can put unittests!

Also, parse more logs. Everything should be there, except ClickHouse.

Fix #1907
2025-08-30 00:07:26 +02:00
Vincent Bernat
45ab047c80 config: also listen to 4739 for IPFIX
This is the port defined in RFC 7011.
2025-08-29 08:12:30 +02:00
Vincent Bernat
a50c47a723 docker: send alloy and loki logs to Loki
Alloy is severely limited in this aspect. Maybe we should switch to
Vector instead.
2025-08-29 07:19:18 +02:00
Vincent Bernat
560113e3af docker: monitor Redis and Kafka using Alloy internal exporter 2025-08-28 11:52:45 +02:00
Vincent Bernat
c31e0616c3 docker: add Kafka and Redis logs to Loki 2025-08-28 06:54:29 +02:00
Vincent Bernat
45c684dc67 docker: add Loki to the observability stack
Currently, only Akvorado logs are parsed.
2025-08-28 06:54:13 +02:00
Vincent Bernat
39e9ba0777 docker: fix priority of console router to be the lowest 2025-08-26 23:35:05 +02:00
Vincent Bernat
8eb7cd63b1 docker: make Alloy configuration use only Docker labels
This is a bit like Traefik. We set metrics.port on each container we
want to scrape metrics from (and optionally metrics.path).

Semi-related, but we also rely on exposed port for Traefik and we override
it for all containers to be sure we select the right one. This is less
error prone as we need at least one exposed port and some containers may
or may not have one. Just always set an exposed port if we have metrics
or traefik rules.
2025-08-26 23:22:09 +02:00
Vincent Bernat
f81299ff28 docker: group services together in alloy configuration 2025-08-26 07:04:04 +02:00
Vincent Bernat
2b3c463729 docker: switch from prometheus to alloy for scrapping metrics
The idea is that alloy can also be used for more. For example, we could
introduce Loki (with a `docker-compose-loki.yml`) and it would use alloy
too. Alloy configuration needs to be split into several parts and both
`docker-compose-prometheus.yml` and `docker-compose-loki.yml` would
define it but with an additional volume for their specific part of the
configuration (using the `extend` mechanism).

However, we don't use the bundled Node Exporter, nor the bundled
cAdvisor. It is better to have individual components to avoid reduce the
amount of code with elevated privileges (both Node Exporter and cAdvisor
need specific privileges). Also, we keep Prometheus instead of switching
to the full Grafana stack with Mimir as it is a more common setup and
this is not a goal to provide something universally scalable.

Also, Prometheus is now behind the private endpoint as it is possible to
send metrics.
2025-08-26 06:28:56 +02:00
Vincent Bernat
fe42529bbc build: switch to Go 1.25
But Go 1.24 is still supported.
2025-08-24 09:12:21 +02:00
Vincent Bernat
d06c051ec8 docker: fix target in Dockerfile 2025-08-20 15:00:38 +02:00
Vincent Bernat
883e19922e build: add end-to-end testing 2025-08-20 13:41:54 +02:00