3.4-zabbix自定义脚本

自定义zabbix脚本

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"               #流量的来源,可自行cat /proc/net/dev一下,得出开机后的总流量。

if [ $2 == "in" ]                      #接上,通过不同时间段的差值,得出某时段的流量。

then

n_new=`grep "$eth" $net_file|awk ‘{print $2}‘`  #得出指定网卡的receive总值

n_old=`tail -1 /tmp/neti.log`                   #查看上一次网卡的receive总值

n=`echo "$n_new-$n_old"|bc`                     #得出2次的receive差值

d_new=`date +%s`                                #定义新的时间戳

d_old=`tail -2 /tmp/neti.log|head -1`           #定义上一次的时间戳

d=`echo "$d_new-$d_old"|bc`                     #得出2次间隔的时间差

if_net=`echo "$n/$d"|bc`                        #receive差值除以时间差,得出平均流量值

echo $if_net                                    #显示得的出平均流量值

date +%s>>/tmp/neti.log                         #追加新的时间戳

grep "$eth" $net_file|awk ‘{print $2}‘>>/tmp/neti.log #追加新的receive总值

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        #有的SHELL不支持[]这个命令,与版本有关

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

存档

时间: 2024-12-16 15:11:13

3.4-zabbix自定义脚本的相关文章

L15.3 zabbix自定义脚本执行与报警配置(辅助5.4)

zabbix脚本报警配置 注:此文是5.4配置的一些关键配置说明,非完整步骤 zabbix-agent要配置为支持执行远程命令: vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #Defaults    requiretty 注意 (1) 如果用到以其它用户身份执行命令的话,那么命令本身要以sudo方式运行: sudo /etc/rc.d/init.d/httpd restart (2) 在各agent上的sudoers文件:

zabbix 自定义脚本监控配置之网卡

注:要添加自定义脚本监控,必须升级zabbix agent版本至2.0.0以上, 一:配置步骤 1. 完成自定义监控脚本的编写(windows或linux脚本) 脚本要求: (1)既然是监控,那必然要有输出结果值(字符串,数字皆可) (2)必须要求zabbix用户有执行权限,当然可以直接设置所有用户都有执行权限(chmod 777 脚本文件) (3)若脚本需要传入参数,按照参数传入的顺序,在脚本中可用$1-$9来引用传入的参数 2 找到zabbix agent的配置文件zabbix_agentd

zabbix自定义脚本监控pps(Packets per Second,包转发率)

一:介绍 网络的性能通常用吞吐率(throughput)这个指标来衡量.常用的网络吞吐率的单位有:PPS(即每秒发送多少个分组数据包).BPS(Bytes Per Second;即每秒发送多少字节).bPS (bits Per Second;即每秒发送多少比特).TPS(TransactionsPer Second;即每秒完成多少次发送过程). pps:(包每秒)包转发率标志了交换机转发数据包能力的大小.一般交换机的包转发率在几十Kpps到几百Mpps.包转发速率是指交换机每秒可以转发多少百万个

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

一.说明 zabbix监控支持自定义脚本以及自制模板来扩展监控,换句话说就是对业务自定义监控;因此通过撰写脚本完成自定义监控十分有必要;这里的脚本既可以用shell也可以用python等语言;另外自定义了脚本主要目的是获取业务相关的监控数据;还需要结合zabbix web GUI上的模板才能生效;本文的目的就是基于之前的zabbix相关部署操作之后的补充! 任务:通过撰写脚本获取tcp 的各种状态,添加tcp状态模板,添加触发器;添加图形:完整实现脚本自定义监控的整个步聚流程! 二.agent端

zabbix 自定义脚本

这个脚本的思路,自定义一个key,然后就是通过查看文件 /proc/net/dev  里面的数值,来计算实时网卡流量,其实我算的是一个平均值.分为进和出.如果这个脚本每隔1分钟执行一次,那么算出来的流量值就是1分钟的平均值.最终得到网卡流量趋势图. 客户端操作 # vim /etc/zabbix/zabbix_agentd.conf # UnsafeUserParameters=0 取消注释并修改为1,在下面增加一行 UserParameter=my.net.if[*],/usr/local/s

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用来自定义键值,

zabbix自定义脚本实现短信报警提醒

一 简介 通常,在zabbix的web界面配置好之后为了能够及时收到zabbix的报警信息,我们需要配置"报警媒介"来通知我们.其中常用的两种报警媒介分别是:Email和SMS,即:发邮件通知和发短信通知 关于邮件通知的配置很简单,只需要设置SMTP即可,因此这里不多说.但是zabbix默认的短信通知可就有点坑了,"SMS"这种报警媒介要想发送短信是需要硬件支持的.与此同时,现在开发中为了方便一般都是将短信发送的操作封装成接口的形式的,当需要发短信时只需要调用该接口

zabbix自定义脚本监控pps(Packets per Second,包转发率)_下

接上篇,Linux的做完了,再搞windows的. 首先查了下windows的在哪里获取,在windows的性能计数器中可以获取,叫做Packets Received/sec(获取出来的值就可以直接使用,不像Linux还得需要求差) 那如何获取呢: 1,新建个ITEM,使用这个KEY,perf_counter[]来实现,这个key直接获取性能计数器的数值. 那么只需要找到需要监控的网卡的包转发率的名称 2,获取windows性能计数器上的值 方法一:在win 的 命令cmd窗口下,运行  typ

Zabbix的通知功能以及自定义脚本告警

本节内容: Zabbix的通知功能 定义接收告警的用户 定义Action Zabbix自定义脚本发送报警邮件 一.Zabbix的通知功能 在配置好监控项和触发器之后,一旦正常工作中的某触发器状态发生改变,一般意味着有异常情况发生,此时通常需要采取一定的动作(action),如告警或者执行远程命令. 实现zabbix的通知功能,一般需要两个步骤:定义所需的"媒介"和配置一个"动作". 媒介类型有:E-mail,SMS,Jabber和自定义的通知脚本.我这里就使用E-m

zabbix 获取不到自定义脚本的值解决

agent端: zabbix 自定义脚本 [[email protected] script]# cat check_ping.sh #!/bin/bash result=$(/usr/local/nagios/libexec/check_icmp -s $1 $2) a=$(echo $result | awk '{print $1}') if [ $a == "OK" ];then echo "0000" else echo "2222" f