zabbix 自定义监控项如用ping监测链路【userparameter.conf】
一、在装有agent客户端的服务器上的在指定的路径上编写脚本,下图(zabbix_agentd.conf 部分截图)为配置路径位置
二、编写 userparameter.conf 配置文件
vi /etc/zabbix/zabbix_agentd.d/pingyz.conf
UserParameter=ping.time[*],bash /etc/zabbix/shell/pingyztime.sh $1
UserParameter=ping.loss[*],bash /etc/zabbix/shell/pingyzloss.sh $1
UserParameter= 这个为固定的,后面的内容以逗号隔开
其中第一个参数为 监控项名字【key】, 如果需要额外的输入参数,则添加[*]
第二个参数为执行的脚本,$1代表外部输入的第一个参数,$2代表外部输入的第二个参数,依此类推
三、编写脚本
vi /etc/zabbix/shell/pingyzloss.sh
resultloss=` ping -i 0.2 $1 -c 10 -w 3 | grep loss| awk -F '[ %]+' '{print $6}' `
echo ${resultloss}
vi /etc/zabbix/shell/pingyztime.sh
resulttime=` ping $1 -c 1 | grep icmp_seq| awk -F '[=m]' '{print $7}' `
echo ${resulttime}
四、 重启zabbix agent
service zabbix-agent restart
五、 在agent端进行验证
zabbix_agentd -t ping.loss["10.255.12.2"]
ping.loss[10.255.12.2] [t|0]
如果出现上面的提示表示agent端配置没有问题。
六、zabbix服务器上添加配置,创建item
如图
主要配置在 *Key, 其中自己配置的不能从Select得到,直接在输入框录入
比如:redis.keys.count["{$redis.hostIp}","{$redis.port}",]
中括号里的值为参数,使用逗号隔开参数,参数可以在宏里面定义,然后使用{$}获取,如下图定义
参数与第一个步骤的外部输入参数相呼应。
下面图为示意图,本次样例直接写死,没有写在宏里面
参数与第一个步骤的外部输入参数相呼应。
七、添加告警
{172.24.65.130:ping.loss[10.255.12.2].last()}>0