生产应用中的一点想法:

    有的时候想查看某一个业务用了多少流量,或者说想看这个业务的Nginx活动请求量是多少,我还得去从zabbix里把这业务的主机一台台的找出来做统计,然而基于监控的思想,数据采集à存储à展示à告警,我自己用了一个很简单的脚本来做这些统计,并用zabbix采集起来做图形展示。


实现过程,说吹一点就是思想,哈哈:

         1.整理各业务的IP到一个文本里。

        zabbix监控整体业务流量

         2.flowsum.sh脚本中利用zabbix_get把所有业务的出口流量都统计出来做一个总和,为整体业务的总流量,因为服务器都是对外服务,所以只采集外网网卡的OUT流量。

         3.利用zabbix_get把各个业务的流量都统计出来做一个总和,为某个业务流量。

         4.zabbix中监控并绘图。


脚本:

#!/bin/bash

# Nmae:统计各业务的出口带宽总流量.

# Date: 2013-12-25

# Author: [email protected]


Home=$(cd `dirname $0`;pwd)

LogFile=/tmp/flow-${1}.log



统计项目的总流量.

ItemCount() {


Sum=0

> $LogFile


         for  I in ${Item[*]};do


                   local  Flow=$(/usr/bin/zabbix_get -s $I -k net.if.out[eth1])

                   echo  "$I   flow is   $Flow" >> $LogFile

                   let  Sum+=$Flow


         done


echo $Sum


}



只接受一个参数,如果是Count就统计总流量,否则统计单个业务流量。

if [ $# -eq 1 ];then


         case  $1 in 


                   Count)

                      Item=(`cat ${Home}/*.ip`)

                      ItemCount;;


                   *)

                      Item=(`cat ${Home}/${1}.ip`)

                      ItemCount $*;;


         esac


fi



添加Zabbix监控:

这个收集工作就放在zabbixserver自身或者proxy上即可。

1,Agent配置当中添加UserParameter:
UserParameter=flowsum[*],/data/zabbix/etc/zabbix_agentd.conf.d/flowsum/flowsum.sh$1

2,zabbixserver主机上添加业务总流量的监控项,不用多说都放一个应用集里,而keyCount做为$1传给脚本,单位那些与监控网卡流量配置一样:
zabbix监控整体业务流量zabbix监控整体业务流量

3,添加各个业务流量,克隆上面的项目就可以了,只是改一下key中的$1为自己定义的业务文本名。

4,绘图:
zabbix监控整体业务流量

5,结果,这样流量去哪了就清晰多了:
zabbix监控整体业务流量



Zabbix使用感:

    相对之前用的nagioscacti来说,我还是觉得zabbix功能很全,很强,不用不知道,用了狠狠笑,果断的迁移了过来,当然自己也没玩多久,欢迎交流和指导。