zabbix-监控磁盘的读写速率 、延时、IOPS、%util

因为测试文件系统的读写或者应用的读写性能需要查看磁盘的读写速度和iops.

zabbix 需要自发现磁盘并进行相应的处理才可以得到想要的值。

模版位置:https://download.csdn.net/download/YINHAOXU1/12260778

编写脚本,发现磁盘 discover_disk.py

语言:python2 当然是用其他语言也是可以的

这里贴出代码:

#!/bin/env python
#coding=utf-8
try:
        import json
except:
        import simplejson as json

import commands

#匹配出你的磁盘,egrep 
#(status, output) = commands.getstatusoutput('''cat /proc/diskstats |awk '{print $3}'|egrep 'sd|vd|hd'|egrep -v '[0-9]'|sort -u''')
(status, output) = commands.getstatusoutput('''cat /proc/diskstats |awk '{print $3}'|egrep 'sd[a-z]$|vd[a-z]$|hd[a-z]$|leobd1d[0-9]{1,2}$'|sort -u''')

if output:
        outputs = output.split('\n')
        disks = []
        for disk in  outputs:
            disks += [{'{#DISKONE}': disk}]
        print json.dumps({'data':disks},sort_keys=True,indent=4)
else:
        print 'discovery error'

检查: python discover_disk.py 可以看到找到了机器上的磁盘

编写获取数值的脚本 check_disk.sh

语言 shell

#!/bin/sh
while getopts "d:o:" opt
do
        case $opt in
                d ) disk=$OPTARG;;
                o ) option=$OPTARG;;
                ? )
                echo 'parameter is wrong!'
                exit 1;;
        esac
done
if [ ! "${disk}" ] || [ ! "${option}" ];then
        echo "parameter is null"        
        exit 1
fi

if [[ ${option} == "read" ]];then
        cat /proc/diskstats |grep "${disk} "|awk '{print $6}'
elif [[ ${option} == "write" ]];then
        cat /proc/diskstats |grep "${disk} "|awk '{print $10}'
elif [[ ${option} == "readops" ]];then
        cat /proc/diskstats |grep "${disk} "|awk '{print $4}'
elif [[ ${option} == "writeops" ]];then
        cat /proc/diskstats |grep "${disk} "|awk '{print $8}'
elif [[ ${option} == "readtime" ]];then
        cat /proc/diskstats |grep "${disk} "|awk '{print $7}'
elif [[ ${option} == "writetime" ]];then
        cat /proc/diskstats |grep "${disk} "|awk '{print $11}'
elif [[ ${option} == "util" ]];then
        iostat -dxkt 1 2|grep "${disk} "|tail -1|awk '{print $14}'  #这边获取iostat第二次的值
fi

 

检查: sh check_disk.sh -d sda -o readops 可以看到有数值。

其实脚本就是去取 cat /proc/diskstats 的值,然后通过zabbix的差值算法得到真实结果的。

 

脚本位置和权限

把脚本放在一个位置,确保你的zabbix进程用户有权限执行或者读取

比如我放在了/usr/lib/zabbix/alertscripts下面

 

默认的zabbix进程用户是zabbix

sudo -u  zabbix sh  /usr/lib/zabbix/alertscripts/sh check_disk.sh -d sda -o readops 测试一下

配置zabbix conf

然后我们在

[root@mds6 zabbix_agentd.d]# pwd

/etc/zabbix/zabbix_agentd.d

路径下,新建disk.conf文件,内容如下

UnsafeUserParameters=1

UserParameter=disk.discover,python /usr/lib/zabbix/alertscripts/discover_disk.py

UserParameter=disk.status[*],sh /usr/lib/zabbix/alertscripts/check_disk.sh -d $1 -o $2

 

注意,这里都是你的脚本真实的路径哈~

 

然后重启 zabbix-agent

添加自动发现

先添加一个模版,名字自己取。然后点击自动发现,进行添加自动发现规则

添加完自动发现规则后,需要自己添加监控项原型。

点击 监控项原型

一一配置即可

这里比如要 自动发现iops

然后把write的ops也创建一个监控项原型

 

再点击 图形原型,新建 “图形原型” iops on {#DISKONE}

通过“添加原型” 把你刚才添加的iops添加到该图形原型里。

 

大功告成啦,可以在 “监测中” 看到iops的图形啦

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值