Akvorado adalah alat open-source untuk pengumpulan, pengayaan, dan visualisasi data aliran jaringan seperti NetFlow, IPFIX, dan sFlow. Dikembangkan oleh ISP Prancis Free, Akvorado dirancang untuk memudahkan pemantauan lalu lintas jaringan tanpa memerlukan konfigurasi rumit.
🔧 Fitur Utama Akvorado
- Pengumpulan Aliran Jaringan: Menerima data aliran dari router menggunakan protokol NetFlow v9, IPFIX, atau sFlow.
- Pengayaan Data: Menambahkan informasi tambahan seperti nama antarmuka (menggunakan SNMP) dan geolokasi (menggunakan IPinfo.io).
- Penyimpanan dan Antrian: Menggunakan Apache Kafka sebagai antrian terdistribusi dan ClickHouse sebagai basis data kolumnar untuk penyimpanan data.
- Antarmuka Web: Menyediakan antarmuka pengguna berbasis web untuk menjalankan kueri dan visualisasi data aliran.
- Kinerja Tinggi: Dapat menangani hingga 100.000 aliran per detik dengan konfigurasi perangkat keras yang sesuai.
- Lisensi: Dilisensikan di bawah AGPLv3, memungkinkan penggunaan dan modifikasi bebas.GitHub+4
Installation
Disini saya akan skip untuk cara install docker, cara instalasi docker bisa dilihat di official website docker
Update dan Upgrade package
sudo apt update && sudo apt upgrade -y
(Optional) Buat directory
sudo mkdir -p /opt/docker/akvorado/
Pindah directory
cd /opt/docker/akvorado/
Download release docker-compose akvorado yang quick-start Disini, atau gunakan curl
untuk download
curl -sL https://github.com/akvorado/akvorado/releases/latest/download/docker-compose-quickstart.tar.gz | tar zxvf -
Saya menemui masalah pada akvorado docker release v1.11.4 container
akvorado-akvorado-orchestrator-1
yang error dan unhealthy, solusinya saya menggunakan versi dibawahnya yaitu v1.11.3
Edit file .env
nano .env
Matikan bagian demo COMPOSE_FILE=${COMPOSE_FILE}:docker/docker-compose-demo.yml
dengan memberikan comment
## Demo
##COMPOSE_FILE=${COMPOSE_FILE}:docker/docker-compose-demo.yml
Matikan bagian Custom Settings COMPOSE_FILE=${COMPOSE_FILE}:docker/docker-compose-local.yml
dengan memberikan comment
## Custom settings
##COMPOSE_FILE=${COMPOSE_FILE}:docker/docker-compose-local.yml
Jalankan akvorado docker
docker-compose up -d
Post Installation
Mendefinisikan ASNumber dan Nama nya
Edit file ./config/akvorado.yaml
nano ./config/akvorado.yaml
Edit bagian yang di highlight
clickhouse:
orchestrator-url: http://akvorado-orchestrator:8080
kafka:
consumers: 4
servers:
- clickhouse:9000
prometheus-endpoint: /metrics
asns:
64501: ACME Corporation
Sehingga menjadi seperti berikut
clickhouse:
orchestrator-url: http://akvorado-orchestrator:8080
kafka:
consumers: 4
servers:
- clickhouse:9000
prometheus-endpoint: /metrics
asns:
65053: PT Maju Mundur Asik
Definisikan External Interface
Edit file ./config/inlet.yaml
nano ./config/inlet.yaml
Edit bagian yang di highlight
core:
workers: 6
exporter-classifiers:
# This is an example. This should be customized depending on how
# your exporters are named.
- ClassifySiteRegex(Exporter.Name, "^([^-]+)-", "$1")
- ClassifyRegion("europe")
- ClassifyTenant("acme")
- ClassifyRole("edge")
interface-classifiers:
# This is an example. This must be customized depending on the
# descriptions of your interfaces. In the following, we assume
# external interfaces are named "Transit: Cogent" Or "IX:
# FranceIX".
- |
ClassifyConnectivityRegex(Interface.Description, "^(?i)(transit|pni|ppni|ix):? ", "$1") &&
ClassifyProviderRegex(Interface.Description, "^\\S+?\\s(\\S+)", "$1") &&
ClassifyExternal()
- ClassifyInternal()
Sehingga menjadi seperti berikut, sesuaikan dengan kebutuhan masing-masing (format yang digunakan adalah regex)
core:
workers: 6
exporter-classifiers:
# This is an example. This should be customized depending on how
# your exporters are named.
- ClassifySiteRegex(Exporter.Name, "^([^-]+)-", "$1")
- ClassifyRegion("europe")
- ClassifyTenant("acme")
- ClassifyRole("edge")
interface-classifiers:
# This is an example. This must be customized depending on the
# descriptions of your interfaces. In the following, we assume
# external interfaces are named "Transit: Cogent" Or "IX:
# FranceIX".
- |
ClassifyConnectivityRegex(Interface.Description, "^(?i)(sg|transit|ppni|ix):? ", "$1") &&
ClassifyProviderRegex(Interface.Description, "^\\S+?\\s(\\S+)", "$1") &&
ClassifyExternal()
- ClassifyInternal()
Ketika ada interface yang diberi deskripsi/comment seperti SG: TELKOM, transit: COGENT, PNI: META akan dianggap sebagai external interface
Definisikan SNMP
—
Troubleshoot
Jika menemukan pesan error seperti ini:
Step 5/7 : COPY --chmod=555 ipinfo-geoipupdate.sh /usr/local/bin/ipinfo-geoipupdate.sh
the --chmod option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled
ERROR: Service 'geoip' failed to build : Build failed
Edit konfigurasi docker daemon
nano /etc/docker/daemon.json
Tambahkan konfigurasi berikut:
{
"features": {
"buildkit": true
}
}
Restart layanan Docker:
systemctl restart docker
Jalankan kembali perintah:
docker-compose up -d --remove-orphans