Docker 快速部署 Akvorado:构建可用的流量分析平台

Docker 快速部署 Akvorado:构建可用的流量分析平台

3 周前 10 0 0℃

Docker 快速部署 Akvorado:构建可用的流量分析平台

本文以 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-release

2.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.gpg

2.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/null

2.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
已复制到剪贴板