前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix自动发现监控磁盘(iops和读写量)

zabbix自动发现监控磁盘(iops和读写量)

作者头像
用户5807183
发布2019-10-10 11:53:10
4.8K0
发布2019-10-10 11:53:10
举报
文章被收录于专栏:Linux知识积累Linux知识积累

对于磁盘有个iops的概念比较奇怪,想监控起来看下,利用zabbix的自动发现把每个磁盘的iops监控起来,思路:自动发现所有的磁盘,然后监控各个磁盘的iops。效果如下图(iops和io读写大小),下图监控的磁盘是个sdd的,iops今天监控起来后峰值有30k:

思路分为两步,第一个,自动发现列出所有磁盘。第二个,监控每个磁盘的iops情况。

第一个实现如下:

先看一下自动发现脚本,使用python编写,利用linux的/proc/diskstats记得 的磁盘信息发现所有的磁盘。脚本如下:cat /usr/local/zabbix/discover_disk.py

代码语言:javascript
复制
#coding:utf-8
try:
    import json
except:
    import simplejson as json

import commands

(status, output) = commands.getstatusoutput('''cat /proc/diskstats |awk '{print $3}'|egrep 'sd|vd|hd'|egrep -v '[0-9]'|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'

运行结果如下(此机器上有两个磁盘):

第二步,监控磁盘的iops,利用linux的/proc/diskstats的第四个字段和第八字段可监控读和写的iops,第四个记录是记录所有读的次数,第八个字段是记录所有写的次数。通过zabbix上的差速率即可监控磁盘的iops。脚本如下:cat /usr/local/zabbix/check_disk.sh。脚本中-d后面跟磁盘名称,-o后面跟需要读取的磁盘的信息。(第六个字段和第十个字段分别代表读的扇区和写的扇区,*512就为读写的Byte了,通过这两个字段可监控磁盘的io读写量)

代码语言:javascript
复制
#!/bin/sh
#   8       0 sda 76880282531 8117316 937263519846 4237854729 62989000438 35668103347 777694636224 1190396494 3 2895102137 899093508
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}'
fi

脚本运行结果如下:

两步写好后,zabbix agent加入如下配置,加完后重启zabbix,配置如下:

代码语言:javascript
复制
cat /usr/local/zabbix/etc/zabbix_agentd.conf.d/disk.conf 
UserParameter=disk.discover,python /usr/local/zabbix/discover_disk.py 
UserParameter=disk.status[*],sh /usr/local/zabbix/check_disk.sh -d $1 -o $2

加入好后在zabbix server运行检测一下,自动发现结果如下:

监控磁盘的结果如下:

以上都测试没问题就可以在zabbix的页面上添加自动发现规则了。可以新建个模板,发现规则截图如下:

自动发现发现所有的磁盘,发现后就要项目原型进行监控磁盘的iops了 ,{#DISKONE}代表每个磁盘。监控的项目配置如下:

把自动发现模板应用到主机后,监控的项目如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux知识积累 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档