Skip to content

Commit fc1028b

Browse files
committed
doc: documentation update for inlet/outlet separation
1 parent 41c899b commit fc1028b

File tree

8 files changed

+477
-440
lines changed

8 files changed

+477
-440
lines changed

console/data/docs/00-intro.md

Lines changed: 57 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Introduction
22

3-
*Akvorado*[^name] receives flows (currently Netflow/IPFIX and sFlow), enriches
4-
them with interface names (using SNMP), geo information (using
5-
[IPinfo](https://ipinfo.io/) or MaxMind), and exports them to Kafka, then
6-
ClickHouse. It also exposes a web interface to browse the result.
3+
*Akvorado*[^name] receives network flows (currently Netflow/IPFIX and sFlow), enriches
4+
them with interface names (using SNMP), geographic information (using
5+
[IPinfo](https://ipinfo.io/) or MaxMind), and exports them to ClickHouse via
6+
Kafka. It also provides a web interface to browse the results.
77

88
[^name]: [Akvorado][] means "water wheel" in Esperanto.
99

@@ -21,77 +21,76 @@ install the `docker-compose-v2` package. On macOS, you can use the
2121
# mkdir akvorado
2222
# cd akvorado
2323
# curl -sL https://github.com/akvorado/akvorado/releases/latest/download/docker-compose-quickstart.tar.gz | tar zxvf -
24-
# docker compose up -d
24+
# docker compose up
2525
```
2626

2727
Monitor the output of `docker compose ps`. Once `akvorado-console` service is
28-
"healthy", *Akvorado* web interface should be running on port 8081.
29-
30-
A few synthetic flows are generated in the background. To disable them:
31-
32-
1. Remove the reference for `docker-compose-demo.yml` from `.env`,
33-
2. Comment the last line of `akvorado.yaml`, and
34-
3. Run `docker compose up -d --remove-orphans`.
35-
36-
If you want to send you own flows, the inlet is accepting both NetFlow
37-
(port 2055) and sFlow (port 6343). You should also customize some
38-
settings in `akvorado.yaml`. They are described in details in the
39-
[“configuration” section](02-configuration.md) section of the
40-
documentation.
41-
42-
- `clickhouse``asns` to give names to your internal AS numbers (optional)
43-
- `clickhouse``networks` to attach attributes to your networks (optional)
44-
- `inlet``metadata``provider``communities` to set the communities to
45-
use for SNMP queries (mandatory)
46-
- `inlet``core``exporter-classifiers` to define rules to attach
47-
attributes to your exporters (optional)
48-
- `inlet``core``interface-classifiers` to define rules to attach
49-
attributes to your interfaces, including the "boundary" attribute
50-
which is used by default by the web interface (mandatory)
51-
52-
The last point is very important: without classification, the homepage widgets
53-
won't work and nothing will be displayed by default in the “Visualize” tab. The
54-
provided configuration expects your interface to be named `Transit: Cogent`,
55-
`PNI: Akamai`, `PPNI: Fastly`, or `IX: DECIX`.
28+
present "healthy", *Akvorado* web interface should be running on port 8081. It
29+
can take a few minutes. The demo includes synthetic flow data to help you
30+
explore the features.
31+
32+
### Next steps
33+
34+
To connect your own network devices:
35+
36+
1. **Disable demo data**:
37+
- Remove the reference to `docker-compose-demo.yml` from `.env`
38+
- Comment out the last line in `akvorado.yaml`
39+
40+
1. **Customize the configuration** in `akvorado.yaml`:
41+
- Set SNMP communities for your devices in `outlet``metadata``provider``communities`
42+
- Configure interface classification rules in `outlet``core``interface-classifiers`
43+
44+
1. **Configure your routers/switches** to send flows to *Akvorado*:
45+
- NetFlow/IPFIX: port 2055
46+
- sFlow: port 6343
47+
48+
1. **Restart all containers**
49+
- `docker compose down --volumes`
50+
- `docker compose up -d`
51+
52+
> [!IMPORTANT]
53+
> Interface classification is essential for the web interface to work properly.
54+
> Without it, you won't see data in the dashboard widgets or visualization tab.
55+
> See the [configuration guide](02-configuration.md) for details.
56+
57+
### Need help?
58+
59+
- Check the [installation guide](01-install.md) for other deployment options
60+
- Read the [configuration guide](02-configuration.md) for detailed setup instructions
61+
- Review the [operations guide](04-operations.md) for router configuration examples
62+
- Check the [troubleshooting guide](05-troubleshooting.md) if you run into an issue
5663

5764
You can get all the expanded configuration (with default values) with
5865
`docker compose exec akvorado-orchestrator akvorado orchestrator
5966
--check --dump /etc/akvorado/akvorado.yaml`.
6067

61-
Once you are ready, you can run everything in the background with
62-
`docker compose up -d`.
63-
6468
## Big picture
6569

6670
![General design](design.svg)
6771

68-
*Akvorado* is split into three components:
72+
*Akvorado* is split into four components:
6973

70-
- The **inlet service** receives flows from exporters. It poll each
71-
exporter using SNMP to get the *system name*, the *interface names*,
72-
*descriptions* and *speeds*. It applies rules to add attributes to
73-
exporters. Interface rules attach to each interface a *boundary*
74-
(external or internal), a *network provider* and a *connectivity
75-
type* (PNI, IX, transit). Optionally, it may also receive BGP routes
76-
through the BMP protocol to get the *AS number*, the *AS path*, and
77-
the communities. The flow is exported to *Kafka*, serialized using
78-
*Protobuf*.
74+
- The **inlet service** receives flows from exporters and forwards them unparsed
75+
to Kafka.
76+
77+
- The **outlet service** consumes flows from Kafka, parses them, and enriches
78+
them with metadata. It polls each exporter using SNMP to get the *system
79+
name*, the *interface names*, *descriptions* and *speeds*. It applies rules to
80+
add attributes to exporters. Interface rules attach to each interface a
81+
*boundary* (external or internal), a *network provider* and a *connectivity
82+
type* (PNI, IX, transit). Optionally, it may also receive BGP routes through
83+
the BMP protocol to get the *AS number*, the *AS path*, and the communities.
84+
The enriched flows are then exported to ClickHouse.
7985

8086
- The **orchestrator service** configures the internal and external components.
8187
It creates the *Kafka topic* and configures *ClickHouse* to receive the flows
82-
from Kafka. It exposes configuration settings for the other services to use.
83-
It provides to ClickHouse additional data, notably *GeoIP* data.
84-
85-
- The **console service** exposes a web interface to look and
86-
manipulate the flows stored inside the ClickHouse database.
87-
88-
## Serialized flow schemas
88+
from the outlet service. It exposes configuration settings for the other
89+
services to use. It provides to ClickHouse additional data, notably *GeoIP*
90+
data.
8991

90-
Flows sent to Kafka are encoded with a versioned schema. When the schema
91-
changes, a different Kafka topic is used. For example, the
92-
`flows-ZUYGDTE3EBIXX352XPM3YEEFV4` topic receive serialized flows using a
93-
specific version of the schema. The inlet service exports the schema with its
94-
HTTP service, via the `/api/v0/inlet/flow.proto` endpoint.
92+
- The **console service** provides a web interface to view and manipulate the
93+
flows stored in the ClickHouse database.
9594

9695
## ClickHouse database schemas
9796

console/data/docs/01-install.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
# Installation
22

3-
*Akvorado* is written in Go. It provides its 3 components into a
4-
single binary or Docker image. It also requires an installation of
3+
*Akvorado* is written in Go. It provides its 4 components in a single binary or
4+
Docker image. It also requires an installation of
55
[Kafka](https://kafka.apache.org/quickstart) and
6-
[ClickHouse](https://clickhouse.com/docs/en/getting-started/install/).
7-
They have to be installed separately. For ClickHouse, the minimal
8-
version is 22.4 (due to the use of the `INTERPOLATE` directive).
6+
[ClickHouse](https://clickhouse.com/docs/en/getting-started/install/). These
7+
must be installed separately. For ClickHouse, the minimum version is 22.4.
98

109
## Docker image
1110

@@ -22,7 +21,7 @@ Check the `docker/docker-compose.yml` file for an example on how to deploy
2221
the [quick start procedure](00-intro.md#quick-start). This documentation assumes
2322
you are running the `docker compose` setup.
2423

25-
If you want to compile the Docker image yourself, you can use `make docker`.
24+
If you want to compile the Docker image yourself, use `make docker`.
2625

2726
## Pre-built binary
2827

@@ -32,9 +31,9 @@ Currently, only a pre-built binary for Linux x86-64 is provided.
3231

3332
## Compilation from source
3433

35-
You need a proper installation of [Go](https://go.dev/doc/install) (1.24+),
36-
[NodeJS](https://nodejs.org/en/download/) (20+) with NPM (6+), and
37-
[protoc](https://protobuf.dev/installation/). For example, on Debian:
34+
You need a proper installation of [Go](https://go.dev/doc/install) (1.24+) and
35+
[NodeJS](https://nodejs.org/en/download/) (20+) with NPM (6+). For example, on
36+
Debian:
3837

3938
```console
4039
# apt install golang nodejs npm protobuf-compiler
@@ -94,7 +93,7 @@ The following `make` targets are available:
9493

9594
Be sure to read the [changelog](99-changelog.md) before attempting an upgrade.
9695
Upgrade the orchestrator first. This will update the ClickHouse database if
97-
needed. Then, upgrade all inlets. Then the console.
96+
needed. Then, upgrade all inlets and outlets. Then the console.
9897

9998
When using `docker compose`, use the following commands to fetch an updated
10099
`docker-compose.yml` file and update your installation.
@@ -109,6 +108,5 @@ When using `docker compose`, use the following commands to fetch an updated
109108

110109
The `docker-compose-upgrade.tar.gz` tarball ships `.env.dist` instead of `.env`.
111110
You may want to check the differences with your setup (most of the time, there
112-
shouldn't have any). Note that if Zookeeper or Kakfa gets upgraded in the
113-
process, this can be disruptive. You may want to review the changes in
114-
`docker/versions.yml`.
111+
shouldn't be any). Note that if Kafka gets upgraded in the process, this can
112+
be disruptive. You may want to review the changes in `docker/versions.yml`.

0 commit comments

Comments
 (0)