Files
akvorado/console/data/docs/00-intro.md
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

109 lines
4.1 KiB
Markdown

# Introduction
*Akvorado*[^name] receives network flows, such as NetFlow/IPFIX and sFlow. It enriches
them with interface names (using SNMP), and geographic information (using
[IPinfo](https://ipinfo.io/) or MaxMind). Then, it exports them to ClickHouse via
Kafka. It also provides a web interface to explore the data.
[^name]: [Akvorado][] means "water wheel" in Esperanto.
[Akvorado]: https://eo.wikipedia.org/wiki/Akvorado
## Requirements
The recommended configuration is:
- 8 vCPUs (AMD64 or ARM64)
- 100 GB of disk
- 16 GB of RAM
## Quick start
The easiest way to get started is with
[Docker](https://docs.docker.com/get-docker) and [Docker Compose
V2](https://docs.docker.com/compose/install/). On Ubuntu, you can
install the `docker-compose-v2` package. On macOS, you can use the
`docker-compose` formula from Homebrew.
```console
# mkdir akvorado
# cd akvorado
# curl -sL https://github.com/akvorado/akvorado/releases/latest/download/docker-compose-quickstart.tar.gz | tar zxvf -
# docker compose up
```
Monitor the output of `docker compose ps` to see the status of the services.
Once the `akvorado-console` service is "healthy", the *Akvorado* web interface
should be running on port 8081. This can take a few minutes.
### Next steps
To connect your own network devices:
1. Customize the configuration in `akvorado.yaml`:
- Set SNMP communities for your devices in `outlet``metadata``provider``communities`
- Configure interface classification rules in `outlet``core``interface-classifiers`
1. Configure your routers/switches to send flows to *Akvorado*:
- NetFlow: port 2055
- IPFIX: port 4739
- sFlow: port 6343
1. Restart all containers:
- `docker compose down`
- `docker compose up -d`
> [!TIP]
> Interface classification is essential for the web interface to work properly.
> Without it, you won't see data in the dashboard widgets or visualization tab.
> See the [configuration guide](02-configuration.md#classification) for details.
### Need help?
- Check the [installation guide](01-install.md) for other deployment options
- Read the [configuration guide](02-configuration.md) for detailed setup instructions
- Review the [operations guide](04-operations.md) for router configuration examples
- Check the [troubleshooting guide](05-troubleshooting.md) if you run into an issue
You can see the full configuration (with default values) with:
`docker compose exec akvorado-orchestrator akvorado orchestrator
--check --dump /etc/akvorado/akvorado.yaml`.
> [!IMPORTANT]
> Please, do not open an issue or start a discussion unless you have read the
> various chapters of the documentation, notably the [troubleshooting
> guide](05-troubleshooting.md).
## Big picture
![General design](design.svg)
*Akvorado* is split into four components:
- The **inlet service** receives flows from exporters and sends them to Kafka
without parsing them.
- The **outlet service** takes flows from Kafka, parses them, and enriches them
with metadata. It uses SNMP to poll each exporter to get the *system name*,
*interface names*, *descriptions* and *speeds*. It applies rules to add
attributes to exporters. Interface rules add a *boundary* (external or
internal), a *network provider* and a *connectivity type* (PNI, IX, transit)
to each interface. Optionally, it may also receive BGP routes through the BMP
protocol to get the *AS number*, the *AS path*, and the communities. The
enriched flows are then exported to ClickHouse.
- The **orchestrator service** configures the other components. It creates the
*Kafka topic* and configures *ClickHouse* to receive the flows from the outlet
service. It provides configuration settings for the other services. It
provides additional data to ClickHouse, such as *GeoIP* data.
- The **console service** provides a web interface to view and analyze the flows
in the ClickHouse database.
## ClickHouse database schemas
Flows are stored in a ClickHouse database using a table `flows` (and a
few consolidated versions). The orchestrator service keeps the table
schema up-to-date. You can check the schema using `SHOW CREATE TABLE
flows`.