zabbix功能强大,不得不提。原计划使用其自带的calculate功能汇总host_group的网卡流量,如下:

wKiom1cR0qKTli4AAAA7i_AjmqQ309.png

但数据获取结果和实际相差很大(不是一般大,很离谱的大),所以只能通过脚本来获取,脚本如下:

#/bin/bash
#Descript:calculate group traffic

qzqm_list="192.168.1.101 192.168.1.102"
jsqm_list="172.16.100.101 172.16.100.102 172.16.100.103"

function get_data() {
    traffic=0
    trac_dire=$1
    for host in $host_list
    do
#       echo $host

        case $trac_dire in
            inband)
                command="/sbin/zabbix_get -s $host -k net.if.in[\"${host}\"]"
            ;;
            outband)
                command="/sbin/zabbix_get -s $host -k net.if.out[\"${host}\"]"
            ;;
            *)
                echo "destination errot"
                exit 5
        esac
#       echo $command
        trac=$(eval $command)
#       echo $trac
        traffic=$[traffic+trac]
    done

    echo $traffic
}

group=$1
direct=$2
case $group in
    fujian)
        host_list=$qzqm_list
        get_data $direct
    ;;
    jiangsu)
        host_list=$jsqm_list
        get_data $direct
    ;;
    *)
        echo "please check host group and directory"
        exit 4
esac

还是通过zabbix_get工具获取的各主机流量,再进行计算,执行结果如下:

wKiom1cR1R6wHWsPAAAnIsAVPLQ427.png

和每台主机获取到的流量再进行计算的还是比较接近的。

如果有朋友知道,如何通过使用自带calculate方法准确汇总流量,还望留言指导。