Akvorado: a flow collector, enricher, and visualizer
Vincent Bernat
Earlier this year, we[1] released Akvorado[2], a flow collector, enricher, and visualizer. It receives network flows from your routers using either NetFlow v9[3], IPFIX[4], or sFlow[5]. Several pieces of information are added, like GeoIP and interface names. The flows are exported to Apache Kafka[6], a distributed queue, then stored inside ClickHouse[7], a column-oriented database. A web frontend is provided to run queries. A live version[8] is available for you to play with.

Several alternatives exist:
- Kentik[9], a popular cloud-based solution,
- ElastiFlow[10], a self-hosted proprietary solution, or
- your own assembly of open source solutions by picking a flow collector (pmacct[11], GoFlow2[12], or vFlow[13]), a distributed queue1 (Apache Kafka[6] or RabbitMQ[14]), a database (ClickHouse[7], Elasticsearch[15], or Apache Pinot[16]), and a web frontend (Grafana[17], Kibana[18], or Apache Superset[19]).
Akvorado differentiates itself from these solutions because:
- it is open source (licensed under the AGPLv3 license[20]), and
- it bundles flow collection, storage, and a web interface into a single “product.”
The proposed deployment solution relies on Docker Compose[21] to set up Akvorado, Zookeeper, Kafka, and ClickHouse. I hope it should be enough for anyone to get started quickly[22]. Akvorado is performant enough to handle 100 000 flows per second with 64 GB of RAM and 24 vCPU. With 2 TB of disk, you should expect to keep data for a few years.
I spent some time writing fairly complete documentation[23]. It seems redundant to repeat its content in this blog post. There is also a section about its internal design[24] if you are interested in how it is built. I also did a FRnOG presentation[25] earlier this year, and a ClickHouse meetup presentation[26], which focuses more on how ClickHouse is used. I plan to write more detailed articles on specific aspects of Akvorado. Stay tuned! 📻
- https://www.free.fr
- https://github.com/akvorado/akvorado
- https://www.rfc-editor.org/info/rfc3954
- https://www.rfc-editor.org/info/rfc7011
- https://www.rfc-editor.org/info/rfc3176
- https://kafka.apache.org/
- https://clickhouse.com/
- https://demo.akvorado.net
- https://www.kentik.com/
- https://www.elastiflow.com/
- http://pmacct.net/
- https://github.com/NetSampler/GoFlow2
- https://github.com/Edgio/vflow
- https://www.rabbitmq.com/
- https://www.elastic.co/elasticsearch/
- https://pinot.apache.org/
- https://grafana.com/
- https://www.elastic.co/kibana/
- https://superset.apache.org/
- https://www.gnu.org/licenses/agpl-3.0.en.html
- https://docs.docker.com/compose/
- https://demo.akvorado.net/docs/intro#quick-start
- https://demo.akvorado.net/docs
- https://demo.akvorado.net/docs/internals
- https://vincent.bernat.ch/en/blog/2022-frnog36-akvorado
- https://vincent.bernat.ch/en/blog/2022-clickhouse-meetup-akvorado