由于Zabbix基本都是通过web配置的,这些配置数据也是存放到数据库里面的,并且这些配置数据对硬盘容量的要求基本可以忽略不计。Zabbix对硬盘空间的决定性因素有4个,如下:

1.     每秒处理的数据量

这里的每秒处理的数据量只是一个平均值,例如我有3000个监控项,都是每30秒(默认值)刷新一次,那么平均每秒有100(3000/30)个数据要处理,也就是说每秒有100条数据要存到MYSQL(或者其他数据库)。

2.     历史记录保存时间

一般情况下,Zabbix监控项值都要存储到数据库中,并且保留几周到几个月。当然,要保存多久,看你具体的配置了。默认是保存90天。然后,一条记录需要多少容量由当前使用的数据库引擎和存储的数据类型(浮点型,整形,字符型等等)共同决定的,通常,一条记录需要占用50个字节(一个大概值)。假如当前Zabbix每秒有100条数据,需要保留90天,因此一共需要100*90*24*3600*50/1024/1024/1024=36.2GB空间。

3.     趋势数据保存时间

什么是趋势数据?当你查看一周或者一月的图标,图标上看到的MAX/MIN/AVG/COUNT都是取自趋势数据。趋势数据一小时获取一次。通常,一条趋势数据大概占用128字节,趋势数据默认保存1年。如果需要保存1年趋势数据,3000个监控项需要3000*24*365*128/1024/1024/1024=3.1GB空间。

4.     事件记录保存时间

报警、警告、恢复等等事件,一个事件大概占用130个字节,通常情况下不会有太多的事件,除非运维做的太糟糕,或者运维要求太严格,把阀值调的很低。我们假设最极端的情况,这一年每一秒钟就有一个事件发生,那么这一年事件记录占用的空间为:365*24*3600*130/1024/1024/1024=3.8GB

 

总结数据库空间计算公式总结:

Zabbix配置:固定大小,一般小于10MB

历史数据:(监控项总数/更新频率)*天数*24小时*3600秒*50字节

趋势数据:监控项总数*天数*24小时*128字节

事件数据:每小时事件个数(大概值)*天数*24小时*130字节


实际案例:

目前MYSQL数据库安装在默认/var文件系统下,因此项目上安装Zabbix的时候一定要把/var文件系统配置的大一点。下面我们根据计算公式计算一下/var的大小:

现在我们的Zabbix主要用于监控网络设备,因此监控项只考虑交换机,防火墙,负载均衡。一般现场会配置2个交换机+2个防火墙+2个负载均衡。

1.     交换机假设有48口,每个口有6个监控项,再加上交换机的CPU、内存等监控项(大概有6个左右),因此交换机的监控项一共有2*(48*6+6)=588个。

2.     防火墙假设有8个口,每个口有6个监控项,再加上CPU、内存等6个监控项,总共有2*(8*6+6)=108个。

3.     负载均衡和防火墙类似,也有108个监控项。

因此总共有588+108+108=804个监控项,考虑到冗余以及有的现场有管理交换机,我们就算有1000个监控项。

刷新频率和保留策略都采用默认值:刷新频率30秒,历史数据保留90天,趋势数据保留365天,事件数据保留365天。

各部分空间如下:

Zabbix配置:10MB

历史数据:(1000/30)*90天*24小时*3600秒*50字节=12.1GB

趋势数据:1000*365天*24小时*128字节=1GB

事件数据:1*365天*24小时 *130字节=1MB

所以需要的总大小为10MB+12.1GB+1GB+1MB=12.5GB。

因此现场安装Zabbix,/var文件系统最少配置为16GB,有条件的可以配置32GB。