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
1
2
3
4
5
6
7
8
9
10
11
12
|
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这个目录下
1
2
|
[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直接添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
### 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,注释掉即可!
1
|
UserParameter=custom.vfs.dev. read .ops[*], cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
|
其中的$1是在执行key是需要添加的参数否者会报错。
检验key是否可以正常使用(以下命令在zabbix服务端检验)
1
2
|
[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
1
2
|
[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服务端配置
配置-主机-选择主机-监控项-创建监控项
以上设置完成之后就可以在最新数据下查看是否获取数据
这样一个简单的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的返回值。脚本可以是任何可以运行的脚本语言