zabbix2.2 使用自定义脚本监控网卡流量

回复 收藏
找遍所有的模板,都没有找到合适的项目,其中有一个 net.if.in[eth0] / net.if.out[eth0]  这个监控的总流量,而不是单位时间内的平均流量(实时流量),所以不得不动手自己写脚本了。

在写脚本之前,先研究了一下,如何在zabbix中使用自己写的脚本来监控。参考文章 http://www.linuxidc.com/Linux/2013-11/92476.htm

1.  在客户端修改配置文件  /etc/zabbix/zabbix_agentd.conf
需要改动两个地方:
(1)  UnsafeUserParameters=1
(2) UserParameter=my.net.if
  • ,/usr/local/sbin/zabbix/net.sh $1 $2   //其中UserParameter用来自定义键值,(类似于net.if.in),自己写的脚本往往会有参数,所以需要加
  • ,这是固定写法,如果脚本压根就没有什么参数,那么这个
  • 就省了。逗号后面就是我们写的脚本的路径了,再后面就是要用到的参数,有几个就写几。

    2. 编写脚本
    vi   /usr/local/sbin/zabbix/net.sh   //内容如下

    #!/bin/bash
    eth=$1
    io=$2
    net_file="/proc/net/dev"
    if [ $2 == "in" ]
    then
        n_new=`grep "$eth" $net_file|awk '{print $2}'`
        n_old=`tail -1 /tmp/neti.log`
        n=`echo "$n_new-$n_old"|bc`
        d_new=`date +%s`
        d_old=`tail -2 /tmp/neti.log|head -1`
        d=`echo "$d_new-$d_old"|bc`
        if_net=`echo "$n/$d"|bc`
        echo $if_net
        date +%s>>/tmp/neti.log
        grep "$eth" $net_file|awk '{print $2}'>>/tmp/neti.log
    elif [ $2 == "out" ]
    then
        n_new=`grep "$eth" $net_file|awk '{print $10}'`
        n_old=`tail -1 /tmp/neto.log`
        n=`echo "$n_new-$n_old"|bc`
        d_new=`date +%s`
        d_old=`tail -2 /tmp/neto.log|head -1`
        d=`echo "$d_new-$d_old"|bc`
        if_net=`echo "$n/$d"|bc`
        echo $if_net
        date +%s>>/tmp/neto.log
        grep "$eth" $net_file|awk '{print $10}'>>/tmp/neto.log
    else
        echo 0
    fi


    这个脚本的思路,就是通过查看文件 /proc/net/dev  里面的数值,来计算实时网卡流量,其实我算的是一个平均值。分为进和出。如果这个脚本每隔1分钟执行一次,那么算出来的流量值就是1分钟的平均值。


    3.  在脚本执行前,需要先做一个操作
    touch /tmp/net[io].log
    date +%s >>/tmp/neti.log
    grep eth0 /proc/net/dev |awk '{print $2}' >>/tmp/neti.log
    date +%s >>/tmp/neto.log
    grep eth0 /proc/net/dev |awk '{print $10}' >>/tmp/neto.log
    chown zabbix  /tmp/net[io].log

    4. 检查脚本是否可用
    在服务端执行
    zabbix_get -s 192.168.31.166 -p10050 -k "my.net.if[eth0,out]"

    5. 如果可以返回数值说明没问题了,接着在浏览器里面配置
    组态 --> 主机 --> 项目  --> 创建监控项
    名称 “网卡流量出”
    类型默认“zabbix代理”
    键值  "my.net.if[eth0,out]"
    数据更新间隔  60
    存档



  • 2015-06-11 22:30 举报
    已邀请:
    0

    qin521ne

    赞同来自:

    学习了
    0

    soul

    赞同来自:

    学习了
    0

    gsy36559067

    赞同来自:

    学习了
    0

    laomiao

    赞同来自:

    学习了
    0

    王斌

    赞同来自:

    2.0.2 版本测出来没有数据

    [root@centos2 zabbix]# zabbix_get -s 192.168.32.143 -p10050 -k "my.net.if[eth0,out]"

    ZBX_NOTSUPPORTED


    回复帖子,请先登录注册

    退出全屏模式 全屏模式 回复
    评分
    可选评分理由: