zabbix监控磁盘IO

简介:

监控磁盘IO的基本原理:通过分析/proc/diskstats文件,来对IO的性能进行监控。

++++++++++++++++++++++++对/proc/diskstats的解释++++++++++++++++++++++++++++++

# cat /proc/diskstats |grep sda |head -1

   8    0     sda 2280 1445 76478 11956 249 188 3490 932 0 9913 12805

解释说明:

第一至第三个域,分别是主设备号,次设备号,设备名称

第4个域:读完成次数 ----- 读磁盘的次数,成功完成读的总次数。 

(number of issued reads. This is the total number of reads completed successfully.)

第5个域:合并读完成次数, 第9个域:合并写完成次数。为了效率可能会合并相邻的读和写。从而两次4K的读在它最终被处理到磁盘上之前可能会变成一次8K的读,才被计数(和排队),因此只有一次I/O操作。这个域使你知道这样的操作有多频繁。

(number of reads merged)

第6个域:读扇区的次数,成功读过的扇区总次数。 

(number of sectors read. This is the total number of sectors read successfully.)

第7个域:读花费的毫秒数,这是所有读操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。

(number of milliseconds spent reading. This is the total number of milliseconds spent by all reads (as measured from __make_request() to end_that_request_last()).)

第8个域:写完成次数 ----写完成的次数,成功写完成的总次数。

(number of writes completed. This is the total number of writes completed successfully.)

第9个域:合并写完成次数 -----合并写次数。

(number of writes merged Reads and writes which are adjacent to each other may be merged for efficiency. Thus two 4K reads may become one 8K read before it is ultimately handed to the disk, and so it will be counted (and queued) as only one I/O. This field lets you know how often this was done.)

第10个域:写扇区次数 ---- 写扇区的次数,成功写扇区总次数。

(number of sectors written. This is the total number of sectors written successfully.)

第11个域:写操作花费的毫秒数  ---  写花费的毫秒数,这是所有写操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。

(number of milliseconds spent writing This is the total number of milliseconds spent by all writes (as measured from __make_request() to end_that_request_last()).)

第12个域:正在处理的输入/输出请求数 -- -I/O的当前进度,只有这个域应该是0。当请求被交给适当的request_queue_t时增加和请求完成时减小。

(number of I/Os currently in progress. The only field that should go to zero. Incremented as requests are given to appropriate request_queue_t and decremented as they finish.)

第13个域:输入/输出操作花费的毫秒数  ----花在I/O操作上的毫秒数,这个域会增长只要field 9不为0。

(number of milliseconds spent doing I/Os. This field is increased so long as field 9 is nonzero.)

第14个域:输入/输出操作花费的加权毫秒数 -----  加权, 花在I/O操作上的毫秒数,在每次I/O开始,I/O结束,I/O合并时这个域都会增加。这可以给I/O完成时间和存储那些可以累积的提供一个便利的测量标准。

(number of milliseconds spent doing I/Os. This field is incremented at each I/O start, I/O completion, I/O merge, or read of these stats by the number of I/Os in progress (field 9) times the number of milliseconds spent doing I/O since the last update of this field. This can provide an easy measure of both I/O completion time and the backlog that may be accumulating.)


环境说明:CentOS6.6 32位系统、zabbix2.2.9

前提已经安装好zabbix服务端和客户端

客户端上操作(IP为:192.168.20.100):

修改客户端配置文件

# vi /usr/local/zabbix-2.2.9/etc/zabbix_agentd.conf

增加如下内容:

1
2
3
4
5
6
7
8
9
UnsafeUserParameters=1
UserParameter=custom.vfs.dev. read .ops[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$4}'                     // 磁盘读的次数
UserParameter=custom.vfs.dev. read .ms[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$7}'                      // 磁盘读的毫秒数
UserParameter=custom.vfs.dev.write.ops[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$8}'                    // 磁盘写的次数
UserParameter=custom.vfs.dev.write.ms[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$11}'                   // 磁盘写的毫秒数
UserParameter=custom.vfs.dev.io.active[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$12}'            
UserParameter=custom.vfs.dev.io.ms[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$13}'                        // 花费在IO操作上的毫秒数
UserParameter=custom.vfs.dev. read .sectors[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$6}'              // 读扇区的次数(一个扇区的等于512B)
UserParameter=custom.vfs.dev.write.sectors[*], cat  /proc/diskstats  grep  $1 |  head  -1 |  awk  '{print $$10}'           // 写扇区的次数(一个扇区的等于512B)

