zabbix监控磁盘IO
我这里有两种方法,感觉都不错。我这里主要是写一下监控的脚本。
1、使用iostat命令监控
1)首先打开配置文件的自定义脚本功能,然后编写脚本。

#!/bin/bash if [ $# -ne ];then
echo "Follow the script name with an argument"
fi case $ in rrqm)
iostat -dxk |grep -w vda |tail - |awk '{print $2}'
;; wrqm)
iostat -dxk |grep -w vda |tail - |awk '{print $3}'
;; rps)
iostat -dxk |grep -w vda |tail - |awk '{print $4}'
;; wps)
iostat -dxk |grep -w vda |tail - |awk '{print $5}'
;; rKBps)
iostat -dxk |grep -w vda |tail - |awk '{print $6}'
;; wKBps)
iostat -dxk |grep -w vda |tail - |awk '{print $7}'
;; avgrq-sz)
iostat -dxk |grep -w vda | tail - |awk '{print $8}'
;; avgqu-sz)
iostat -dxk |grep -w vda |tail - |awk '{print $9}'
;; await)
iostat -dxk |grep -w vda|tail - |awk '{print $10}'
;; svctm)
iostat -dxk |grep -w vda |tail - |awk '{print $13}'
;; util)
iostat -dxk |grep -w vda |tail - |awk '{print $14}'
;; *)
echo -e "\e[033mUsage: sh $0 [rrqm|wrqm|rps|wps|rKBps|wKBps|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"
esac
2)添加至agent的脚本路径里面。

完成之后就可以在zabbix里面添加items了
2、第二种方法,
第二种是使用iotop命令来获取数据
#!/bin/bash
#Date: //
#Author:zhangjie
disk_read(){
NUM=`/usr/bin/sudo iotop -b -n -d | grep "Total DISK READ" | grep -v grep | awk -F "|" '{print $1}' | awk -F ":" '{print $2}' | tail -n1 | awk -F "/" '{print $1}'`
NUM2=`echo $NUM | awk '{print $1}'`
UNIT=`echo $NUM | awk '{print $2}'`
if [ $UNIT == "B" ];then
echo $NUM2
elif [ $UNIT == "K" ];then
NUM3=$(echo "$NUM2 * 1024" | bc)
echo $NUM3
elif [ $UNIT == "M" ];then
NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)
echo $NUM3
elif [ $UNIT == "G" ];then
NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)
echo $NUM3
fi
}
disk_write(){
NUM=`/usr/bin/sudo iotop -b -n -d | grep "Total DISK WRITE :" | grep -v grep | awk -F "|" '{print $2}' | awk -F ":" '{print $2}' | tail -n1 | awk -F "/" '{print $1}'`
NUM2=`echo $NUM | awk '{print $1}'`
UNIT=`echo $NUM | awk '{print $2}'`
if [[ $UNIT == "B" ]];then
echo $NUM2
elif [[ $UNIT == "K" ]];then
NUM3=$(echo "$NUM2 * 1024" | bc)
echo $NUM3
elif [[ $UNIT == "M" ]];then
NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)
echo $NUM3
elif [[ $UNIT == "G" ]];then
NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)
echo $NUM3
fi
} main(){
case $ in
disk_read)
disk_read;
;;
disk_write)
disk_write;
;;
esac
}
main $
编写完脚本以后,我们还需要再做一件事情,修改sudoers文件

把这个添加注释,去掉此功能。
完成之后就可以进行监控了。

