做为Linux系统工程师,在服务器的维护管理当中,除了对系统进行维护管理之外,最重要的还要对服务器的硬件进行监控,比如服务器Raid状态是否正常(如果Raid卡出问题,会影响数据的读写速度),服务器硬盘是否正常(如果硬盘坏掉,严重的情况会丢失数据),服务器电源是否有故障等。除此之外还要对服务器的CPU,内存,处理器等重要设备的温度进行监控,如果温度超过服务器的临界温度则进行报警通知。
HP的服务器在硬件管理方面提供了自己管理工具hpacucli,通过该工具可以查看HP服务器的RAID信息,服务器硬盘等信息。 1)安装hpacucli工具(下载地址:HP hpacucli管理工具)
[root@monitor~]#rpm-ivhhpacucli-9.40-12.0.x86_64.rpm
2)查看服务器RAID信息,硬盘是否正常。
[root@monitor~]#hpacuclictrlallshowconfig SmartArrayP410iinSlot0(Embedded)(sn:5001438018042FF0) arrayA(SAS,UnusedSpace:0MB) logicaldrive1(279.4GB,RAID1,OK) physicaldrive1I:1:1(port1I:box1:bay1,SAS,300GB,OK) physicaldrive1I:1:2(port1I:box1:bay2,SAS,300GB,OK)
3)通过hpacucli ctrl all show config detail命令可以详细地查看RAID和硬盘的信息。
[root@monitor~]#hpacuclictrlallshowconfigdetail SmartArrayP410iinSlot0(Embedded) BusInterface:PCI Slot:0 SerialNumber:5001438018042FF0 CacheSerialNumber:PBCDH0CRH1FH62 RAID6(ADG)Status:Disabled ControllerStatus:OK ChassisSlot: HardwareRevision:RevC FirmwareVersion:5.14 RebuildPriority:Medium ExpandPriority:Medium SurfaceScanDelay:15secs MonitorandPerformanceDelay:60min ElevatorSort:Enabled DegradedPerformanceOptimization:Disabled InconsistencyRepairPolicy:Disabled PostPromptTimeout:0secs CacheBoardPresent:True CacheStatus:OK AcceleratorRatio:25%Read/75%Write DriveWriteCache:Disabled TotalCacheSize:512MB No-BatteryWriteCache:Disabled CacheBackupPowerSource:Capacitors Battery/CapacitorCount:1 Battery/CapacitorStatus:OK SATANCQSupported:True Array:A InterfaceType:SAS UnusedSpace:0MB Status:OK LogicalDrive:1 Size:279.4GB FaultTolerance:RAID1 Heads:255 SectorsPerTrack:32 Cylinders:65535 StripeSize:128KB Status:OK ArrayAccelerator:Enabled UniqueIdentifier:600508B1001034373220202020200002 DiskName:/dev/cciss/c0d0 MountPoints:/boot99MB LogicalDriveLabel:A00ADBD9PR7AMU1472898D MirrorGroup0: physicaldrive1I:1:1(port1I:box1:bay1,SAS,300GB,OK) MirrorGroup1: physicaldrive1I:1:2(port1I:box1:bay2,SAS,300GB,OK) physicaldrive1I:1:1 Port:1I Box:1 Bay:1 Status:OK DriveType:DataDrive InterfaceType:SAS Size:300GB RotationalSpeed:10000 FirmwareRevision:HPD4 SerialNumber:ECA1PC80GTS31234 Model:HPEG0300FBDSP PHYCount:2 PHYTransferRate:6.0GBPS,Unknown physicaldrive1I:1:2 Port:1I Box:1 Bay:2 Status:OK DriveType:DataDrive InterfaceType:SAS Size:300GB RotationalSpeed:10000 FirmwareRevision:HPD7 SerialNumber:PMX6902D Model:HPEG0300FBDBR PHYCount:2 PHYTransferRate:6.0GBPS,Unknown
HP官方还有一个hpasmcli管理工具,可以很详细查看服务器CPU,内存,处理器,电源等的温度信息。
1)安装hpasmcli工具(下载地址:HP hpasmcli管理工具)
[root@monitor~]#rpm-ivhhp-health-9.40-1602.44.rhel6.x86_64.rpm
2)通过工具hpasmcli可以查看服务器各部件的温度信息,其中Temp表示各部件当前的温度,Threshold表示临界温度,当当前温度超过临界温度的时候就要注意啦。
[root@monitor~]#hpasmcli-s'showtemp' SensorLocationTempThreshold --------------------------- #1AMBIENT23C/73F42C/107F #2CPU#140C/104F82C/179F #3CPU#240C/104F82C/179F #4MEMORY_BD33C/91F87C/188F #5MEMORY_BD33C/91F78C/172F #6MEMORY_BD-87C/188F #7MEMORY_BD32C/89F78C/172F #8MEMORY_BD32C/89F87C/188F #9MEMORY_BD32C/89F78C/172F #10MEMORY_BD-87C/188F #11MEMORY_BD32C/89F78C/172F #12POWER_SUPPLY_BAY33C/91F59C/138F #13POWER_SUPPLY_BAY47C/116F73C/163F #14MEMORY_BD29C/84F72C/161F #15PROCESSOR_ZONE32C/89F73C/163F #16PROCESSOR_ZONE30C/86F64C/147F #17MEMORY_BD28C/82F63C/145F #18PROCESSOR_ZONE39C/102F69C/156F #19SYSTEM_BD35C/95F69C/156F #20SYSTEM_BD38C/100F71C/159F #21SYSTEM_BD44C/111F65C/149F #22SYSTEM_BD45C/113F71C/159F #23SYSTEM_BD39C/102F69C/156F #24SYSTEM_BD47C/116F69C/156F #25SYSTEM_BD35C/95F63C/145F #26SYSTEM_BD45C/113F66C/150F #27SCSI_BACKPLANE_ZONE35C/95F60C/140F #28SYSTEM_BD73C/163F110C/230F
3)通过hpasmcli -s ‘show’查看类似于help的帮助信息,监控的时候要重点关注 DIMM(内存)、FANS(风扇)、POWERSUPPLY(电源模块)、SERVER(系统)、CPU、TEMP(温度)等信息。
[root@monitor~]#hpasmcli-s'show' InvalidArguments SHOWASR SHOWBOOT SHOWDIMM[SPD] SHOWF1 SHOWFANS SHOWHT SHOWIML SHOWIPL SHOWNAME SHOWPORTMAP SHOWPOWERMETER SHOWPOWERSUPPLY SHOWPXE SHOWSERIAL[BIOS|EMBEDDED|VIRTUAL] SHOWSERVER SHOWTEMP SHOWTPM SHOWUID SHOWWOL
4)hpasmcli几种常用的例子。
- 查看内存信息:hpasmcli -s ‘show dimm’|egrep -i ‘module|stat’
- 查看风扇信息:hpasmcli -s ‘show fans’
- 查看硬件温度:hpasmcli -s ‘show temp’
- 查看电源模块:hpasmcli -s ‘show powersupply’
- 查看机器型号,序列号,CPU,内存大小:hpasmcli -s ‘show server’
由于各种服务器的厂商不同,管理工具不同,因此Zabbix对服务器硬件方面没有很详细,全面的解决方案。之前dl528888写过zabbix通过omsa工具监控DEL服务器,也是一种很好的思路,我也借鉴过,这里非常感谢。
Zabbix监控总结起来有两种思路:第一就是server通过agentd方式获取数据,这种方式需要定义UserParameter参数,即KEY。第二就是server通过trapper的方式获取数据,即agentd将数据主动sender给server或者proxy。我这里是通过第二种traper的方式监控的。第一种方式server有时候会取不到数据:
becamenotsupported:Receivedvalue[]isnotsuitableforvaluetype[Numeric(unsigned)]anddatatype[Decimal]
会产生上面的错误。
首先查看我监控的脚本,由于是通过traper的思路进行监控,log_file文件依次定义了要监控服务器的主机名(hostname),监控项key以及监控的值。
[root@monitorscripts]#cathpacuclizabbix.sh #!/bin/sh #createbysfzhang20140517 #ThisscriptsmonitoringHPserver,suchassmartarraystatus,Hardwareinformationandservertemperature。 zabbix_server="*.*.*.*"#IPfromZabbixServerorproxywheredatashouldbesendto. zabbix_sender="/usr/local/zabbix/bin/zabbix_sender" log_file='/tmp/hpacuclizabbix.log'#Inthefiletodefinethemonitorhost,keyandvalue hpacucli='/usr/sbin/hpacucli' options='ctrlallshowconfigdetail' hpacucli_log="/tmp/result.log" PATH=$PATH:/usr/sbin:/sbin ${hpacucli}${options}>${hpacucli_log} Cache_status=`cat${hpacucli_log}|awk'/CacheStatus:/{print$NF}'` Controller_status=`cat${hpacucli_log}|awk'/ControllerStatus:/{print$NF}'` Battery_capacitor_status=`cat${hpacucli_log}|awk'/Battery\/CapacitorStatus:/{print$NF}'` Physicaldrive_status=$(awk-vtotal=`hpacuclictrlslot=0pdallshowstatus|grepphysicaldrive|wc-l`-vnormal=`hpacuclictrlslot=0pdallshowstatus|awk'/physicaldrive/{if($NF=="OK")count+=1}END{printcount}'`'BEGIN{if(total==normal){print"OK"}else{print"NO"}}') Memory_status=$(awk-vtotal=`hpasmcli-s'SHOWDIMM'|grep-i'Status'|wc-l`-vnormal=`hpasmcli-s'SHOWDIMM'|awk'/Status:/{if($NF=="Ok")count+=1}END{printcount}'`'BEGIN{if(total==normal){print"OK"}else{print"NO"}}') Fans_status=$(awk-vtotal=`hpasmcli-s'SHOWFANS'|grep"#"|wc-l`-vnormal=`hpasmcli-s'SHOWFANS'|awk'/#/{if($3=="Yes")count+=1}END{printcount}'`'BEGIN{if(total==normal){print"OK"}else{print"NO"}}') Power_status=$(awk-vtotal=`hpasmcli-s'SHOWPOWERSUPPLY'|grep"Powersupply"|wc-l`-vnormal=`hpasmcli-s'SHOWPOWERSUPPLY'|awk'/Condition:/{if($NF=="Ok")count+=1}END{printcount}'`'BEGIN{if(total==normal){print"OK"}else{print"NO"}}') Processor_status=$(awk-vtotal=`hpasmcli-s'SHOWSERVER'|grep"Processor:"|wc-l`-vnormal=`hpasmcli-s'SHOWSERVER'|awk'/Status/{if($NF=="Ok")count+=1}END{printcount}'`'BEGIN{if(total==normal){print"OK"}else{print"NO"}}') Power_temp_num=$(hpasmcli-s'SHOWTEMP'|awk'/POWER_SUPPLY_BAY/{print$3}'|awk-F"C"'{print$1}'|awk'BEGIN{max=0}{if($1>max)max=$1fi}END{printmax}') Ambient_temp_num=$(hpasmcli-s'SHOWTEMP'|awk'/AMBIENT/{print$3}'|awk-F"C"'{print$1}') Cpu_temp_num=$(hpasmcli-s'SHOWTEMP'|awk'/CPU/{print$3}'|awk-F"C"'{print$1}'|awk'BEGIN{max=0}{if($1>max)max=$1fi}END{printmax}') Memory_temp_num=$(hpasmcli-s'SHOWTEMP'|awk'/MEMORY_BD/{print$3}'|awk-F"C"'{print$1}'|awk'BEGIN{max=0}{if($1>max)max=$1fi}END{printmax}') System_temp_num=$(hpasmcli-s'SHOWTEMP'|awk'/SYSTEM_BD/{print$3}'|awk-F"C"'{print$1}'|awk'BEGIN{max=0}{if($1>max)max=$1fi}END{printmax}') Processor_temp_num=$(hpasmcli-s'SHOWTEMP'|awk'/PROCESSOR_ZONE/{print$3}'|awk-F"C"'{print$1}'|awk'BEGIN{max=0}{if($1>max)max=$1fi}END{printmax}') echo$HOSTNAMEhp_smart_array.cache_status$Cache_status>${log_file} echo$HOSTNAMEhp_smart_array.controller_status$Controller_status>>${log_file} echo$HOSTNAMEhp_smart_array.battery_capacitor_status$Battery_capacitor_status>>${log_file} echo$HOSTNAMEhp_hardware.hpysicaldrive_status$Physicaldrive_status>>${log_file} echo$HOSTNAMEhp_hardware.memory_status$Memory_status>>${log_file} echo$HOSTNAMEhp_hardware.fans_status$Fans_status>>${log_file} echo$HOSTNAMEhp_hardware.power_status$Power_status>>${log_file} echo$HOSTNAMEhp_hardware.processor_status$Processor_status>>${log_file} echo$HOSTNAMEhp_power.temp_num$Power_temp_num>>${log_file} echo$HOSTNAMEhp_ambient.temp_num$Ambient_temp_num>>${log_file} echo$HOSTNAMEhp_cpu.temp_num$Cpu_temp_num>>${log_file} echo$HOSTNAMEhp_memory.temp_num$Memory_temp_num>>${log_file} echo$HOSTNAMEhp_system.temp_num$System_temp_num>>${log_file} echo$HOSTNAMEhp_processor.temp_num$Processor_temp_num>>${log_file} $zabbix_sender-z$zabbix_server-i${log_file}>/tmp/zabbix.temp
最后只需开启crontab,5分钟运行一次。
[root@monitor~]echo"*/5****/etc/zabbix/scripts/hpacuclizabbix.sh">>/var/spool/cron/root
查看zabbix监控HP服务器硬件KEY的定义,数据的收集都是通过trapper的方式收集的。
查看zabbix监控HP服务器硬件triggers定义,其中nodata(600)这个trigger是为了防止被监控端数据采集出问题而设置的,比如crontab不正常,脚本被误删除等等。如果server10分钟之内收集不到被监控端的数据就会报警。
在zabbix server lastdata查看zabbix server 通过trapper收到的数据。
查看被监控端服务器各部件温度信息。
当被监控端出问题时Zabbix会及时报警。
说明:Zabbix监控HP服务器硬件操作方法:
1)在HP服务器上面安装hpacucli和hpasmcli管理工具。
2)修改hpacuclizabbix.sh脚本的zabbix_server ip地址,指定为自己的server或者proxy的地址,并把该脚本添加到crontab。
3)导入附件中的模板,Link到要监控的主机上面即可。
4)如果有其它问题,欢迎多多交流。