【Zabbix监控教程】使用UserParameter自定义key配置教程
Zabbix虽然自带了许多Key,能满足大多数的监控需求。但是真正在生产上还是有很多不足的,比如想监控Nginx连接数、MySQL的状态信息都没有Key能实现,所以Zabbix还提供了一种自定义Key来实现这种需求。这就是Zabbix的UserParameter功能。
一、创建UserParameter
1、要创建UserParameter的话需要在agentd.conf中进行配置,这里有2种方法来修改配置文件:一是直接修改agentd.conf;二是在zabbix_agentd.d/下新建conf文件。如果选择这种方式,一定要确保agentd.conf配置文件中对应的Include选项是开启的,如图:
2、在配置文件中增加UserParameter的配置。以一个简单示例来进行说明:定义了一个名为os.mem.used的key,然后这个key通过后面指定的命令或脚本来获取需要的值:
UnsafeUserParameters=0 #是否允许自定义脚本传递特殊字符作为参数,通常不用开 #UserParameter=key,command #这是一个参考格式 UserParameter=os.mem.used,free -m | awk '/^Mem/ {print $3}' #新增一个key叫作os.mem.used用于查看系统已用内存
UserParameter=mysql.status[*],/usr/local/zabbix/scripts/check_mysql.sh $1 UserParameter=check_port[*],/usr/local/zabbix/scripts/check_port.sh -H 127.0.0.1 -p $1 #[*]代表key接受任意个参数,这些参数就是在web端要明确写出来的参数,也是后面命令或脚本中接受的参数,用$1,$2来表示第几个参数。如果command中的命令本身带有$1等信息(如awk命令),需要写为$$1
实际运用中通常是建立一个shell脚本,用case语句根据用户输入的$1来监控指定的内容,Zabbix自带的MySQL模板就是一个最好的参考例子
二、验证自定义Key
1、重启Zabbix客户端
2、使用zabbix_get命令看能否获取数据,该命令只能用于获取agent监控方式的key,不能获取sample check、JMX等其他监控方式的key数据
zabbix_get -s 192.168.1.100 -k os.mem.used
3、如果第2步正常的话就可以在Zabbix Web端对需要监控的主机新增Item了,Key的名字就是UserParameter里设置的,这里自然就是os.mem.used了。如果获取不到数据的话说明key配置有错,在Web界面会提示Not supported,根据提示去做修改。对于设置有错的Key,Zabbix默认是10分钟去取一次数据,这个可以在Administration-->General-->Other中修改。
三、参考实例:监控SVN主从版本号是否一致
2、在zabbix agentd配置文件中增加以下内容:
UserParameter=svndiff[*],/svncheck_file/svndiff.sh $1
3、最后编写一个脚本:
#!/bin/bash if [ $# -ne "1" ];then echo "ARG ERROR" echo "Usage:$0 ( cms | app | mobile )" exit 2 fi case $1 in cms) slave=`ssh root@10.22.117.135 "svnlook youngest /SVN_DATA/cms/"` echo $slave > slave_cms master=`svnlook youngest /SVN_DATA/cms/` echo $master > master_cms diff slave_cms master_cms if [ $? -eq 0 ];then echo "1" else echo "0" fi ;; app) slave=`ssh root@10.22.117.135 "svnlook youngest /SVN_DATA/app/"` echo $slave > slave_cms master=`svnlook youngest /SVN_DATA/cms/` echo $master > master_cms diff slave_cms master_cms if [ $? -eq 0 ];then echo "1" else echo "0" fi ;; mobile) slave=`ssh root@10.22.117.135 "svnlook youngest /SVN_DATA/mobile/"` echo $slave > slave_cms master=`svnlook youngest /SVN_DATA/cms/` echo $master > master_cms diff slave_cms master_cms if [ $? -eq 0 ];then echo "1" else echo "0" fi ;; *) echo "Usage:$0 ( cms | app | mobile )" ;; esac
评论