zabbix版本:zabbix-3.0.2


zabbix客户端配置:

zabbix的监控类型分为server和server active(不确定用哪个适合,可以都选择)

在zabbix_agentd.conf中Hostname一定要填写,而且不能和其他监控服务器重复。

如果UserParameter名含\'""`*?{}[]~$!&;()<>|#@这些字符,默认情况下,Zabbix无法正常处理这些参数,需要在zabbix_apentd.conf中开启UnsafeUserParameters,并将其值设为1


vim /usr/local/zabbix/etc/zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
####### USER-DEFINED MONITORED PARAMETERS #######
### Option: UnsafeUserParameters
#       Allow all characters to be passed in arguments to user-defined parameters.
#       0 - do not allow
#       1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
UnsafeUserParameters=1

把上面的include前的注释去掉,这样你的自定义的key就可以放在zabbix_agentd.conf.d这个目录下

[root@localhost zabbix_agentd.conf.d]# ls
userparameter_script.conf   #名字自己随便取

你可以在userparameter_script.conf这个文件下自定义key

如下为灵活的用户自定义参数

UserParameter=key[*],command

参数                         描述
Key唯一. [*]表示里面可以传递多个参数
Command需要执行的脚本,key的[]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令                      

如:UserParameter=get.os.type, head -1 /etc/issue

以上配置完成后重启zabbix_agentd


如果你定义的key比较少就一两个,也可以在zabbix_agentd.conf直接添加

### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#       Format: UserParameter=<key>,<shell command>
#       See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
UserParameter=get.os.type, head -1 /etc/issue
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'

在文件中查找Option:UserParamete可以找到,在下面直接添加即可,这是不用把UnsafeUserParameters设置为1,注释掉即可!

UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'

其中的$1是在执行key是需要添加的参数否者会报错。

检验key是否可以正常使用(以下命令在zabbix服务端检验)

[root@localhost opt]# /usr/local/zabbix-3.0.2/bin/zabbix_get -s 192.168.10.74 -k get.os.type
CentOS release 6.8 (Final)


带参数的key

[root@localhost opt]# /usr/local/zabbix-3.0.2/bin/zabbix_get -s 192.168.10.74 -k custom.vfs.dev.read.ops[sda1]
681

zabbix服务端配置

配置-主机-选择主机-监控项-创建监控项

zabbix 自定义key的简单使用_key

以上设置完成之后就可以在最新数据下查看是否获取数据

zabbix 自定义key的简单使用_key_02

zabbix 自定义key的简单使用_zabbix_03

这样一个简单的key就定义完成了。当然这个key在zabbix自带的key也能实现这个功能,只是为了演示而已。zabbix自带的key已经十分强大,一般需要监控的基础项它都有。可以直接去查看相关文档!

自定义key的脚本是不限制语言的,只要能返回数据即可!

如:UserParameter=free.disk,/usr/local/zabbix/bin/disk.py

free.disk为key的名字,/usr/local/zabbix/bin/disk.py为服务器端调用free.disk这个key时执行的脚本,其结果就是free.disk的返回值。脚本可以是任何可以运行的脚本语言