生产应用中的一点想法:

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


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

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

        

zabbix api获取监控最大值 zabbix监控业务数据_外网

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

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

在zabbix中监控并绘图。


脚本:
#!/bin/bash
# Nmae:统计各业务的出口带宽总流量.
# Date: 2013-12-25
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主机上添加业务总流量的监控项,不用多说都放一个应用集里,而key用Count做为$1传给脚本,单位那些与监控网卡流量配置一样:

zabbix api获取监控最大值 zabbix监控业务数据_服务器_02

zabbix api获取监控最大值 zabbix监控业务数据_zabbix api获取监控最大值_03

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

4,绘图:

zabbix api获取监控最大值 zabbix监控业务数据_服务器_04

5,结果,这样流量去哪了就清晰多了:

zabbix api获取监控最大值 zabbix监控业务数据_运维_05



Zabbix使用感:

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



转载于:https://blog.51cto.com/londy/1344869