allangonzalezmck/akvorado-ahv-observability
GitHub: allangonzalezmck/akvorado-ahv-observability
基于 Akvorado、sFlow 和 Open vSwitch 为 Nutanix AHV 构建的开源网络流可观测性平台,提供虚拟机级别的流量监控与取证能力。
Stars: 0 | Forks: 0
# 面向 Nutanix AHV 的 Akvorado — 开放的网络流可观测性
[](https://opensource.org/licenses/Apache-2.0)
[](https://www.nutanix.com/)
[](https://github.com/akvorado/akvorado)
## 本项目存在的原因
Nutanix AHV 自带的 VM 间流量可见性非常有限。Flow Networking (Microseg) 提供了策略层面的信息,但负责事件响应、容量规划、流量风暴调查和 DR 验证的运维团队通常不得不依赖:
- 来自 Prism 的粗粒度 CVM 级别计数器
- 事件发生时在单个主机上手动执行 `tcpdump`
- 每个集群成本高达 80,000 至 500,000 美元以上的商业 NDR 产品
本项目展示了一种**完全开源的本地化替代方案**,它提供:
- 通过 OVS 网桥上的 sFlow 实现**每个 VM 的东西向流量可见性**
- 通过接口计数器样本实现**亚分钟级的流量风暴检测**
- **取证级的数据包头捕获**(每个样本的前 512 字节)
- 用于多站点可观测性的**DR 感知元数据 schema**
- **无 SaaS 依赖** — 完全本地化,数据不会离开您的网络
基于 Akvorado 构建,数据平面可在商用硬件上扩展到多个数据中心和数百个集群。
## 架构概览

来自每个 AHV 主机 OVS 实例的网络流经过采样、捕获(包含完整的数据包头)、通过 Kafka 发送、进行元数据丰富(cluster 名称、DR 对、site、环境、租户),最终存储在 ClickHouse 中,并通过 Akvorado 的 Web UI 进行可视化。
## 本仓库包含的内容
| 目录 | 用途 |
|-----------|---------|
| [`docs/`](docs/) | 架构、安装指南、配置参考、故障排除 |
| [`config/`](config/) | 脱敏的 Akvorado 配置模板(将占位符替换为您的值) |
| [`scripts/`](scripts/) | 用于 AHV 主机的 OVS sFlow 设置脚本以及 ClickHouse 验证查询 |
### 文档
| 文档 | 涵盖内容 |
|----------|----------------|
| [`01-architecture.md`](docs/01-architecture.md) | 为什么使用 sFlow、为什么采用 OVS 多网桥接入、为什么使用 Akvorado、数据流 |
| [`02-installation.md`](docs/02-installation.md) | 从裸 VM 到可用 UI 的逐步实验/生产环境设置 |
| [`03-ahv-sflow-configuration.md`](docs/03-ahv-sflow-configuration.md) | OVS sFlow 命令及多网桥接入模式 |
| [`04-akvorado-configuration.md`](docs/04-akvorado-configuration.md) | 每个配置文件的详解,每个代码块的作用及原因 |
| [`05-naming-convention.md`](docs/05-naming-convention.md) | 面向多站点、多环境资产的 DR 感知元数据 schema |
| [`06-troubleshooting.md`](docs/06-troubleshooting.md) | 常见陷阱,包括一些我们花了几天时间才弄清楚的问题 |
## 快速开始(5 分钟获取第一个网络流)
### 前置条件
- 一台至少具有 8 个 vCPU、32 GB 内存和 1 TB 磁盘的 Linux VM
- Docker CE + Docker Compose
- 从 AHV 主机通过网络可访问该 VM 的 UDP 6344 端口
- 至少有一台 AHV 主机的 SSH/管理员访问权限
### 部署 Akvorado
```
# 克隆 Akvorado
git clone https://github.com/akvorado/akvorado.git
cd akvorado/docker
# 应用此 repo 中的 configs
cp /path/to/this/repo/config/akvorado.yaml.example ../config/akvorado.yaml
cp /path/to/this/repo/config/inlet.yaml.example ../config/inlet.yaml
cp /path/to/this/repo/config/docker-compose.override.yml.example docker-compose.override.yml
# 编辑 akvorado.yaml 中的占位符(subnets, names)和 .env 文件(如果需要)
# 启动 stack
docker compose up -d
# 验证所有 containers 是否健康
docker compose ps
```
### 在 AHV 主机上配置 sFlow
在每台 AHV 主机上以 `root` 身份执行:
```
ovs-vsctl -- --id=@sf create sflow \
targets='[":6344"]' \
header=512 \
sampling=1024 \
polling=20 \
-- set bridge br0 sflow=@sf \
-- set bridge br0.local sflow=@sf \
-- set bridge brAtlas sflow=@sf
```
或者使用 [`scripts/ahv-sflow-setup.sh`](scripts/ahv-sflow-setup.sh) 辅助脚本。
### 访问 UI
在浏览器中打开 `http://:8080`。大约 1 分钟内,网络流记录应显示在 Visualize 标签页中。
## 关键设计决策
该技术栈反映了经过深思熟虑后做出的几项决策。这些决策在 [`docs/01-architecture.md`](docs/01-architecture.md) 中有详细记录,简而言之:
| 决策 | 理由 |
|----------|-----------|
| 使用 sFlow 而非 NetFlow | 更低的 CPU 开销,实时,捕获数据包头,更适合风暴检测 |
| 多网桥 OVS 接入(`br0`, `br0.local`, `brAtlas`) | 每个网桥只能看到 VM 流量的不同切片 — 单网桥接入会遗漏 60–80% 的东西向流量 |
| 采样率为 1024 | 在低流量 VM 的可见性与生产规模的 Inlet 负载之间取得平衡 |
| DR 感知元数据 schema | 编码 site、环境、租户和 DR 对关系,使得单个 dashboard 就能回答整个资产范围内的问题 |
| 选择 Akvorado 而非其他方案 | 在大型 ISP 中经过生产验证,原生支持 sFlow/NetFlow/IPFIX,ClickHouse 后端支持横向扩展,Inlet/Outlet 清晰分离以实现高可用性 (HA) |
| 无 SaaS 依赖 | 所有数据均保留在本地 — 这对于受监管的工作负载(PCI、SOX、HIPAA)至关重要 |
## 目前尚不支持的功能
坦诚的范围说明:
- **不支持自动异常检测。** 本项目提供的是可见性 — 您在此基础上构建什么(告警、ML、AIOps)由您自己决定。
- **不支持无 Agent 的深度包检测。** sFlow 数据包头捕获为 512 字节;L7 协议检测需要额外的工具(例如 Suricata、Zeek)。
- **不原生集成 Nutanix Flow Networking 策略。** 您能看到流量,但看不到策略决策。将两者结合需要进行关联分析。
- **不支持自动 IPAM 集成。** 子网标记目前是静态的。对于生产规模,我们建议集成 Infoblox 或 NetBox。
## License
本项目基于 [Apache License 2.0](LICENSE) 授权。可自由用于商业或非商业目的。
Akvorado 本身基于 AGPL-3.0 授权 — 该许可证适用于您部署的 Akvorado 二进制文件,而不适用于本仓库的配置/文档。
## 致谢
- [Akvorado 项目](https://github.com/akvorado/akvorado) 及其维护者 — 杰出的工程技术。
- Nutanix 社区多年来关于 AHV 可观测性局限性的公开讨论。
- Open vSwitch 项目 — 配置正确后,OVS 上的 sFlow 运行得非常完美。
## 免责声明
本项目不附属于 Nutanix, Inc.、Akvorado 或任何商业实体,也未获得其认可。所有商标均归其各自所有者所有。使用风险自负;请务必先在非生产环境中进行测试。
标签:Akvorado, API集成, ClickHouse, Nutanix AHV, pipx 安装, sFlow, 可观测性, 版权保护, 请求拦截