zabbix自定义脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix自定义脚本相关的知识,希望对你有一定的参考价值。

客户端

1、编辑/etc/zabbix/zabbix_agentd.conf

[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf

# Mandatory: no

# Range: 0-1

# Default:

UnsafeUserParameters=1

UserParameter=my.net.if[*],/usr/local/sbin/zabbix/net.sh $1 $2

解释说明:

     UserParameter用来自定义键值,(类似于net.if.in),自己写的脚本往往会有参数,所以需要加[*],这是固定写法,

    如果脚本压根没有什么参数,那么这个[*]就省了。逗号后面就是我们写的脚本的路径了,再后面就是要用到的参数,有几个就写几个。

2、编写脚本

[[email protected] ~]# mkdir /usr/local/sbin/zabbix

[[email protected] ~]# vim /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、修改权限

[[email protected] ~]# chmod +x /usr/local/sbin/zabbix/net.sh

4、在执行脚本之前,先做一些操作(只对eth0做的)

[[email protected] ~]# touch /tmp/net[io].log

[[email protected] ~]# date +%s >>/tmp/neti.log

[[email protected] ~]# grep eth0 /proc/net/dev |awk ‘{print $2}‘ >>/tmp/neti.log

[root[email protected] ~]# date +%s >>/tmp/neto.log

[[email protected] ~]# grep eth0 /proc/net/dev |awk ‘{print $10}‘ >>/tmp/neto.log

[[email protected] ~]# chown zabbix /tmp/net[io].log

[[email protected] ~]# cat /tmp/neti.log

1481437055

210588

5、执行脚本

[[email protected] ~]# /usr/local/sbin/zabbix/net.sh eth0 in

118

[[email protected] ~]# /usr/local/sbin/zabbix/net.sh eth0 out

157

6、重启服务

[[email protected] ~]# /etc/init.d/zabbix-agentd restart

服务端

7、检测

[[email protected] ~]# zabbix_get -s 192.168.219.128 -p10050 -k "my.net.if[eth0,out]"      

159

[[email protected] ~]# zabbix_get -s 192.168.219.128 -p10050 -k "my.net.if[eth0,in]"      

166

8、在浏览器配置,添加到监控项里去,形成图表

1)Configuration--->Hosts--->aming--->Items

技术分享

2)点击 "Create item"

技术分享

3)如下填入(eth0_net_in    eth0_net_out)

技术分享

技术分享

注:key是自己写的,不是选择的

4)Configuration--->Hosts 查看到刚添加的

技术分享

5)查看是否成功,有没有具体的数值,也可以点击 "Graph"查看图形

技术分享


本文出自 “linux” 博客,转载请与作者联系!

以上是关于zabbix自定义脚本的主要内容,如果未能解决你的问题,请参考以下文章

3.4-zabbix自定义脚本

zabbix升级报警之自定义脚本

zabbix自定义脚本做监控及自制模板初探

Zabbix监控——Zabbix自定义用户参数制作监控项

zabbix自定义脚本执行时间过长,怎样设置监控项呢?

zabbix之自定义告警