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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 磁碟IO效能監控
- 15. 監控磁碟IO使用率
- Nagios+Centreon監控系統簡介iOS
- Cacti+Nagios監控平臺完美整合iOS
- 使用Nagios打造專業的業務狀態監控iOS
- 在Linux中,如何進行磁碟效能監控?Linux
- 簡述Linux磁碟IOLinux
- 監控系統:深度對比Zabbix、Nagios、Pandora FMSiOS
- 【shell】磁碟監控指令碼指令碼
- zabbix、cacti、nagios,伺服器監控還有更好的選擇嗎?iOS伺服器
- Java後端分散式系統的服務監控:Zabbix與NagiosJava後端分散式iOS
- Linux中監控磁碟分割槽及使用情況的命令有哪些?Linux
- Linux中監控磁碟分割槽和使用情況的幾個工具Linux
- RabbitMQ - 記憶體磁碟監控MQ記憶體
- Linux 監控Linux
- 監控磁碟使用率的shell指令碼指令碼
- 5. 監控磁碟使用率
- Linux下針對伺服器網路卡流量和磁碟的監控指令碼Linux伺服器指令碼
- 在 Linux 中如何使用 iotop 和 iostat 監控磁碟 I/O 活動?LinuxiOS
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- 檔案監控效能問題【BUG】
- 如何監測 Linux 的磁碟 I/O 效能Linux
- IO實時監控命令iostat詳解iOS
- Linux 效能監控工具Linux
- linux監控工具auditLinux
- Linux 查詢佔用磁碟IO讀寫很高的程式方法Linux
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼
- Linux 流量監控工具 iftopLinux
- linux監控平臺搭建Linux
- Linux 系統監控指南Linux
- 記憶體與IO,磁碟IO,網路IO記憶體
- jvisualvm遠端監控Linux下的tomcatLVMLinuxTomcat
- 幾個常用的linux效能監控命令Linux
- Linux常用的監控軟體介紹!Linux
- linux下cacti監控平臺的搭建Linux
- 用於自動監控磁碟使用情況的 Shell 指令碼指令碼
- MySQL 磁碟 IO 過高MySql
- linux系統 物理硬碟監控Linux硬碟
- Linux程式管理與效能監控Linux