allangonzalezmck/akvorado-ahv-observability

GitHub: allangonzalezmck/akvorado-ahv-observability

基于 Akvorado、sFlow 和 Open vSwitch 为 Nutanix AHV 构建的开源网络流可观测性平台,提供虚拟机级别的流量监控与取证能力。

Stars: 0 | Forks: 0

# 面向 Nutanix AHV 的 Akvorado — 开放的网络流可观测性 [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Nutanix AHV](https://img.shields.io/badge/Nutanix-AHV-orange.svg)](https://www.nutanix.com/) [![Akvorado](https://img.shields.io/badge/Akvorado-2.x-green.svg)](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 构建,数据平面可在商用硬件上扩展到多个数据中心和数百个集群。 ## 架构概览 ![架构图显示 sFlow 从 Nutanix AHV 主机流向 Akvorado Inlet、Kafka、Outlet、ClickHouse,最后到达操作员的 Console](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d4c8faf25e015105.svg) 来自每个 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, 可观测性, 版权保护, 请求拦截