ntopng对时间序列和流量的磁盘要求 Post author:Chen, Sandara Post published:2022年7月29日 Post category:Ntop应用案例 先验估计ntopng在生产环境中使用的空间是进行调配存储的基础。本篇文章中,我们将估算ntopng存储时间序列和流量所使用的空间。 时间序列 ntopng生成的时间序列的数量几乎完全取决于本地主机的数量。生成的其他时间序列,包括接口或SNMP设备的时间序列,通常比为本地主机生成的时间序列少几个数量级。因此,在进行计算时,只考虑本地主机的时间序列是安全的对于每个本地主机,ntopng为流量生成一个时间序列和一个额外的第七层应用协议时间序列,每个应用协议一个。这些时间序列可以从首选项中禁用,但显然我们需要启用它们才能写这篇文章。在本节的其余部分中,我们将讨论ntopng存储时间序列所需的空间,它是本地主机数量的函数,对于RRDS和InfluxDB都是如此。您可以从ntopng首选项页面选择使用RRDS或InfluxDB。感兴趣的读者请参阅附录,了解这些数字是如何计算出来的。 RRD RRD文件的大小是固定的,这意味着它们不会随着新数据点的到来而增长。Ntopng为每个时间序列创建一个RRD。为每个本地主机存储数据所需的空间取决于启用的时序,并在下表中突出显示。 已启用的时间序列磁盘空间Host Timeseries “Light” (Default)92 K / Local Host (2 RRDs / host)Host Timeseries”Fulland”Layer-7 Applications “None”1.3 MB / Local Host (Approx. 25 RRDs / host)Host Timeserie“Full”and Layer-7 Applications “Per Category”1.6MB / Local Host (Approx. 30 RRDs / host)Host Timeseries ”Full” and Layer-7 Applications “Per Application”Max. 13.8 MB / Local Host(50 K * 250 applications + 1.3 MB)Host Timeserie“Full”and Layer-7 Applications “Both”Max. 14.1 MB / Local Host(50K * 250 applications + 1.6 MB) InfluxDB 与RRD相反,InfluxDB时间序列的大小随着时间的推移而增长。因此,下面的估计不仅是本地主机的功能,也是监测天数的功能。此外,由于InfluxDB允许选择监控分辨率,我们在10秒和60秒两种不同的分辨率下给出了所需的空间。 InfluxDB10秒的分辨率60秒的分辨率时间序列存储450 KB / Local Host / Day75 KB / Local Host / Day 流量 正如我们即将宣布的那样,我们已经设计并实现了一个用于存储流量的高速/容量专用数据库。使用此数据库,我们能够每秒将数万个流量转储到磁盘。下表显示了用于存储每个流的空间。 Flow Index Flows storage11 Bytes / Flow *上述数值是基于IPv4流量和一些IPv6流量的平均值。如果你的流量主要是IPv6流量,并且流量中存储 了较长的元数据字符串,那么它可能会增加。 附录 在本附录中,我们将讨论为计算上述估计值而进行的数学运算。 InfluxDB 为了对InfluxDB进行估计,我们考虑了在实际环境中运行的ntopng,监测一个平均流量为444.84Mbps的SPAN端口,平均有22,323台主机,包括大约4000台本地主机。 数据的获取方式如下:※InfluxDB存储:154.14 GB,如ntopng运行时状态页所示。※监测的时间:3个月,如从ntopng界面统计页面获得。 数学结果如下:※KB / Local Host / Day @ 10s = 154.14 GB / 3 Months / 4,000 local hosts = ((154.14 * 1024 * 1024) / 4000 / 90) = 450 KB / Local Host / Day※KB / Local Host / Day @ 60s = (KB / Local Host / Day @ 10s) / 6 = 75 KB / Local Host / Day RRD 为了估算RRD,我们使用了一个运行在从nProbe收集sFlow的生产系统中的ntopng,该系统已经看到了大约2000个本地主机,并启用了第7层时间序列生成。 数据的获取方式如下:※本地主机的数量:/var/lib/ntopng/0/rrd $ find . -name “bytes.rrd” | wc -l = 1,989※RRD的数量:/var/lib/ntopng/0/rrd $ find . -name “*.rrd” | wc -l= 25,506※RRD的总大小:/var/lib/ntopng/0/ $ du -hs rrd/= 989M 数学公式如下:989 M / 1,989 Local Hosts = (989 / 1989) * 1024 = 500 KB / Local Host 流量指数 流量指数估算是使用与InfluxDB相同的主机完成的。为了计算流数据库中存储的每个流使用的字节数,我们进行了以下计算:①首先,我们计算了一个小时内的流量数量: 1.$ ./nindex -d /var/lib/ntopng/0/flows/ -b 1544713200 -e 1544716800 -l 02.14/Dec/2018 21:29:05 [nindex.cpp:346] Search time range [Thu Dec 13 15:00:00 2018 -> Thu Dec 13 16:00:00 2018]3.14/Dec/2018 21:29:05 [nindex.cpp:356] Performing record count (-l 0)4.14/Dec/2018 21:29:05 [nindex.cpp:393] Query completed in 2.1 msec, with 16’962’614 hits returned ②然后,我们计算了用于存储该特定小时的数据的磁盘空间: 1.$ du -hs /var/lib/ntopng/0/flows/2018/12/13/152.175M /var/lib/ntopng/0/flows/2018/12/13/15 ③最后,我们得到的:Bytes / Flow as = 175M / 16962614 = (175 * 1024 * 1024) / 16962614 = 11 B / Flow. *请注意,我们在2毫秒内扫描了1,700万条记录。这对使用SATA驱动器同时ntopng正在写入的低端系统来说并不是太差。 产品详情 你可能也喜欢 如何高速转储、索引和第7层网络流量过滤? 2020年9月18日 如何监控防火墙后的流量? 2021年4月13日 数据包和Flow:哪一个选择是最好的? 2020年10月27日