很多时候,在使用cacti的时候,我们需要将多个端口的流量监控图混合放在一张图里,并且显示总的上行流量(outbound)、下行流量(inbound),想实现如下效果,将4张图合并到一张,并且inbound方向的数据是累计四张图中inbound的数据之和,并且采用原来的Area+stack方式显示;同样outbound方向累计四张图的数据并只显示1条线(Line1):
设备1-G1/0/1:
设备2-G0/0/20
设备3-G0/0/1
设备4-G1/0/1
汇总图效果:
(上面汇总图截图的时间和其他四个图时间略有偏差,不用纠结里面具体数值max那有个突发70M)
话不多说直接上操作明细:
1、汇总图的图形管理配置截图如下:
2、我们点击右上角的“*Turn On Graph Debug Mode.” 打开调试模式可以查看到具体RRD tool的图形加载算法情况:
DEF:a='/var/www/cacti/rra/a_traffic_in_2704.rrd':'traffic_in':AVERAGE \
DEF:b='/var/www/cacti/rra/b-_traffic_in_2862.rrd':'traffic_in':AVERAGE \
DEF:c='/var/www/cacti/rra/c_traffic_in_2745.rrd':'traffic_in':AVERAGE \
DEF:d='/var/www/cacti/rra/d_traffic_in_2790.rrd':'traffic_in':AVERAGE \
DEF:e='/var/www/cacti/rra/e_traffic_in_2704.rrd':'traffic_out':AVERAGE \
DEF:f='/var/www/cacti/rra/f_traffic_in_2862.rrd':'traffic_out':AVERAGE \
DEF:g='/var/www/cacti/rra/g_traffic_in_2745.rrd':'traffic_out':AVERAGE \
DEF:h='/var/www/cacti/rra/h_traffic_in_2790.rrd':'traffic_out':AVERAGE \
CDEF:cdefa='a,8,*' \
CDEF:cdefb='b,8,*' \
CDEF:cdefc='c,8,*' \
CDEF:cdefd='d,8,*' \
CDEF:cdefe='a,b,+,c,+,d,+,8,*' \
CDEF:cdefi='e,8,*' \
CDEF:cdefj='f,8,*' \
CDEF:cdefba='g,8,*' \
CDEF:cdefbb='h,8,*' \
CDEF:cdefbc='e,f,+,g,+,h,+,8,*' \
LINE1:cdefa:'' \
LINE1:cdefb:'' \
LINE1:cdefc:'' \
LINE1:cdefd:'' \
AREA:cdefe#00CF00FF:'Inbound' \
GPRINT:cdefe:LAST:' Current\:%8.2lf %s' \
GPRINT:cdefe:AVERAGE:'Average\:%8.2lf %s' \
GPRINT:cdefe:MAX:'Maximum\:%8.2lf %s\n' \
LINE1:cdefi:'' \
LINE1:cdefj:'' \
LINE1:cdefba:'' \
LINE1:cdefbb:'' \
LINE1:cdefbc#0000AAFF:'Outbound' \
GPRINT:cdefbc:LAST:'Current\:%8.2lf %s' \
GPRINT:cdefbc:AVERAGE:'Average\:%8.2lf %s' \
GPRINT:cdefbc:MAX:'Maximum\:%8.2lf %s\n'
3、算法解释:
红色标记表示图中的数据源总共有8个数据,4个inbound方向、4个outbound方向,分别对应了之前罗列出来的四张图的上行、下行流量,这里省去在Graph management中添加数据源的步骤(相信大家都会了),并且系统将这些数据源依次标记为a,b,c,d,e,f,g,h(红色下划线标记)。我们重点看一下蓝色标记部分,CDEF为自定义的一个算法,可以在如下界面添加:
然后我们定义我们自己的算法:
比如sum-a,表示的是只对数据源a的数据进行数据读取;sum-a-b表示读取数据源a+b的数据,a-b-c以此类推,具体CDEF的公式为:
上图即为sum-a,只针对数据源a进行bytes into bits的操作,因为1个字节等于8个bit,所以就是将原数据乘以8即可。
4、自定义CDEF公式:
其他公式罗列如下:
sum-a-b:cdef=a,b,+,8,* --------------表示a和b先进行加运算,得到结果在和8进行乘(*)运算;
sum-a-b-c:cdef=a,b,+,c,+,8,* --------------表示a和b先进行加运算,得到结果在和c进行加运算,最后结果再和8进行乘运算;
sum-a-b-c-d: cdef=a,b,+,c,+,d,+,8,* --------------同理
那么我们在添加具体的读取操作的时候,选择CDEF方法选对应的方法,即可显示自己需要展示的数据。
5、在进行最后图形显示的时候,可以直接将原数据加到一张图中,不选中任何颜色,然后再加一条需要显示Area的数据,使用对应的CDEF方法调用即可显示inbound图形,本例中选择sum-a-b-c-d,同理加一条需要显示line1的数据,选择方法为sum-e-f-g-h,即可得到最终汇总图形!