zabbix自带的监控linux的模板中并没有监控io这项,而实际生产中又需要监控io,如何监控呢。

错误的示例

这里我特意贴出错误的示例出来,是因为我在网上搜如何使用zabbix监控io的文章时,好多文章都在讲使用iostat这个命令。而我最开始也是这样做的,结果是错误的,妈的,被坑了。

$ iostat -dxk 1 1
Linux 2.6.32-431.el6.x86_64 (office) 05/22/2019 _x86_64_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.01 4.48 2.34 4.10 1065.02 34.29 341.50 0.00 0.34 0.20 0.13

rkB/s - 每秒读的字节数
wkB/s - 每秒写的字节数

乍一看,可以啊,只要把这两个值取出来,不就可以了,接下来在zabbix agent中,只要写个配置文件就行了,如下所示
cd /etc/zabbix/zabbix_agentd.d
vi userparameter_iostats.conf
UserParameter=system.io.readkbs,iostat -dxk 1 1 | tail -n +4 | awk '{sum+=$6} END {print sum}'
UserParameter=system.io.writekbs,iostat -dxk 1 1 | tail -n +4 | awk '{sum+=$7} END {print sum}'

然后添加监控项,添加图片,可是系统跑了很长的时间后发现怎么读和写都是一根直线,没有任何波澜,如下所示,这不合逻辑啊。

后来在看《高性能mysql》时,里面讲iostat的第一次出现的数据是从机器开启以来的平均值,而不是瞬时的值,原来是这样,难怪iostat -dxk 1 1的值基本上没什么变化。
使用iostat -dxk 1 5,后面几次的值才是瞬时的值

$ iostat -dxk 1 5
Linux 2.6.32-431.el6.x86_64 (office) 05/22/2019 _x86_64_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.01 4.49 2.34 4.10 1065.02 34.36 341.50 0.00 0.34 0.20 0.13 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 2.00 0.00 1000.00 0.00 1000.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 3.00 2.00 16.00 1000.00 76.00 119.56 0.00 0.22 0.11 0.20 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 7.00 4.00 10.00 2000.00 68.00 295.43 0.00 0.29 0.14 0.20 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 2.00 0.00 1000.00 0.00 1000.00 0.00 1.00 0.50 0.10

那就是说需要取iostat后面的几次的值,然后来个平均,这就麻烦了,还是去看zabbix自带的有没有这个监控项吧,使用iostat不靠谱。

正确的示例

zabbix监控io其实是有默认监控项的
vfs.dev.read[<device>,<type>,<mode>]
vfs.dev.write[<device>,<type>,<mode>]
具体说明看https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent?s[]=vfs&s[]=dev&s[]=read
我这里给出我使用的键
vfs.dev.read[,ops]  #每秒读的次数
vfs.dev.read[,sps]  #每秒读的扇区数,每扇区是512bytes
vfs.dev.write[,ops]  #每秒写的次数
vfs.dev.write[,sps]  #每秒写的扇区数,每扇区是512bytes

可能大家会想,明明有bytes/s,为啥不使用bps呢,我开始也使用bps,结果报错
$ zabbix_get -s 10.30.10.32 -k 'vfs.dev.write[,bps]'
ZBX_NOTSUPPORTED: Invalid second parameter.

原因在于linux不支持bps,查看系统支持的情况看https://www.zabbix.com/documentation/3.0/manual/appendix/items/supported_by_platform

看下新的图片,有高有低才对嘛

特别提醒

使用zabbix取的值
$ zabbix_get -s 10.30.10.32 -k 'vfs.dev.write[,sps]' #每秒写的扇区数
87.466667

$ zabbix_get -s 10.30.10.32 -k 'vfs.dev.read[,sps]' #每秒读的扇区数
4267.200000

使用iostat取的值

$ iostat -xd 5 10
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 1.80 2.40 3.59 2395.21 43.11 407.20 0.00 0.33 0.20 0.12 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 2.60 2.00 2.40 2000.00 40.00 463.64 0.00 0.23 0.14 0.06 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 2.40 2.40 3.40 2400.00 46.40 421.79 0.00 0.41 0.24 0.14

  

利用zabbix取出来的值刚好是两倍的iostat显示的值,这里可能是zabbix程序自身的一点瑕疵,所以应该是zabbix取的值/2 * 512bytes才是字节数。不过问题也不大,知道io什么时候高就行了。

