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. 关于web.xml配置的那些事儿

    参考文章:重新认识web.xml

  2. C语言中的顺序点

    C语言盲点1.函数参数的求值顺序依赖于编译器,例如f(a,a++);是先求a++还是求a不一定 2.C语言中的大多数运算符对其操作数的求值顺序也依赖于编译器 警告int i = f() * g();这 ...

  3. 深度学习VGG16模型核心模块拆解

    原文连接:https://blog.csdn.net/qq_40027052/article/details/79015827 注:这篇文章是上面连接作者的文章.在此仅作学习记录作用. 如今深度学习发 ...

  4. 织女星开发板RISC-V内核实现微秒级精确延时

    前言 收到VEGA织女星开发板也有一段时间了,好久没玩了,想驱动个OLED屏,但是首先要实现IIC协议,而实现IIC协议,最基本的就是需要一个精确的延时函数,所以研究了一下如何来写一个精确的延时函数. ...

  5. Spring Boot可执行Jar包运行原理

    目录 1. 打可执行Jar包 2. 可执行Jar包内部结构 3. JarLauncher 4. 简单总结 5. 远程调试 Spring Boot有一个很方便的功能就是可以将应用打成可执行的Jar.那么 ...

  6. PAT 1008 Elevator 数学

    The highest building in our city has only one elevator. A request list is made up with N positive nu ...

  7. 图数据库 Nebula Graph 的安装部署

    Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...

  8. Web前端基础(10):JavaScript(四)

    1. 伪数组arguments arguments代表的是实参.有个讲究的地方是:arguments只在函数中使用. 1.1 返回参数个数 返回函数实参的个数:arguments.length 例子: ...

  9. 并发容器之ConcurrentLinkedQueue

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  10. 平时代码中用不到设计模式?Are you kidding me?

    引子 平时我是个反应非常慢的人.有多慢呢?大概是两年前有次团队内部开会时,我听到同学说平时代码中用不到设计模式,我当时没有回答.两年后我终于反应过来了:“Are you kidding me?我每天都 ...