本文以 Ubuntu Server 为基础,记录使用 Docker Compose 部署 Akvorado 的…
一、部署背景
作为一名网络运营商的运维工程师,日常最麻烦的问题不是链路不可达,而是带宽异常时快速确认是谁在用流量、流量打向了哪里。
实际工作中经常遇到:
- 某个地区出口带宽突然拉高(比如美国),只能看到接口总流量
- 需要明确是哪个源 IP、访问了哪个目的 IP 或目的网段
- 上游或客户追问异常流量来源,必须拿出可量化的数据
靠 SNMP 只能看到“有多少流量”,看不到通信关系,无法定位问题根因。
因此使用Flow 技术,还原真实的源、目的和业务方向。
我对比多种工具,ntopng 等工具存在半商业化限制,长期运行和规模扩展存在授权风险。
Akvorado 完全开源的 Flow 分析系统,更新活跃、无授权问题,专注解决“流量是谁、去了哪”的核心问题。
部署方式严格遵循官方 Docker 快速部署方案,不做大规模改动,保证后续升级、维护和故障排查更简单可控。
二、修改系统时区
正式安装前,一定要先统一系统时区,如果时区不正确,会出现“有数据,时间不对”的问题。
#设置系统时区、启用系统 NTP 自动校时、确认时间状态
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp true
timedatectl status
二、Docker 安装
Docker 官方仓库 不是 Ubuntu 默认仓库,安装前需要准备基础组件。
#更新索引、安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release2.1 添加 Docker 官方 GPG key
为了安装 最新版的 Docker Engine,需要使用 Docker 官方软件源。
这个软件源不是 Ubuntu 默认信任的,必须先添加 Docker 的 GPG 公钥,让Ubuntu知道“这个来源可靠”。
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg2.2 添加 Docker 仓库
给 Ubuntu 系统添加 Docker 官方的第三方软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null2.3 更新并安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin三、部署 Akvorado(官方推荐方式)
Akvorado 官方提供了 Docker Compose Quickstart
https://demo.akvorado.net/docs/install#docker-image
mkdir -p /opt/akvorado
cd /opt/akvorado#下载并解压官方部署文件
curl -sL https://github.com/akvorado/akvorado/releases/latest/download/docker-compose-quickstart.tar.gz | tar zxvf -
docker compose up --wait
四、更改SNMP
Akvorado 的 SNMP 接口识别、接口分类规则 都在 outlet 配置中。
Akvorado 不维护传统意义上的设备清单,网络设备通过 Flow 数据自动发现;Akvorado会根据接收到的 Flow 自动反向识别设备来源,SNMP用于补充接口和设备的元数据信息,接口语义则通过规则引擎自动完成分类。
nano /opt/akvorado/config/outlet.yaml
五、命名规则
Akvorado 的数据来源是 Flow(NetFlow / IPFIX / sFlow)。
Flow 只包含流量从哪个接口进入、从哪个接口发出,但并不知道这个接口在网络中的角色和意义。
因此,Akvorado 强依赖接口描述(Interface Description) 来为接口补充语义信息,并据此对流量进行自动分类。
接口类型(默认支持)

Akvorado 默认通过接口描述识别以下四类接口:
- ix:Internet Exchange,通过交换中心与多个网络进行互联。
- transit:上游运营商出口,通常为付费互联网带宽,用于访问全网。
- pni:Private Network Interconnect,与单一内容厂商或网络的私有互联链路。
- ppni:Protected / Premium PNI,多用于高带宽或有 SLA 要求的私有互联。
接口命名规则:<类型>: <提供商> [可选编号]
transit: Cogent VBP-1通过上述命名规则,Akvorado 可以 Flow 数据真正具备运营分析和故障排查价值。
六、系统登录
http://10.0.0.243:8081/

七、配置路由器
我是华为的NE40E路由器,配置完成之后等5-10分钟,配置内容如下:
ip netstream tcp-flag enable
ip netstream sampler fix-packets 2048 inbound
ip netstream sampler fix-packets 2048 outbound
ip netstream export source 10.0.10.1
ip netstream export host 10.0.0.243 2055
interface GigabitEthernet1/1/1.1321
description Transit: GTT GTT-U-1
ip netstream inbound
ip netstream outbound