Instalasi Akvorado – Docker

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