Show HN: Xenoeye – 无需AI,使用Netflow、PostgreSQL和Grafana分析网络
Xenoeye 是一个轻量级的 Netflow/IPFIX/sFlow 收集器和分析器,利用 PostgreSQL 和 Grafana 进行网络流量监控和分析,无需人工智能。它支持多种流协议,使用监控对象和移动平均线检测流量异常,资源需求低,可在低端硬件上运行。
Xenoeye 是一个开源的轻量级网络流量收集与分析工具,专注于 Netflow、IPFIX 和 sFlow 协议。它利用 PostgreSQL 作为后端数据库存储聚合的时间序列数据,并通过 Grafana 提供可视化仪表板,所有功能都不依赖人工智能。该项目由 vm(vmxdev)开发,在 GitHub 上以 ISC 许可证发布,目前已有 137 星和 4 个复刻。
该收集器专为中大型网络设计,支持不同的用户群体生成不同的报告。它使用“监控对象”的概念,这些对象可以是 IP 网络、单个 IP 地址、自治系统、地理对象或任意可从 Netflow/IPFIX/sFlow 中提取的网络流量。通过配置文件,用户可以定义报告和图表,在 Grafana 中构建自定义仪表板。文档提供简单报告的例子,但构建更复杂的报告需要基本的 SQL 知识。
数据处理采用两种方式:固定时间窗口聚合用于常规报表和图表,移动平均线用于快速检测流量突变。两种方法可单独或结合使用。例如,当移动平均线检测到阈值被超过时,可以运行自定义脚本并立即启用扩展统计收集。开发团队使用移动平均线检测大容量 DoS/DDoS 攻击,当达到阈值时,会创建 BGP 通告(FlowSpec 过滤、限速、重定向到清洗服务器或黑洞路由),并通过即时通讯工具通知用户。
Xenoeye 对资源要求不高,即使在只有 4 GB 内存的 Orange Pi(类似树莓派)上也能处理数据并生成报告。在小网络中,它可以在只有 1 个 CPU 和 1 GB 内存的虚拟机中运行。性能方面,在调试模式下每个核心约可处理 10 万流/秒,在接近生产模式下(两个监控对象、两个滑动窗口)约 70 万流/秒。开发者建议悲观地看待这些数字,并指出多核扩展是可能的。该收集器仅在 64 位 Linux(x64、AArch64 和 Elbrus)上测试过。
数据存储方面,Xenoeye 使用 PostgreSQL 存储时间序列数据,并支持实验性的 ClickHouse 存储。它可以只导出前 N 个实体,其余聚合到一行,从而调节写入数据库的数据量,允许使用更便宜、更慢的磁盘。默认支持基本的 Netflow/IPFIX 字段,用户也可添加几乎任何需要的字段。
部署选项包括一个 LXC 容器镜像(v25.02 版本),包含预配置的收集器、PostgreSQL 和 Grafana,以及一个 Proxmox 模板。容器使用主机网络,需谨慎使用。此外,项目提供了详细的文档,涵盖安装、配置、监控对象、阈值设置、GeoIP 集成、流量分类、sFlow 增强分析等高级功能。未来计划主要集中在稳定性和代码简化,而非添加新功能。