1
1
# Introduction
2
2
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 .
7
7
8
8
[ ^ name ] : [ Akvorado] [ ] means "water wheel" in Esperanto.
9
9
@@ -21,77 +21,76 @@ install the `docker-compose-v2` package. On macOS, you can use the
21
21
# mkdir akvorado
22
22
# cd akvorado
23
23
# 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
25
25
```
26
26
27
27
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
56
63
57
64
You can get all the expanded configuration (with default values) with
58
65
`docker compose exec akvorado-orchestrator akvorado orchestrator
59
66
--check --dump /etc/akvorado/akvorado.yaml`.
60
67
61
- Once you are ready, you can run everything in the background with
62
- ` docker compose up -d ` .
63
-
64
68
## Big picture
65
69
66
70
![ General design] ( design.svg )
67
71
68
- * Akvorado* is split into three components:
72
+ * Akvorado* is split into four components:
69
73
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.
79
85
80
86
- The ** orchestrator service** configures the internal and external components.
81
87
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.
89
91
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.
95
94
96
95
## ClickHouse database schemas
97
96
0 commit comments