使用zabbix监控linux的io
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的更多相关文章
- Zabbix监控Linux主机设置
说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对Linux主机进行监控. 具体操作: 以下操作在被监控的Linux主机进行,这里以CentOS 6.x系统为例. 一.配 ...
- zabbix 监控linux tcp连接数
zabbix 监控linux tcp连接数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP的状态概述 1>.端口状态转换 2>.TCP 三次握手 3>. ...
- zabbix监控linux 以及监控mysql
Zabbix监控Linux主机设置方法 linux客户端 :59.128 安装了mysql 配置zabbix的yum源 rpm -ivh http://repo.zabbix.com/zabbix/2 ...
- zabbix监控linux文件的一个目录大小
监控linux文件的一个目录大小 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 我们知道,Linux自带的一些监控模板 ...
- zabbix监控 linux/windows 主机tcp连接状态
更新内容:1).增加了对windows主机的tcp连接状态的监控2).修改linux主机的监控配置,使linux与windwos主机能够使用相同的模板tcp的连接状态对于监控服务器,尤其是Web服务器 ...
- Zabbix 监控Windows磁盘IO
Windows下,打开cmd输入 typeperf -qx > c:\typeperf.txt #打开c:\typeperf.txt文件 windows性能计数器里面包含windows相关数值 ...
- Zabbix监控Linux磁盘I/O
东西都上传到这里了: https://github.com/RexKang/Zabbix/tree/master/OS/Linux-disk-discovery 需要用到的东西: Zabbix的L ...
- zabbix监控linux内存
通过free -m查看当前内存 可用内存:Available memory=free+buffers+cached,即31068=759+66+30243 已用内存:Used memory=used- ...
- zabbix监控Linux服务器丢包率
http://www.ttlsa.com/zabbix/zabbix-simple-checks/ 这个文章看了,还没有实践 1.先创建监控项,键值如下 icmppingloss[<121.1 ...
随机推荐
- vscode 格式化代码 与 eslint 有冲突的问题解决
项目中配置了eslint后,在使用vue界面里格式化的时候总是不一致.然后在配置中加了配置也无效(File - Preference - Setting) 查了下原因是在vue开发的时候我们一般都安装 ...
- 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)
对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...
- CNN卷积核
一.卷积操作有两个问题: 1. 图像越来越小: 2. 图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少.因此需要padding. 二.卷积核大小通常为奇数 1.一方面是为了方便same卷积pa ...
- PAT 1011 World Cup Betting 查找元素
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...
- spring = servlet + 依赖管理 + 业务逻辑
spring = servlet + 依赖管理 + 业务逻辑
- 松软科技web课堂:SQLServer之ROUND() 函数
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数. SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_n ...
- json对象中的变量存在空格的取值办法
写一个json对象,但需求需要是带空格的键,定义的话很容易定义,只需要双引号引起来即可,但取值的时候怎么取,直接写 会报错,所以就有了下边的办法 <el-form-item label=&quo ...
- 使用vue在开发中的一些小问题--利用环境变量做一些常量的定义
1.集中式的环境配置: (1)使用vue-cli基本上不用去处理什么,只需要在config文件夹下的文件中配置写既可: module.exports = merge(prodEnv, { NODE_E ...
- [转]VB.net中 excel 的range方法
本文转自:https://blog.csdn.net/bigheadsheep/article/details/7711235 第五章 Range对象基本操作应用示例(1)Range对象可能是VBA代 ...
- 037.[转] springboot 配置多个数据源
1.在application.properties文件 配置两个数据源 #默认使用 tomcat-jdbc spring.datasource.type=org.apache.tomcat.jdbc. ...