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. ... 
随机推荐
- PHP-CPP开发扩展(一)
			PHP-CPP是一个用于开发PHP扩展的C++库.PHP-CPP提供了一系列完善的文档.易于使用和扩展的类,让你可以相对快速的创建PHP的原生扩展. 为什么使用PHP-CPP 很快 用C++编写的代码 ... 
- gitlab+jenkins=自动化构建
			jenkins:运维持续集成工具,靠着丰富的插件挑大梁. gitlab:git代码管理仓库web版,功能强大且丰富. 本文是记录自己工作中从搭建到使用~ 前提是会点git~可以去廖老师的网站学习:ww ... 
- Java基础之Java 修饰符
			前言:Java内功心法之Java 修饰符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) Java语言提供了很多修饰符,主要分为以下两类: 访 ... 
- 光流法详解之一(LK光流)
			Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出 [1]. LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时 ... 
- .11-浅析webpack源码之Storage模块
			至此已完成NodeJsInputFileSysten模块的讲解,下一步就是实际实用的模块: compiler.inputFileSystem = new CachedInputFileSystem(n ... 
- C#   循环语句  for
			循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变. for格式 for(初始条件;循环条件;状态改变) { 循环体 } break ——中断循环,跳出整个循环 continu ... 
- SQL Server 连接(内连接,外连接,完全连接,交叉连接,联合)
			1.连接 有时候需要将连个表的数据合并成一个结果集来显示.为了解决这个问题,就需要用到JOIN连接. 2.内部连接 内部连接根据一个或几个共同的字段将记录匹配到一起.内部连接仅仅返回那些存在字段匹配的 ... 
- 2018-01-11 Antlr4实现数学四则运算
			中文编程知乎专栏原文地址 基本参考https://pragprog.com/book/tpantlr2/the-definitive-antlr-4-reference 一书"Buildin ... 
- 项目启动时发生NOT found
			一直想记录一下这个小问题 情景: 我昨晚美滋滋的做完功能,测了测没bug提交到git上之后就屁颠屁颠的回家了,结果今天早上来就失了智,git pull拉了一下代码后,一运行,我去,我的页面呢,页面上直 ... 
- CSS--理解块级格式上下文(BFC)
			1.BFC 定义 BFC(Block formatting context)直译为"块级格式化上下文".它是一个独立的渲染区域,只有Block-level box(块级元素)参与, ... 
