×

zabbix 硬件 | dell服务器硬件监控

96
_简_述_
2016.10.18 02:43* 字数 495

笔者在维护n多dell服务器期间经常遇到这样的问题:

  • 服务经常不明原因的挂掉
  • 服务器不明原因的重启
  • 磁盘突然无法读写


    硬盘故障

    经过多次的排查解决,基本上是由于硬盘损坏、cpu散热故障造成的重启。如果可以做到早知早预防,可以减少故障几率。排查时也有了一定的依据。


1.安装dell硬件监控工具-OMSA

#安装dell的yum源(8.2版本以上会出现问题)
wget -q -O - http://linux.dell.com/repo/hardware/DSU_15.12.00/bootstrap.cgi | bash
#最小化安装omsa
yum install -y srvadmin-base srvadmin-storageservices
#做软连接
ln -s /opt/dell/srvadmin/sbin/omreport /usr/bin/omreport
ln -s /opt/dell/srvadmin/sbin/omconfig /usr/bin/omconfig
#启动omsa
/etc/init.d/dataeng start
#加入到开机启动
chkconfig dataeng on
#清理yum源文件
rm -rf /etc/yum.repos.d/dell-*

2.dell硬件监控工具OMSA常用命令

#命令可以查看当前系统中安装的软件和硬件组件的综合摘要。
omreport system summary
#CMOS电池状态
omreport chassis batteries
#风扇状态
omreport chassis fans
#内存状态
omreport chassis memory
#网卡状态
omreport chassis nics
#CPU状态
omreport chassis processors
#温度状态
omreport chassis temps
#硬盘状态
omreport storage pdisk controller=0 
#电源状态
omreport chassis pwrsupplies
#raid 状态
omreport storage vdisk controller=0

3.zabbix 自定义key脚本

  • 在被监控机上配置zabbix 自定义key文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/hardware

#follow is monitor hardware
#状态1表示正常,状态0表示异常 
UserParameter=hardware_battery,omreport chassis batteries|awk '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'
UserParameter=hardware_fan_health,awk -vhardware_fan_number=`omreport chassis fans|grep -c "^Index"` -vhardware_fan=`omreport chassis fans|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_fan_number==hardware_fan) {print 1} else {print 0}}'
UserParameter=hardware_memory_health,awk -vhardware_memory=`omreport chassis memory|awk '/^Health/{print $NF}'` 'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'
UserParameter=hardware_nic_health,awk -vhardware_nic_number=`omreport chassis nics |grep -c "Interface Name"` -vhardware_nic=`omreport chassis nics |awk '/^Connection Status/{print $NF}'|wc -l` 'BEGIN{if(hardware_nic_number==hardware_nic) {print 1} else {print 0}}'
UserParameter=hardware_cpu,omreport chassis processors|awk '/^Health/{if($NF=="Ok") {print 1} else {print 0}}'
UserParameter=hardware_power_health,awk -vhardware_power_number=`omreport chassis pwrsupplies|grep -c "Index"` -vhardware_power=`omreport chassis pwrsupplies|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_power_number==hardware_power) {print 1} else {print 0}}'
UserParameter=hardware_temp,omreport chassis temps|awk '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'|head -n 1
UserParameter=hardware_physics_health,awk -vhardware_physics_disk_number=`omreport storage pdisk controller=0|grep -c "^ID"` -vhardware_physics_disk=`omreport storage pdisk controller=0|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk) {print 1} else {print 0}}'
UserParameter=hardware_virtual_health,awk -vhardware_virtual_disk_number=`omreport storage vdisk controller=0|grep -c "^ID"` -vhardware_virtual_disk=`omreport storage vdisk controller=0|awk '/^Status/{if($NF=="Ok") count+=1}END{print count}'` 'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk) {print 1} else {print 0}}'

  • 重启zabbix agent
/etc/init.d/zabbix_agentd restart
  • 在zabbix server 上进行测试
#在server 上执找到自己的zabbix_
/usr/local/zabbix/bin/zabbix_get -s 被监控ip -k 'zabbix key'
#比如我的被监控机器是192.168.1.110
/usr/local/zabbix/bin/zabbix_get -s 192.168.1.110 -k 'hardware_battery'

4.自定义或者导入模板

在文章的最后我会把导出的xml文件贴出来,自己也可以直接根据自定义key写模板。
这里我只监控了,CPU处理器状态、Raid状态、内存状态、物理硬盘状态、网卡状态


zabbix 模板截图
硬件监控图形

5.批量部署OMSA

由于dell官网下载工具实在是慢,有没有下载一次就可以直接用的方法呢,这里给大家介绍个思路

#下载yum只下载不安装工具
yum install yum-downloadonly
#下载OMSA rpm包
yum install --downloadonly srvadmin-all
#进入到保存包的路径下,将带有dell字样文件夹打包放到其他机器,就不用再下载了
cd /var/cache/yum/x86_64/6
#接下来执行第一步就很快安装完成了

6.常见问题

有时,使用omreport时,会出现这个问题是很讨厌的

$ omreport chassis memory
Memory Information
Error : Memory object not found

我们使用了omreport来做监控,但是却无法获得对应的值。这个时候,我们可以首先尝试

/etc/init.d/dataeng restart

看一下是否已经解决了
如果还不行的话,那么就是信号器的使用到达了上限了。可以通过以下方法来查看

#查看上限
$ ipcs -sl
#查看当前使用值
$ ipcs -us

cat /proc/sys/kernel/sem

来确定是要调整哪个数据值

sysctl -w kernel.sem="250 32000 100 256"

同时在sysctl.conf加入这行点击(此处)折叠或打开

echo "kernel.sem=250 32000 100 256" >> /etc/sysctl.conf

后话:笔者会定期巡检机房,所以在去机房前会生成一个硬件状态报表(当然出现在报表里的不一定是坏了,有的是即将坏掉),这是CMDB的一个小功能。

硬件状态报表

附: zabbix 硬件监控模板

GitHub 模板下载

zabbix 使用技巧
Web note ad 1