在服务器端测试,是否能取到数据:

1
2
3
4
5
6
# /usr/local/zabbix-2.2.9/bin/zabbix_get -s 192.168.20.100 -p 10050 -k 'custom.vfs.dev.read.ops[sda]'
2308
# /usr/local/zabbix-2.2.9/bin/zabbix_get -s 192.168.20.100 -p 10050 -k 'custom.vfs.dev.write.ms[sda]'
1509
# /usr/local/zabbix-2.2.9/bin/zabbix_get -s 192.168.20.100 -p 10050 -k 'custom.vfs.dev.write.ops[sda]'
386


zabbix web浏览器操作:

1、添加指标:思路:首先添加模板 ,然后在模板上添加item。

configuration——templates——右上角点create templates ,填写模板名称,并加入到一个组;

spacer.gifwKiom1YCboSQQ2rsAANa7hbD7-Q986.jpg

2、进入新创建的模板——items,右上角create items

spacer.gifwKioL1YCbvORpAgDAALKxQHOKxk071.jpg


指标细节:

第一个指标Name:      Disk:$1:Read:Bytes/sec

                  Key:          custom.vfs.dev.read.sectors[sda]

                  Units:        B/sec

                  Store value: speed per second    //差量每秒速率,会进行差值计算

                  Use custom multiplier     512      //会对值乘以512,因为这里是一个扇区,转换为字节为512B

spacer.gifwKiom1YCby2DqFESAAKVnLFeOAw492.jpg

同理,其他指标方式,添加如下: 

第二个指标:Name:      Disk:$1:Write:Bytes/sec

                  Key:          custom.vfs.dev.write.sectors[sda]

                  Units:        B/sec

                  Store value: speed per second

                  Use custom multiplier     512

第三个指标:Name:      Disk:$1:Read:ops per second

                  Key:          custom.vfs.dev.read.ops[sda]

                  Units:        ops/second

                  Store value: speed per second

第四个指标:Name:      Disk:$1:Write:ops per second

                  Key:          custom.vfs.dev.write.ops[sda]

                  Units:        ops/second

                  Store value: speed per second

第五个指标:Name:     Disk:$1:Read:ms

                  Key:         custom.vfs.dev.read.ms[sda]

                  Units:      ms

                  Store value: speed per second

第六个指标:Name:     Disk:$1:Write:ms

                  Key:         custom.vfs.dev.write.ms[sda]

                  Units:      ms

                  Store value: speed per second


3、进入新创建的模板——graphs,右上角点create graphs,填写name,添加item项目,选择图形类型

spacer.gifwKioL1YCb32BBVVrAAJLaZLC76g322.jpg

4、拷贝创建好的items、graphs复制到需要监控的主机里

5、Monitoring——graps,选择Group,host,graph项目,监控出图;

wKiom1YCb7iD5KBJAAPHnwFW2gY058.jpg


zabbix监控磁盘IO到此为止,针对有多块硬盘的机器可以编写脚本,自动提取硬盘名称进行监控;






本文转自 模范生 51CTO博客,原文链接:http://blog.51cto.com/mofansheng/1697548,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
1天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
12 1
|
21天前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
29 2
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
106 5
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
41 2
zabbix agent集成percona监控MySQL的插件实战案例
|
3月前
|
NoSQL Redis 数据库
Redis AOF重写问题之同一数据产生两次磁盘IO如何解决
Redis AOF重写问题之同一数据产生两次磁盘IO如何解决
Redis AOF重写问题之同一数据产生两次磁盘IO如何解决
|
2月前
crash —— 获取系统的磁盘IO统计数据
crash —— 获取系统的磁盘IO统计数据
|
3月前
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
99 0
|
6月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
6月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
257 4