上面是两个脚本,选择任意一个都是可以的,接下来就是按照下面的步骤添加items,可能稍有出入,需酌情修改。
3、接下来开始进行测试:在server端使用zabbix_get命令测试脚本是否正确:
[root@ELK-chaofeng zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p -k io_check['wKBps']
40.00
[root@ELK-chaofeng zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p -k IO_check['disk_write']
87.00
3、看的出来没有什么问题,那么此时我们在zabbix的监控界面进行添加。

4、添加item

5、填写内容即可

填写完之后点击“update”保存
6、添加graph

还是在这个界面点击“graph”
7、添加graph

8、填写内容

添加成功后我们就可以查看了。
9、最后我们看看效果(我这里以上面的第二个脚本为例)

可以看到没有什么问题。
疑难总结:之前的脚本中,出来的图像是断断续续的,感觉挺是奇怪的。感觉像是时间间隔采集数据的问题。

就是出现上面的这种情况。items里面的监控项是没有问题,显示是正常的。

然后我换一种方式查看,发现确实read上有很长一段时间没有数据出现。感觉很不对劲。
后来在脚本中的iotop命令中,将iotop命令后面的参数修改了一下成功了:“iotop -b -n 3 -d 1” ,-d表示多长时间采集一次数据,-n表示采集数据的次数。之前我设置的是0.2秒采集一次数据,现在看来是不合适的。可能这个数值最好与zabbix界面的items里面的“update inteval”保持一致最好,都是1s。
此外,iotop命令第三次采集的数据是稍微稳定点的。所以最好采集3次以上的数据。
修改好之后,我们再次来看看效果:

发现这个时候是正常的了。
再来看看时间间隔:

发现时间间隔也是有序的,看来就没有什么毛病了。整个监控搭建成功了。
zabbix监控磁盘IO的更多相关文章
- Zabbix 监控磁盘IO
Zabbix 监控磁盘IO 1.数据获取脚本 #!/bin/bash # resource: http://www.muck.net/19/getting-hard-disk-performance- ...
- Zabbix监控磁盘IO值
iostat取硬盘IO值. iostat -x 3 2 | grep vdb | sed -n '2p' | awk '{print $14}' 每3s取一次值,输出第二次vdb硬盘的负载值. 添加Z ...
- zabbix应用之Low-level discovery监控磁盘IO
参考文章: http://qicheng0211.blog.51cto.com/3958621/1599776/ zabbix自带的"Template OS Linux"模板支持监 ...
- Zabbix自动发现并监控磁盘IO、报警
本文转载自: https://www.93bok.com 引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务 ...
- Zabbix 自动发现并监控磁盘IO、报警 引言
引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用自动发现这个功能,自 ...
- Cacti:添加监控磁盘IO
来自:http://blog.sina.com.cn/s/blog_61c07ac50101gkzp.html 1.检查net-snmp是否支持IO监控 snmpwalk -v 1 -c public ...
- Cacti添加IO模板并监控磁盘IO
1.下载Cacti_Net-SNMP_DevIO_v3.1.zip 下载Cacti_Net-SNMP_DevIO_v3.1.zip,解压并上传net-snmp_devio.xml到/resource/ ...
- 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO
原文:第七章--DMVs和DMFs(4)--用DMV和DMF监控磁盘IO 前言: 本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题.SQLServ ...
- Zabbix3.x 监控磁盘IO与自定义模板
引言 Zabbix自带的模板,帮助我们完成了一些比较常用的监控.但如果想要监控磁盘的IO,zabbix并没有给我们提供这么一个模板,所以我们需要自己来创建一个模板来完成磁盘IO的监控. 操作步骤 1. ...
随机推荐
- IMSI
国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有 ...
- IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7
1.项目编译时,IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7很显然是jdk版本冲突,于是查阅资料,作如下修改:File-->Other Se ...
- 面试:C++工厂模式实现
#include <iostream> enum CTYPE {PRODUCTA,PRODUCTB}; class Product{ public: ; virtual ~Product( ...
- Netty入门简介
前言 Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机 ...
- 学习html5的网站
http://www.html5cn.org/ http://www.html5china.com/ http://www.mhtml5.com/
- Docker基本命令汇总
Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动.开始.停止.删除.而这些容器都是相 ...
- mybatis中动态SQL之trim详解
一. 背景 之前mybatis中<where>.<update>.<if>.<foreach>标签用的多,知道有<trim>这个标签,但很少 ...
- 使用 libjpeg 库解压数据示例
static int MjpegDecompress( *** ) { struct jpeg_decompress_struct tDInfo; struct jpeg_error_mgr jerr ...
- net4log 添加自定义变量
在log4net.config中 <parameter> <parameterName value="@czyid" /> <dbType value ...
- c++中的this指针和c#中的this引用
先总结一下: 在c++中this为指针,使用"->"操作符来获取当前实例中的成员 在c#中this为引用,使用"."操作符来获取当前实例中的成员 下面内容 ...