有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter.
语法如下:
UserParameter=key,command
用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端.
然后配置监控项目item,
配置→主机→监控项→创建监控项→在键值填入自定义的key
用户自定义参数里指定的脚本由zabbix agent来执行,最大可以返回512KB的数据.
举例Linux:
/etc/zabbix/zabbix_agentd.d/customize.conf
UserParameter=memory.usage.total,/bin/cat /proc/meminfo |awk '/MemTotal:/ {print $2}'
UserParameter=memory.usage.free,/bin/cat /proc/meminfo |awk '/MemFree:/ {print $2}'
memory优化为一个key
UserParameter=memory.usage[*],/bin/cat /proc/meminfo |awk '/^$1/ {print $$2}'
$1 是引用 usage[*] 中的参数
$$2 是 / bin/cat /proc/meminfo 这个命令输出中的第二列,因 $2 是 usage[*] 中的参数,这个参数,可以有多个,以逗号分隔
zabbix server端参数获取:
zabbix_get -s 10.10.50.20 -k memory.usage[MemTotal]
zabbix_get -s 10.10.50.20 -k memory.usage[MemFree]
fping
# 平均丢包率
UserParameter=db_net_loss,/sbin/fping -p 100 -c 1 www.baidu.com 2>&1| tail -n 1 |awk -F '/' '{print +$5}'
# 平均响应时间
UserParameter=db_net_rspt,/sbin/fping -p 100 -c 1 www.baidu.com 2>&1| tail -n 1 | awk '{print $NF}' | cut -d '/' -f2