nagios监控linux磁盘io的bug

nagios监控linux磁盘io脚本的一个bug

 今天,有人说oracle数据库慢,来问我是不是oracle服务器资源利用高,我说不会啊,如果服务器性能有问题,nagios早就会给我报警了。
 于是,我就登录linux服务器看一下top和free -m,发现cpu和内存一点都不高。然后又用iostat -x 1看,我去,util%都干到100%,iowait 47%了。说明磁盘io很忙。
  可是,nagios监控的磁盘io为啥没有告警呢。于是我手工运行nagios的脚本:
root@ubnginx01 tmp]# /etc/nagios/libexec/ check_iostat -w 6 -c 10
IOSTAT OK - user 0.50 nice 0.00 sys 0.00 iowait 0.00 idle 0.00  | iowait= 0.30%;; idle=0.00%;; user=0.50%;; nice=0.00%;; sys=0.00%;;
 
   可以看到,check_iostat脚本监控到的iowait值是0.03,而实际磁盘iowait是80%。
   我已经断定是nagios的 check_iostat脚本出现问题了。
    在网上我也找了很多 check_iostat脚本,都没什么效果。很绝望。

    还是自己看看 check_iostat里面是怎么写的吧,虽然这个脚本是perl写的,但是能顺藤摸瓜。看了 check_iostat脚本后,知道脚本里面是通过命令iostat --c取值的。

[root@ubnginx01 tmp]# iostat  -c
Linux 2.6.32-431.el6.x86_64 (ubnginx01) 11/30/2016 _x86_64_ (4 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.16    0.00    0.10    0.96    0.00   98.78

      通过和iostat -c 1对比发现, iostat -c 1的第一次取的ioswait值永远不准,第二次取的值才准:
      root@ubnginx01 ~]# iostat -c 1
Linux 2.6.32-431.el6.x86_64 (ubnginx01)     11/30/2016     _x86_64_    (4 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                    0.16    0.00    0.10     0.96    0.00   98.78
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                    0.25    0.00    3.27   46.73    0.00   49.75
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                    0.25    0.00    2.52   47.36    0.00   49.87
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                     0.50    0.00    2.76   46.98    0.00   49.75
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                     0.50    0.00    4.77   48.49    0.00   46.23
 
       通过上面可以看到,第一次iostat取的值是0.96,以后取值都是46左右。

      找到原因后,对nagios的 check_iostat进行一下修改,即每次不取iostat -c 1的第一次值,而是取第二次的值:

          [root@ubnginx01 tmp]# cat /etc/nagios/libexec/check_iostat |grep \$iostat
          my $iostat = '';
  my $output = `$iostat -c 1 2 |tail -2`;
$iostat = $np->opts->get('iostat');
$iostat = 'iostat';

        也就是把 my $output的值改成上述标红字样。



       再次运行 check_iostat脚本,iowait就会有很大的值了(我同时在服务器上做了dd操作),naigos也就会发邮件告警了:
          [root@ubnginx01 ~]# /etc/nagios/libexec/check_iostat -w 6 -c 10
          IOSTAT CRITICAL - user 0.25 nice 0.00 sys 2.77 iowait 47.10 idle 0.00  | iowait=47.10%;; idle=0.00%;; user=0.25%;; nice=0.00%;; sys=2.77%;;

       完!





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-2129391/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28916011/viewspace-2129391/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值