zabbix监控linux服务器的磁盘I/O

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

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

[[email protected] bin]# cat /proc/diskstats | grep sda | head -1

8 0 sda 73840 10263 3178156 91219 1110085 4192562 42423152 1275861 0 447798 1366379

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

第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.)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

接下来就是在zabbix agent的配置文件做操作:
vi /usr/local/zabbix/etc/zabbix_agentd.conf

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)

测试命令如下:

[[email protected] bin]# ./zabbix_get -s 10.2.11.11 -p 10050 -k custom.vfs.dev.write.ops[sda]

111153

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

第一个指标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

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

第二个指标: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

转自:http://blog.chinaunix.net/uid-26446098-id-4964263.html

github:https://github.com/grundic/zabbix-disk-performance

通过ansible推送磁盘监控的配置:https://github.com/meissnerIT/mit.zabbix-agent.disk-performance

时间: 2024-10-07 00:06:09

zabbix监控linux服务器的磁盘I/O的相关文章

zabbix系列二:zabbix监控linux服务器

linux安装zabbix_agent客户端 1,创建zabbix用户: [roo[email protected] ~]# useradd zabbix -s /sbin/nologin 2,编译安装zabbix_agent: [[email protected] zabbix-2.2.2]# ./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix [[email protecte

Zabbix监控Linux磁盘I/O

东西都上传到这里了: https://github.com/RexKang/Zabbix/tree/master/OS/Linux-disk-discovery 需要用到的东西: Zabbix的LLD:https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery Zabbix的Agent配置:https://www.zabbix.com/documentation/2.0/manual/appendix

Zabbix监控Linux主机设置

说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对Linux主机进行监控. 具体操作: 以下操作在被监控的Linux主机进行,这里以CentOS 6.x系统为例. 一.配置防火墙,开启10050.10051的TCP和UDP端口 vi /etc/sysconfig/iptables #编辑防火墙配置文件 -A INPUT -s 192.168.21.127 -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCE

nmon监控Linux服务器系统资源

转 nmon监控Linux服务器系统资源 在实际的测试过程中,Loadrunner监控Linux系统资源不太稳定,经常断开,所以一般采用下面的工具进行监控. 下载地址:http://download.csdn.net/detail/hyzhou1121/3980069 nmon工具 nmon工具是IBM提供的免费的监控AIX系统与Linux系统资源的工具.该工具可将服务器的系统资源耗用情况收集起来并输出一个特定的文件,并可利用Excel分析工具进行数据的统计分析,非常利于Unix或者Linux系

zabbix监控windows服务器上进程的内存使用情况

zabbix监控windows服务器上进程的内存使用情况 由于在windows服务器上不能像linux上一样使用top,或者类似于/pro目录下的数据信息,所以在在windows服务器上获得一个进程的内存或者CPU的使用情况不是很容易. 这里通过在windows服务器上使用python脚本获得进程的内存使用值,通过key传递给zabbix客户端,也就是本机上安装的zabbix客户端. windows上安装zabbix客户端网上的文章很多,这里不再记录. 1,首先安装python环境: 点击这里下

zabbix监控LINUX下CPU,硬盘,流量,内存

1.LINUX下zabbix客户端安装 [[email protected] ~]# mkdir /usr/local/zabbix [[email protected] ~]# mv zabbix_agents_2.0.3.linux2_6.amd64.tar.gz /usr/local/zabbix/ [[email protected] ~]# cd /usr/local/zabbix/ [[email protected] zabbix]# tar zxvf zabbix_agents_

实时监控Linux服务器用户操作命令

在/etc/profile 追加 export HISTORY_FILE=/var/log/history/userhistory.log readonly PROMPT_COMMAND='{ date "+%y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$NF}")  #### $(id|awk "{print \$1}") #### $(his

Snmp 方式监控linux服务器

Snmp 方式监控linux服务器 一.  被监控端修改 shell#yum install net-snmp –y shell# mv /etc/snmp/snmpd.conf  /etc/snmp/snmpd.conf.bak shell# vim /etc/snmpd/snmpd.conf com2sec mynetwork 10.0.2.161 public  #这里写服务端的ip,表示允许这台机器访问你的snmp,如果default就是默认全部都可以访问. group MyROGrou

使用visualvm远程监控LINUX服务器JVM

使用visualvm远程监控LINUX服务器JVM 一.JMX方式: 1. 首先要修改JDK中JMX服务的配置文件,以获得相应的权限: 进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下, a. 将jmxremote.password.template文件复制为jmxremote.password b. 调整jmxremote.access和jmxremote.password的权限为只读写,可以使用如下命令 chmod 600 jmxremote.access