zoukankan      html  css  js  c++  java
  • 使用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

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

    捕获2

    特别提醒


    使用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什么时候高就行了。

  • 相关阅读:
    20155307刘浩《网络对抗》逆向及Bof基础
    20155307 2017-2018-1 《信息安全系统设计基础》课程总结
    20155307 《信息安全系统设计基础》第十四周学习总结
    2017-2018-1 20155307 信息安全系统设计基础》实验五 通信协议设计
    2017-2018-1 20155307 《信息安全系统设计基础》第十三周学习总结
    2017-2018-1 20155307 20155335 20155338 实验四 外设驱动程序设计
    2017-2018-12 20155307 《信息安全系统设计基础》第十一周学习总结
    2017-2018-1 20155307 20155319 实验四 木马及远程控制技术
    单点拖拽和多点多拽
    移动端总结
  • 原文地址:https://www.cnblogs.com/ddzj01/p/10907652.html
Copyright © 2011-2022 走看看