安装
-
首先从sourceforge下载最新的安装版本。
-
解压编译
$ tar -zxvf smartmontools-6.4.tar.gz $ cd smartmontools-6.4 $ ./configure
-
若出现
checking for g++... no
问题
原因是缺少C++编译器,在CentOS上使用yum install gc-c++
安装编译器。问题解决参考了这篇博客。
-
make & make install
$ make $ make install
常规用法
-
使用
-i
参数查询硬盘信息,并且查看SMART support是否打开`# smartctl -i /dev/sdb smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-358.el6.x86_64] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Model Family: Seagate xxxxxxx Device Model: xxxxxxxx Serial Number: xxxxxxxxxx LU WWN Device Id: xxxxxxxxxx Firmware Version: SC13 User Capacity: 500,107,862,016 bytes [500 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 4 Local Time is: Wed Jan 20 09:04:20 2016 CST SMART support is: Available - device has SMART capability. SMART support is: Enabled
-
使用
-H
查看健康状态`# smartctl -H /dev/sda smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-358.el6.x86_64] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED
简单的Nagios监控脚本
因为我使用的服务器采用RAID1,因此使用SMARTCTL来检查每个磁盘的状态,一旦有问题就可以提前对问题磁盘进行更换。
#! /bin/sh
SDA=`/usr/sbin/smartctl -H /dev/sda | grep 'test result'|cut -d':' -f 2`
SDB=`/usr/sbin/smartctl -H /dev/sdb | grep 'test result'|cut -d':' -f 2`
OUTPUT=''
if [ "$SDA" = " PASSED" ];then
if [ "$SDB" = " PASSED" ];then
OUTPUT+="OK: SDA is$SDA and SDB is$SDB"
fi
else
OUTPUT+="CRITICAL: SDA is$SDA and SDB is$SDB"
fi
echo $OUTPUT
将上面这段脚本保存为check_disk_health.sh,并保存到Nagios的脚本目录/usr/local/nagios/libexec
因为调用smartctl需要root权限,因此需要在/etc/sudoers
文件中增加一行。
`nagios ALL=(ALL) NOPASSWD:/usr/local/nagios/libexec/check_disk_health.sh`
同时注释掉Defaults requiretty
这一行。
然后在nrpe.cfg
文件中增加check_disk_health命令。
command[check_disk_health]=/usr/bin/sudo /usr/local/nagios/libexec/check_disk_health.sh
最后可以使用chek_nrpe
对命令进行检测。
$ ./check_nrpe -H localhost -c check_disk_health
OK: SDA is PASSED and SDB is PASSED