背景:单位在IDC机房选用了DELL和HP两种类型的服务器。对监控服务器硬件特别是RAID方面的信息,dell可以使用自带的OMSA程序进程监控。可是HP没有此方面的监控,服务器中的磁盘是最容易出现问题的,个人研究了多日发现可以使用下面的方式进行对HP服务器监控RAID。
使用nagios监控HP服务器的RAID:
前提本地服务器已经安装好nagios-plugin和nrpe模块,如果没有安装可以搜索一下,相关教程有很多,属于nagios的使用。这里只说一下如何监控raid.
当前使用的操作系统为centos5.1
1。监控RAID:
(1)下载安装hpasmcli,此模块用来检测HP服务器的raid以及磁盘情况:
#rpm -ivh hpacucli-9.40-12.0.x86_64.rpm
(2)安装完成后,默认生成的可执行文件为:
/usr/sbin/hpacucli
使用以下命令可以对服务器硬盘和RAID进行检测:
$ sudo /usr/sbin/hpacucli ctrl slot=0 pd all show status
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, 300 GB): OK
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, 300 GB): OK
physicaldrive 1I:1:3 (port 1I:box 1:bay 3, 300 GB): OK
$ sudo /usr/sbin/hpacucli ctrl slot=0 logicaldrive all show|grep RAID
logicaldrive 1 (558.7 GB, RAID 5, OK)
(3)编辑脚本,使nrpe可以调用:
#!/bin/bash
#First create date:2016/01/07
#Author:kunka
#定义nagios返回状态
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
i=1
#设置变量
DISK_COM=$(sudo /usr/sbin/hpacucli ctrl slot=0 pd all show status|awk '{print $9}')
DISK_ERR=$(sudo /usr/sbin/hpacucli ctrl slot=0 pd all show status|grep -v OK)
DISK_RAID=$(sudo /usr/sbin/hpacucli ctrl slot=0 logicaldrive all show|grep RAID)
if [ $? -eq 0 ];then
for OK in $DISK_COM
do
if [ $OK = 'OK' ];then
i=$(($i+1))
else
echo "Warning:" $DISK_ERR,$DISK_RAID
exit $STATE_CRITICAL
fi
done
echo "OK-RAID:" $DISK_RAID
exit $STATE_OK
else
echo 'Unkonwn! hpacucli can not to exec.'
exit $STATE_UNKNOWN
fi
(4)由于nrpe一般都设置为nagios用户执行,因此需要使用sudo权限,修改/etc/sudoers文件:
#vim /etc/sudoers
Defaults requiretty --注释掉
nagios ALL=NOPASSWD:/usr/sbin/hpacucli
:wq
保存退出
(5)配置nrpe文件:
将上面的脚本复制到usr/local/nagios/libexec/目录下,然后编辑
#vim nrep.cfg
command[check_raid]=/usr/local/nagios/libexec/check_raid.sh
启动nrpe:
#sudo /usr/local/nagios/bin/nrpe -d /usr/local/nagios/etc/nrpe.cfg
(6)配置nagios文件:
1)添加主机文件
2)修改nagios.cfg文件
3) 检查nagios配置文件
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
3)重启nagios服务