一共有三类数据:
历史数据(每秒记录一次)
保存天数*每秒处理的数据量*86400(秒)*50Bytes(每条数据的大小)
趋势数据(每小时记录一次)
保存天数*每小时处理的数据量*24(小时)*128Bytes(每条数据的大小)
事件数据
保存天数*每秒产生的数据量*86400(秒)*130Bytes(每条数据大小)
例:
一共有1000台被监控主机,平均每台主机上有60个Item,每60秒采集一次数据。假设每台主机平均每秒产生1个事件,数据保存时间为默认,即历史数据保存90天,趋势数据保存365天,计算一年中,zabbix所需的数据库大小
总Item
1000*60=60000
每秒采集的数据量
60000/60=1000
历史数据
90*1000*86400*50=388 800 000 000 Bytes = 362GBytes
趋势数据
365*60000*24*128=67 276 800 000 Bytes= 62.6GBytes
事件数据
365*1000*86400*130=4 099 680 000 000 Bytes=3.8 GBytes
平均每秒io量
(1000*3600*50+60000*128+3600*130)/3600=52263 Bytes = 51 KBytes
Zabbix数据库总共需要428.4GBytes左右的空间
附,计算用脚本:
#!/bin/bash read -p "请输入被监控主机数: " host read -p "请输入平均每台主机所需监控的Item数量: " item read -p "历史数据保存多少天? " history read -p "趋势数据保存多少天? " trend totalItem=$[${host}*${item}] datePerSecond=$[${totalItem}/60] historyData=$[${history}*${datePerSecond}*86400*50/1024/1024/1024] trendData=$[${trend}*${totalItem}*24*128/1024/1024/1024] eventData=$[365*1*86400*130/1024/1024/1024] totalData=$[${historyData}+${trendData}+${eventData}] ioRate=$[(${datePerSecond}*3600*50+${totalItem}*128+3600*130)/3600/1024] cat <<EOF ------------------计算结果--------------- 历史数据所需容量: ${historyData}GBytes 趋势数据所需容量: ${trendData}GBytes 事件数据所需容量: ${eventData}GBytes zabbix数据库总共需要:${totalData} GBytes 平均每秒的磁盘IO量: ${ioRate} KBytes EOF