Zabbix虽然自带了许多Key,能满足大多数的监控需求。但是真正在生产上还是有很多不足的,比如想监控Nginx连接数、MySQL的状态信息都没有Key能实现,所以Zabbix还提供了一种自定义Key来实现这种需求。这就是Zabbix的UserParameter功能。
一、创建UserParameter
要创建UserParameter的话需要在zabbix_agentd.conf中进行配置(可以设置多个自定义key),这里有2种方法来修改配置文件:
1.直接修改zabbix_agentd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
1.在配置文件中增加UserParameter的配置。以一个简单示例来进行说明:定义了一个名为os.mem.used的key,然后这个key通过后面指定的命令或脚本来获取需要的值,然后客户端将这个值发送给服务端,或者等服务端来获取(注意这个key要zabbix里没有声明过,唯一): zabbix_agentd.conf : UnsafeUserParameters=0 #是否允许自定义脚本传递特殊字符作为参数,通常不用开 #UserParameter=key,command #这是一个参考格式 UserParameter=os.mem.used,free -m | awk '/^Mem/ {print $3}' #新增一个key叫作os.mem.used用于查看系统已用内存 2.UserParameter还可以通过脚本来取得多个key的值(如上图配置): UserParameter=test[*], /usr/local/zabbix/etc/get.sh $1 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 |
脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/usr/local/zabbix/etc/get.sh #!/bin/bash free -m |grep "Mem"| awk '{print $3}' >/tmp/test.txt case "$1" in aa ) cat /tmp/test.txt | awk '{print $1}' | wc -l ;; bb ) cat /tmp/test.txt | awk '{print $1}' | wc -l ;; esac |
二、验证自定义Key
1 2 3 4 5 6 7 |
1、重启修改过配置的Zabbix客户端 2、使用zabbix_get(在服务端)命令看能否获取数据,该命令只能用于获取agent监控方式的key,不能获取sample check、JMX等其他监控方式的key数据 [root@xjjh-test2 log]# /usr/local/zabbix/bin/zabbix_get -s 192.168.6.121 -p 10050 -k "test[aa]" 1 [root@xjjh-test2 log]# |
1 |
如果上一步正常的话就可以在Zabbix Web端对需要监控的主机新增Item了,Key的名字就是UserParameter里设置的,这里自然就是test[*]了。按照脚本传参就应该是test[aa].如果获取不到数据的话说明key配置有错,在Web界面会提示Not supported,根据提示去做修改.对于设置有错的Key,Zabbix默认是10分钟去取一次数据,这个可以在Administration-->General-->Other中修改. |
二是在zabbix_agentd.d/下新建conf文件. 如果选择这种方式,一定要确保agentd.conf配置文件中对应的Include选项是开启的,其他配置都大致一样.
如图:
1 |
- 本文固定链接: https://www.yoyoask.com/?p=3501
- 转载请注明: shooter 于 SHOOTER 发表