1、简介
zabbix4.4可以方便的监控硬盘IO,目前监控了硬盘的9个参数,现在要加上一个MBps的监控;这个过程在界面上可以快速的添加;本文的思路是iostat中显示的读写扇区的大小、iostat中显示的读写硬盘的速度的关联,这两者在man的iostat中有说明,两个值差一半;
【请注意,这里使用了zabbix4.4的硬盘监控的默认模板,图中的“类型:相关项目”是重点,更多内容在“zabbix的键值key说明”文章中】,zabbix5.0没找到Template Module Linux Block device模板。
2、详细步骤
如下面的图的过程,添加了监控;
下图中的键值“writeSpeed”是随便写的,他的值来自图中的“进程”,进程内容见“图2”
下图中,读是/proc/diskstats中的第5个参数,写是/proc/diskstats中的第9个参数;
图2
3、监控效果对比
步骤:建立一个大文件--》查看硬盘写入速度
[root@ali ~]# dd if=/dev/zero of=test.dbf bs=8k count=300000 oflag=direct
300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 140.26 s, 17.5 MB/s
[root@ali ~]#
[root@ali ~]# iostat -d -x -m -y 10 2
Linux 2.6.32-696.16.1.el6.x86_64 (ali) 05/03/2020 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.70 0.00 2140.10 0.00 16.72 16.00 0.99 0.46 0.00 0.46 0.46 99.44
vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.80 0.00 2139.30 0.00 16.71 16.00 1.00 0.47 0.00 0.47 0.47 99.50
vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@ali ~]#
从这个iostat的结果看到,和监控图的流量类似,说明监控结果相同;
4、总结
本次是从“zabbix4.4”的键值开始分析,从/proc/diskstats取数据获取流量;iostat中的数据来自/proc/diskstats;
1)首先看看/proc/diskstats文件的列,都有哪些
/proc/diskstats文件从左至右分别对应主设备号,次设备号和设备名称。后续的11个域在下面解释。除了第9个域,所有的域都是从启动时的累积值。
[root@ali ~]# cat /proc/diskstats
252 0 vda 10813 5143 1264274 14515 3766417 78391 60728264 2128799 0 1759722 2143288
252 1 vda1 10648 5143 1262954 14439 3766281 78391 60728264 2128759 0 1759667 2143172
252 16 vdb 183 10 1544 69 0 0 0 0 0 68 68
[root@ali ~]#
第1个域:读完成次数 ----- 读磁盘的次数,成功完成读的总次数。
第2个域:合并读完成次数,为了效率可能会合并相邻的读和写。从而两次4K的读在它最终被处理到磁盘上之前可能会变成一次8K的读,才被计数(和排队),因此只有一次I/O操作。这个域使你知道这样的操作有多频繁。
第3个域:读扇区的次数,成功读过的扇区总次数。
第4个域:读花费的毫秒数,这是所有读操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。
第5个域:写完成次数 ----写完成的次数,成功写完成的总次数。
第6个域:合并写完成次数 -----合并写次数。
第7个域:写扇区次数 ---- 写扇区的次数,成功写扇区总次数。
第8个域:写操作花费的毫秒数 --- 写花费的毫秒数,这是所有写操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。
第9个域:正在处理的输入/输出请求数 -- -I/O的当前进度,只有这个域应该是0。当请求被交给适当的request_queue_t时增加和请求完成时减小。
第10个域:输入/输出操作花费的毫秒数 ----花在I/O操作上的毫秒数,这个域会增长只要field 9不为0。
第11个域:输入/输出操作花费的加权毫秒数 ----- 加权, 花在I/O操作上的毫秒数,在每次I/O开始,I/O结束,I/O合并时这个域都会增加。这可以给I/O完成时间和存储那些可以累积的提供一个便利的测量标准。
2)下面看看iostat的命令的内容;其中-k、-y是重点;
[root@ali ~]# man iostat
rsec/s
The number of sectors read from the device per second.
wsec/s
The number of sectors written to the device per second.
rkB/s
The number of kilobytes read from the device per second.
wkB/s
The number of kilobytes written to the device per second.
%util
Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100%.
OPTIONS
-h Make the NFS report displayed by option -n easier to read by a human.
-k Display statistics in kilobytes per second instead of blocks per second. Data displayed are valid only with kernels 2.4 and later.
-m Display statistics in megabytes per second instead of blocks or kilobytes per second. Data displayed are valid only with kernels 2.4
and later.
-x Display extended statistics. This option works with post 2.5 kernels since it needs /proc/diskstats file or a mounted sysfs to get the statistics. This option may also work with older kernels (e.g. 2.4) only if extended statistics are available in /proc/partitions (the kernel needs to be patched for that).
-y Omit first report with statistics since the system boot, if displaying multiple records in given interval.
-z Tell iostat to omit output for any devices for which there was no activity during the sample period.
[root@ali ~]#
下面看看iostat使用不同参数的结果;查看wec/s和wMB/s两者的值是不是差一半;
[root@ali ~]# iostat -d -x -y 10 2
Linux 2.6.32-696.16.1.el6.x86_64 (ali) 05/03/2020 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 4.70 0.00 2140.50 0.00 34274.40 16.01 1.00 0.47 0.00 0.47 0.46 99.47
vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.70 0.00 2139.70 0.00 34236.00 16.00 0.99 0.46 0.00 0.46 0.46 99.43
vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@ali ~]#
[root@ali ~]# iostat -d -x -m -y 10 2
Linux 2.6.32-696.16.1.el6.x86_64 (ali) 05/03/2020 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.70 0.00 2140.10 0.00 16.72 16.00 0.99 0.46 0.00 0.46 0.46 99.44
vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.80 0.00 2139.30 0.00 16.71 16.00 1.00 0.47 0.00 0.47 0.47 99.50
vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@ali ~]#
/proc/diskstats内容说明参考1:https://www.cnblogs.com/dachenzi/p/8232001.html
时间:2020-05-03