我每 5 分钟就有上个月的文件中的 netflow 数据,我想做一个所有这些流量的数据包配置文件。我需要 1 个数据包流、2 个数据包流等的百分比表示。可以在 1 个数据包流、1-100 个数据包流、100 个等类别中进行操作……这并不重要。但我的问题是如何做到这一点。如何对我无法加在一起的数据进行百分比表示?像为每个文件做百分比表示然后从中做某种类型的平均值之类的东西?
2 回答
“我不能加在一起”是什么意思?实际上,如果您查看手册,您可以使用nfdump执行此操作: -R expr /dir/file1:file2 读取从 file1 到 file2 的所有文件。例如
nfdump -R /yournetflowfolder/nfcapd.201204051609:nfcapd.201204051639
将从 16:09 到 16:39 收集 NetFlow 信息。然后,您可以对该数据执行所需的任何查询。
听起来您在描述直方图:您使用原始计数创建了您描述的大小的“箱”。箱的计数总和是会话的总数。要获得总流量的百分比,您只需将每个 bin 除以总流量计数即可进行标准化。
因此,如果您做一个双箱直方图,其中第一个箱是具有 < 100 个数据包流和其他 100 多个数据包流的所有会话的计数(请注意,不能有间隙或重叠),它的结果是前者有 30 个流,后者有 60 个,那么总流数是 90,你有 33% 的流少于 100 个数据包。
处理多个文件时,诀窍是始终使用相同的 bin 描述,并尽可能长时间地存储和使用原始计数,并且仅在最后一步导出 %s。您可以毫无困难地将直方图加在一起,只要它们的 bin 表示相同的意思,然后当您对结果进行标准化时,您可以为每个 bin 获得所有文件的总百分比。如果您需要添加文件,只需跟踪原始计数,以便在有新数据时重新规范化。
您可以在 Matlab 之类的工具中轻松完成此操作,但要小心,因为其中许多工具会非常友好地为您自动确定 bin 宽度。因此,一个文件的直方图可能有 bin {x < 100, 100 <= x < 200, x >= 200} 和另一个文件 {x < 90, 90 <= x < 180, x >=180}将无法将结果相加。