使用zabbix监控linux的io的更多相关文章

  1. Zabbix监控Linux主机设置

          说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对Linux主机进行监控. 具体操作: 以下操作在被监控的Linux主机进行,这里以CentOS 6.x系统为例. 一.配 ...

  2. zabbix 监控linux tcp连接数

    zabbix 监控linux tcp连接数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP的状态概述 1>.端口状态转换 2>.TCP 三次握手 3>. ...

  3. zabbix监控linux 以及监控mysql

    Zabbix监控Linux主机设置方法 linux客户端 :59.128 安装了mysql 配置zabbix的yum源 rpm -ivh http://repo.zabbix.com/zabbix/2 ...

  4. zabbix监控linux文件的一个目录大小

    监控linux文件的一个目录大小 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.       欢迎加入:高级运维工程师之路 598432640 我们知道,Linux自带的一些监控模板 ...

  5. zabbix监控 linux/windows 主机tcp连接状态

    更新内容:1).增加了对windows主机的tcp连接状态的监控2).修改linux主机的监控配置,使linux与windwos主机能够使用相同的模板tcp的连接状态对于监控服务器,尤其是Web服务器 ...

  6. Zabbix 监控Windows磁盘IO

    Windows下,打开cmd输入 typeperf -qx > c:\typeperf.txt #打开c:\typeperf.txt文件 windows性能计数器里面包含windows相关数值 ...

  7. Zabbix监控Linux磁盘I/O

    东西都上传到这里了: https://github.com/RexKang/Zabbix/tree/master/OS/Linux-disk-discovery   需要用到的东西: Zabbix的L ...

  8. zabbix监控linux内存

    通过free -m查看当前内存 可用内存:Available memory=free+buffers+cached,即31068=759+66+30243 已用内存:Used memory=used- ...

  9. zabbix监控Linux服务器丢包率

    http://www.ttlsa.com/zabbix/zabbix-simple-checks/  这个文章看了,还没有实践 1.先创建监控项,键值如下 icmppingloss[<121.1 ...

随机推荐

  1. eclipse_neon 的Spket 目录下只有一个Task Tags,没有其他的选项,导致没有办法添加提示文件! 添加sdk文件之后还是没有办法显示的解决办法

    问题解决办法: 将 spket-1.6.23的安装包里面的features  plugins 单独复制到D:\eclipse_neon\dropins 目录下,重启一下eclipse即可正常显示! 添 ...

  2. Swoole Redis 连接池的实现

    概述 这是关于 Swoole 入门学习的第九篇文章:Swoole Redis 连接池的实现. 第八篇:Swoole MySQL 连接池的实现 第七篇:Swoole RPC 的实现 第六篇:Swoole ...

  3. mysql 数据误删恢复

    当binlog_format设置为ROW时,想查看binlog中的sql语句时,需要解密,添加这个 --base64-output=decode-rows -v

  4. vue template标签

    在普通的html里面: template标签默认有个 display:none; 属性,并且其里面的内容是不可见的. 在vue里面: template标签类似一个隐藏的div,在审查元素的时候是找不到 ...

  5. PlayJava Day012

    今日所学: /* 2019.08.19开始学习,此为补档. */ JPanel和JFrame 1.JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放 ...

  6. java 超详细面经整理(持续更新)2019.12.18

    目录 Java SE 请你谈谈Java中是如何支持正则表达式操作的? 请你简单描述一下正则表达式及其用途. 请你比较一下Java和JavaSciprt? 在Java中如何跳出当前的多重嵌套循环? 讲讲 ...

  7. 38-docker managed volume

    docker managed volume 与 bind mount 在使用上的最大区别是不需要指定 mount 源,指明 mount point 就行了.还是以 httpd 容器为例: 我们通过 - ...

  8. volatile简记

    volatile指出变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错,也就是在使用变量时必须从它的地址中重新读取.

  9. Spring 事务 属性 详细

    学习东西要知行合一,如果只是知道理论而没实践过,那么掌握的也不会特别扎实,估计过几天就会忘记,接下来我们一起实践来学习Spring事务的传播属性. 传播属性 传播属性定义的是当一个事务方法碰到另一个事 ...

  10. php number_format金钱 价格 格式处理 由分单位转换成元(保留2为小数)

    /** * priceFormat * 价格格式处理 * * @access public * @param null * @since 1.0 * @return object */ if(!fun ...