1. Zabbix自定义监控参数
zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求。幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据。
1.1.定义配置文件
通过yum安装的
zabbix-agent
配置文件路径为
/etc/zabbix/zabbix_agentd.conf
。
大约在这个文件的
255
行
左右,我们可以发现下面的代码:
Include=/etc/zabbix/zabbix_agentd.d/
我们自定义的配置,可以放到这个目录。
我们可以创建一个自定义的文件来定义我们需要的key:
[root@monitorzabbix_agentd.d]# vim userparameter_system.conf
#自定义监控操作系统基础性能脚本
#时间:2016-12-16
#作者:zy
#用途:磁盘状态监控
#状态:2016-12-16 add by zy
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}'
#保存之后重启zabbix-agent。
1.2.测试获取自定义key值
在zabbix-server上使用zabbix_get工具获取自定义值。
[root@monitorzabbix_agentd.d]# zabbix_get -s 10.252.109.13 -p 10050 -kcustom.vfs.dev.write.ops[sda] 4831352
获取到了上面例子中执行的结果,说明配置是成功的。
在zabbix_agentd.d目录自定义的参数脚本:
[root@monitorzabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@monitorzabbix_agentd.d]# ls
userparameter_mysql.conf userparameter_system.conf userparameter_kucun.conf
[root@monitorzabbix_agentd.d]#
[root@monitor scripts]#pwd
/etc/zabbix/zabbix_agentd.d/scripts
mkdir -p/etc/zabbix/script/
vim/etc/zabbix/script/kucun.sh
我们定义脚本,输入一个店铺号来查询这个店铺中商品数量小于n的条数。
若手动执行查询,查询方式是这样的:
shell>/etc/zabbix/script/kucun.sh bj001 30
2
输出2即表示有2个商品数量小于30。
下面是脚本的内容:
#!/bin/bash
shop_id=$1
number=$2
dbhost="100.10.1.2"
dbuser="monitor"
dbpasswd="21"
sql="SELECTcount(*) FROM lsp_cus.menu WHERE shop_no = \"$shop_id\" AND date =UNIX_TIMESTAMP(DATE_FORMAT(NOW(),'%Y-%m-%d')) AND num - sale <\"$number\""
mysql-h$dbhost -u$dbuser -p$dbpasswd -Ne "$sql"
1.3.使用脚本查询的结果创建key
重新编辑
vim/etc/zabbix/zabbix_agent.d/userparameter_script.conf
文件修改为:
#
这个文件监控自定义脚本输出值
#
格式为
UserParameter=<key>,<command>
UserParameter=script.kucun[*],/etc/zabbix/script/kucun.sh$1 $2
1.4.通过zabbix-server查询
在zabbix服务器上使用zabbix_get工具查询店铺号001,库存小于30的商品数量。
shell>zabbix_get -s 100.10.1.2 -k script.kucun[001,30]
18
可以看到成功了。
1.5.上面用到方法的一些解释
UserParameter=key[*],command
key
为唯一值,
[*]
表示参数。
command
为要执行的命令或脚本,
key
的
[*]
里面的参数一一对应
$1
到
$9
,一共9个参数。
$0
表示脚本命令。返回结果数据最大为
512KB
参数禁止使用下列字符:
\ ‘ ” ` * ? [ ]{ } ~ $ ! & ; ( ) <> | # @