Akvorado Basic Install (without Docker)
Let me first state that I hate Docker and I won’t run or support an environment using Docker containers. I recently needed to spin up a copy of Akvorado for testing, and it was sort of annoying trying to figure out which parts of the documentation were actually useful when not using Docker. I’ll just outline the basic steps I used to accomplish having a running instance of Akvorado.
Deploy Debian 12
I use Debian for almost everything so I did a basic deployment of the latest stable Debian 12. At the time of this article, the required Go version provided by the Debian stable repo was 1.19 but Akvorado requires 1.21. You’ll need to pop over to the unstable repo by editing /etc/apt/sources.list and changing “bookworm” to “unstable” for the main apt source, then running apt update after saving the file.
Install some required packages: apt install golang nodejs npm curl openjdk-8-jre
For my deployment, this installed Go 1.22. The other packages also seemed to be new enough to support Akvorado’s requirements. If you haven’t already done so, you’ll want to create a user account to run all the Akvorado services under.
Deploy Kafka
Obtain the latest stable version and see the instructions at https://kafka.apache.org/quickstart
As your designated Akvorado user account, enter the Kafka directory and start the services:
- bin/zookeeper-server-start.sh config/zookeeper.properties
- bin/kafka-server-start.sh config/server.properties
Deploy ClickHouse
This is also pretty simple, just do the following:
- curl https://clickhouse.com/ | sh
- ./clickhouse server
I believe the first run will prompt you to set a user password. You also have the option of using “clickhouse install” to have it place itself in a more standard location.
Deploy Akvorado
The latest release at the time of this article can be found here: https://github.com/akvorado/akvorado/releases/tag/v1.10.1
You have the option of just downloading a binary or compiling it yourself. For the purposes of this article, we’ll just assume you have the binary in your user account’s home directory.
- Generate a base config file:
./akvorado orchestrator –dump –check /dev/null > config.yaml - Edit the file generated above as I think you need to change the default listen ports for the “inlet” and “console” sections since they overlap with the orchestrator on 8080. I just set these to 8081 and 8082.
- Run the orchestrator:
./akvorado orchestrator config.yaml - Run the inlet:
./akvorado inlet http://(yourhostname):8080 - Run the console:
./akvorado console http://(yourhostname):8080
The port you configured under the console section in config.yaml is where the web interface listens. The inlet and console both need to communicate with the orchestrator on 8080. Using the noted configuration above, going to http://(yourhostname):8082 should display some empty graphs as the system is waiting for flow data.
Final Thoughts
This is a very “quick n dirty” article and probably not the recommended way of deploying this long term. If you plan on using this in production, you should properly configure all of the required processes to run as services. I’ll also note I have no idea what I’m doing, and I’ve never heard of any of this stuff before last week. I just refuse to deploy a hundred Docker containers to accomplish one thing.
Thanks for this tutorial, it really helped me as I hate docker too!
I managed to do the installation and run all the services but I don’t receive any flow, in the inlet log I see the following:
6:40PM WRN akvorado/inlet/metadata/root.go:320 > provider breaker open exporter=10.29.1.239 module=akvorado/inlet/metadata
Despite having the community configuration
providers:
– agents: {}
communities:
::/0:
– mycommunity
Can you help me?