天天看点

zabbix监控磁盘IO

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

参数禁止使用下列字符:

\ ‘ ” ` * ? [ ]{ } ~ $ ! & ; ( ) <> | # @