MegaRAIDの状況をSNMPで監視する
ウチには、今Dellのサーバがあるんですが、たいていMegaRAIDでRAID組んでます。で、RAIDの状況を知りたいなぁ〜と思ってイロイロ探してみると、SNMPでこいつの情報を取れる事が分かったので、メモです。
とりあえず、DellのLinuxページ(http://linux.dell.com/storage.shtml)からManagementUtilityをダウンロードしてきます。現時点での最新版は、perc-cerc-apps-6.03-A06.tar.gz という事みたいですね。
ダウンロードしたら、フォルダを作って解凍した方がいいです。(僕は普通にtar xzf 〜だけでやって、ファイルがどばっとカレントディレクトリにできてちょっとイヤーンな気分でした。)
[hatena@hatena work]$ mkdir perc-cerc-apps-6.03-A06 [hatena@hatena work]$ tar xzf perc-cerc-apps-6.03-A06.tar.gz -C perc-cerc-apps-6.03-A06 [hatena@hatena work]$ ls perc-cerc-apps-6.03-A06 Dellmgr-5.31-0.i386.rpm Megamon-4.0-0a.i386.rpm linflash-3.01-0.i386.rpm percsnmp-4.09-1.i386.rpm percsnmp-changes.txt Dellmgr-changes.txt Megamon-changes.txt linflash-changes.txt percsnmp-4.09-1.tar.gz readme.txt
こんな感じで、管理ツール群が出てきます。今回必要なのは、percsnmpのみになります。RPMパッケージなので、インストールは簡単です。
[hatena@hatena work]$ su Password: [hatena@hatena work]# rpm -Uvh perc-cerc-apps-6.03-A06/percsnmp-4.09-1.i386.rpm Preparing... ########################################### [100%] 1:percsnmp ########################################### [100%] [hatena@hatena work]# ln -s /etc/percsnmp/perc.mib /usr/share/snmp/mibs/
最後の一行は、SNMPで表示したときに、MID-IDじゃなくて、名前で表示してくれるようにします。しかしながら、このファイルは若干バグがあって、正しく動かない部分があります。787行目と799行目、not_availableと、fastest_possibleの_(アンダーバー)がダメみたいなので、-(ハイフン)にしてやると動きます。
perc.mibを編集したら、snmpd.confを修正して、追加した分がコミュニティから参照できるようにします。完了したら、SNMPDとPERCSNMPDを起動します。
[hatena@hatena work]# /etc/init.d/snmpd start snmpd を起動中: [ OK ] [hatena@hatena work]# /etc/init.d/percsnmpd start percsnmpd を起動中: [ OK ] [hatena@hatena work]# snmpwalk -m all -v 1 localhost -c public .1.3.6.1.4.1.3582 RAID-Adapter-MIB::adpAdapterNumber.0 = INTEGER: 0 RAID-Adapter-MIB::numLogicalDrives.0 = INTEGER: 1 RAID-Adapter-MIB::firmwareVersion.0 = STRING: "521X" RAID-Adapter-MIB::biosVersion.0 = STRING: "H430" RAID-Adapter-MIB::dramSizeInMB.0 = INTEGER: 256 RAID-Adapter-MIB::rebuildRateInPercent.0 = INTEGER: 30 RAID-Adapter-MIB::flushInterval.0 = INTEGER: foursec(4) RAID-Adapter-MIB::maxConcurrentCmds.0 = INTEGER: 254 RAID-Adapter-MIB::spinupDelay.0 = INTEGER: 2 RAID-Adapter-MIB::spinupCount.0 = INTEGER: 6 RAID-Adapter-MIB::adpIOReadsPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::adpIOWritesPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::adpReadKBsPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::adpWriteKBsPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::adpReadFailuresPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::adpWriteFailuresPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::scanChannels.0 = INTEGER: scanover(1) RAID-Adapter-MIB::adpBasePort.0 = Wrong Type (should be OCTET STRING): INTEGER: 0 RAID-Adapter-MIB::numSCSIChannels.0 = INTEGER: 2 RAID-Adapter-MIB::numFCLoops.0 = INTEGER: 0 RAID-Adapter-MIB::subsystemId.0 = INTEGER: 365 RAID-Adapter-MIB::subsystemVendorId.0 = INTEGER: 4136 RAID-Adapter-MIB::productName.0 = STRING: "PERC 4e/Di" RAID-Adapter-MIB::ldAdapterNumber.0.0 = INTEGER: 0 RAID-Adapter-MIB::logicalDriveNumber.0.0 = INTEGER: 0 RAID-Adapter-MIB::status.0.0 = INTEGER: optimal(2) RAID-Adapter-MIB::sizeInMB.0.0 = INTEGER: 139760 RAID-Adapter-MIB::raidLevel.0.0 = INTEGER: raid5(5) RAID-Adapter-MIB::stripeSize.0.0 = INTEGER: sixtyfourKB(64) RAID-Adapter-MIB::readPolicy.0.0 = INTEGER: adaptive(2) RAID-Adapter-MIB::writePolicy.0.0 = INTEGER: writeback(1) RAID-Adapter-MIB::cachePolicy.0.0 = INTEGER: directio(1) RAID-Adapter-MIB::enquiryString.0.0 = STRING: "Error: Not Responding " RAID-Adapter-MIB::numberOfSpans.0.0 = INTEGER: 1 RAID-Adapter-MIB::numberOfStripes.0.0 = INTEGER: 3 RAID-Adapter-MIB::checkConsistencyOrInitializeProgress.0.0 = STRING: "not in prog" RAID-Adapter-MIB::ldIOReadsPerSec.0.0 = INTEGER: -1 RAID-Adapter-MIB::ldIOWritesPerSec.0.0 = INTEGER: -1 RAID-Adapter-MIB::ldReadKBsPerSec.0.0 = INTEGER: -1 RAID-Adapter-MIB::ldWriteKBsPerSec.0.0 = INTEGER: -1 RAID-Adapter-MIB::ldReadFailuresPerSec.0.0 = INTEGER: -1 RAID-Adapter-MIB::ldWriteFailuresPerSec.0.0 = INTEGER: -1 RAID-Adapter-MIB::physAdapterNumber.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::physAdapterNumber.0.0.1 = INTEGER: 0 RAID-Adapter-MIB::physAdapterNumber.0.0.2 = INTEGER: 0 RAID-Adapter-MIB::physAdapterNumber.0.0.3 = INTEGER: 0 RAID-Adapter-MIB::physAdapterNumber.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::physChannel.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::physChannel.0.0.1 = INTEGER: 0 RAID-Adapter-MIB::physChannel.0.0.2 = INTEGER: 0 RAID-Adapter-MIB::physChannel.0.0.3 = INTEGER: 0 RAID-Adapter-MIB::physChannel.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::targetID.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::targetID.0.0.1 = INTEGER: 1 RAID-Adapter-MIB::targetID.0.0.2 = INTEGER: 2 RAID-Adapter-MIB::targetID.0.0.3 = INTEGER: 3 RAID-Adapter-MIB::targetID.0.0.6 = INTEGER: 6 RAID-Adapter-MIB::state.0.0.0 = INTEGER: online(3) RAID-Adapter-MIB::state.0.0.1 = INTEGER: online(3) RAID-Adapter-MIB::state.0.0.2 = INTEGER: online(3) RAID-Adapter-MIB::state.0.0.3 = INTEGER: hotspare(6) RAID-Adapter-MIB::state.0.0.6 = INTEGER: nondisk(20) RAID-Adapter-MIB::arrayPosition.0.0.0 = STRING: "A0-0" RAID-Adapter-MIB::arrayPosition.0.0.1 = STRING: "A0-1" RAID-Adapter-MIB::arrayPosition.0.0.2 = STRING: "A0-2" RAID-Adapter-MIB::arrayPosition.0.0.3 = STRING: "not configured" RAID-Adapter-MIB::arrayPosition.0.0.6 = STRING: "not configured" RAID-Adapter-MIB::sizeMB.0.0.0 = INTEGER: 70007 RAID-Adapter-MIB::sizeMB.0.0.1 = INTEGER: 70007 RAID-Adapter-MIB::sizeMB.0.0.2 = INTEGER: 70007 RAID-Adapter-MIB::sizeMB.0.0.3 = INTEGER: 70007 RAID-Adapter-MIB::sizeMB.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::deviceType.0.0.0 = INTEGER: disk(0) RAID-Adapter-MIB::deviceType.0.0.1 = INTEGER: disk(0) RAID-Adapter-MIB::deviceType.0.0.2 = INTEGER: disk(0) RAID-Adapter-MIB::deviceType.0.0.3 = INTEGER: disk(0) RAID-Adapter-MIB::deviceType.0.0.6 = INTEGER: processor(3) RAID-Adapter-MIB::inquiryString.0.0.0 = STRING: "SEAGATE ST373207LC D703" RAID-Adapter-MIB::inquiryString.0.0.1 = STRING: "SEAGATE ST373207LC D703" RAID-Adapter-MIB::inquiryString.0.0.2 = STRING: "SEAGATE ST373207LC D703" RAID-Adapter-MIB::inquiryString.0.0.3 = STRING: "SEAGATE ST373207LC D703" RAID-Adapter-MIB::inquiryString.0.0.6 = STRING: "PE/PV 1x6 SCSI BP 1.0 " RAID-Adapter-MIB::scsiLevel.0.0.0 = INTEGER: scsi3(3) RAID-Adapter-MIB::scsiLevel.0.0.1 = INTEGER: scsi3(3) RAID-Adapter-MIB::scsiLevel.0.0.2 = INTEGER: scsi3(3) RAID-Adapter-MIB::scsiLevel.0.0.3 = INTEGER: scsi3(3) RAID-Adapter-MIB::scsiLevel.0.0.6 = INTEGER: scsi2(2) RAID-Adapter-MIB::maximumQueueDepth.0.0.0 = INTEGER: 32 RAID-Adapter-MIB::maximumQueueDepth.0.0.1 = INTEGER: 32 RAID-Adapter-MIB::maximumQueueDepth.0.0.2 = INTEGER: 32 RAID-Adapter-MIB::maximumQueueDepth.0.0.3 = INTEGER: 32 RAID-Adapter-MIB::maximumQueueDepth.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::rebuildProgress.0.0.0 = STRING: "not in prog" RAID-Adapter-MIB::rebuildProgress.0.0.1 = STRING: "not in prog" RAID-Adapter-MIB::rebuildProgress.0.0.2 = STRING: "not in prog" RAID-Adapter-MIB::rebuildProgress.0.0.3 = STRING: "not in prog" RAID-Adapter-MIB::rebuildProgress.0.0.6 = STRING: "not in prog" RAID-Adapter-MIB::mediumErrors.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::mediumErrors.0.0.1 = INTEGER: 0 RAID-Adapter-MIB::mediumErrors.0.0.2 = INTEGER: 0 RAID-Adapter-MIB::mediumErrors.0.0.3 = INTEGER: 0 RAID-Adapter-MIB::mediumErrors.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::physSlotStatus.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::physSlotStatus.0.0.1 = INTEGER: 0 RAID-Adapter-MIB::physSlotStatus.0.0.2 = INTEGER: 0 RAID-Adapter-MIB::physSlotStatus.0.0.3 = INTEGER: 0 RAID-Adapter-MIB::physSlotStatus.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::physSlotNumber.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::physSlotNumber.0.0.1 = INTEGER: 0 RAID-Adapter-MIB::physSlotNumber.0.0.2 = INTEGER: 0 RAID-Adapter-MIB::physSlotNumber.0.0.3 = INTEGER: 0 RAID-Adapter-MIB::physSlotNumber.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::otherErrors.0.0.0 = INTEGER: 0 RAID-Adapter-MIB::otherErrors.0.0.1 = INTEGER: 0 RAID-Adapter-MIB::otherErrors.0.0.2 = INTEGER: 0 RAID-Adapter-MIB::otherErrors.0.0.3 = INTEGER: 0 RAID-Adapter-MIB::otherErrors.0.0.6 = INTEGER: 0 RAID-Adapter-MIB::writeCache.0.0.0 = INTEGER: not-available(0) RAID-Adapter-MIB::writeCache.0.0.1 = INTEGER: not-available(0) RAID-Adapter-MIB::writeCache.0.0.2 = INTEGER: not-available(0) RAID-Adapter-MIB::writeCache.0.0.3 = INTEGER: not-available(0) RAID-Adapter-MIB::writeCache.0.0.6 = INTEGER: not-available(0) RAID-Adapter-MIB::transferSpeed.0.0.0 = INTEGER: asynchronous(1) RAID-Adapter-MIB::transferSpeed.0.0.1 = INTEGER: asynchronous(1) RAID-Adapter-MIB::transferSpeed.0.0.2 = INTEGER: asynchronous(1) RAID-Adapter-MIB::transferSpeed.0.0.3 = INTEGER: asynchronous(1) RAID-Adapter-MIB::transferSpeed.0.0.6 = INTEGER: asynchronous(1) RAID-Adapter-MIB::datatransferWidth.0.0.0 = INTEGER: wide(0) RAID-Adapter-MIB::datatransferWidth.0.0.1 = INTEGER: wide(0) RAID-Adapter-MIB::datatransferWidth.0.0.2 = INTEGER: wide(0) RAID-Adapter-MIB::datatransferWidth.0.0.3 = INTEGER: wide(0) RAID-Adapter-MIB::datatransferWidth.0.0.6 = INTEGER: wide(0) RAID-Adapter-MIB::chanAdapterNumber.0.0 = INTEGER: 0 RAID-Adapter-MIB::chanAdapterNumber.0.1 = INTEGER: 0 RAID-Adapter-MIB::channel.0.0 = INTEGER: 0 RAID-Adapter-MIB::channel.0.1 = INTEGER: 1 RAID-Adapter-MIB::terminations.0.0 = INTEGER: wideterminations(2) RAID-Adapter-MIB::terminations.0.1 = INTEGER: wideterminations(2) RAID-Adapter-MIB::channelStatus.0.0 = INTEGER: active(2) RAID-Adapter-MIB::channelStatus.0.1 = INTEGER: active(2) RAID-Adapter-MIB::channelType.0.0 = INTEGER: RAID(0) RAID-Adapter-MIB::channelType.0.1 = INTEGER: SCSI(1) RAID-Adapter-MIB::ioReadsPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::ioWritesPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::readKBsPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::writeKBsPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::readFailuresPerSec.0 = INTEGER: -1 RAID-Adapter-MIB::writeFailuresPerSec.0 = INTEGER: -1 End of MIB [hatena@hatena work]#
こんな感じで表示できれば完成です。後は、リビルドやエラーが起きてないか監視すれば、サーバーのそばにいなくても、RAIDのディスク状況が分かって安心できるというものです。
参考:
SNMP経由でDell PowerEdge 1550 の RAIDの監視を行なう(http://ouchi.nahi.to/nazo/linux/megaraid/usage.html)
Percsnmpd and check megaraid - Gentoo Linux Wiki(http://gentoo-wiki.com/index.php?title=Percsnmpd_and_check_megaraid&redirect=no)
==追記 2010-03-29==
新しいバージョン発見
http://support.us.dell.com/support/downloads/download.aspx?c=us&l=en&s=gen&releaseid=R81687&formatcnt=0&libid=0&typeid=-1&dateid=-1&formatid=-1&fileid=107226
snmpwalkコマンドで動作確認できない場合、snmpd.conf/hosts.allow を再チェックすること。