Observium_CE/includes/discovery/sensors/lsi-megaraid-sas-mib.inc.php

212 lines
8.0 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage discovery
* @copyright (C) Adam Armstrong
*
*/
// LSI-MegaRAID-SAS-MIB::temperatureROC.0 = INTEGER: -1
// LSI-MegaRAID-SAS-MIB::temperatureCtrl.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::tempSensorStatus.0 = INTEGER: status-ok(2)
// LSI-MegaRAID-SAS-MIB::enclosureTemperature.0 = INTEGER: 48
// BBU temperature. WTF @ (Normal) string, LSI.
// LSI-MegaRAID-SAS-MIB::temperature.0 = STRING: "35 (Normal)"
//echo('physicalDriveTable ');
//$cache['megaraid']['pd'] = snmpwalk_cache_oid($device, 'physicalDriveTable', array(), 'LSI-MegaRAID-SAS-MIB');
echo('enclosureTable ');
$cache['megaraid']['encl'] = snmpwalk_cache_oid($device, 'enclosureTable', [], 'LSI-MegaRAID-SAS-MIB');
/*
FIXME
[6] => Array
(
[pdIndex] => 8
[physDevID] => 16
[mediaErrCount] => 0
[otherErrCount] => 0
[predFailCount] => 0
-> raid monitoring
[pdState] => 24
_> state sensor: lsi-megaraid-sas-pd-state
[enclDeviceId] => 9
[enclIndex] => 2
[slotNumber] => 4
[pdVendorID] => FUJITSU
[pdProductID] => MBA3147RC
)
*/
// Fix up enclosure indexes
foreach ($cache['megaraid']['encl'] as $oldindex => $data) {
$cache['megaraid']['enclosure'][$data['enclosureIndex']] = $data;
}
// Physical disk temperature and state
//
// LSI-MegaRAID-SAS-MIB::pdVendorID.0 = STRING: "FUJITSU "
// LSI-MegaRAID-SAS-MIB::pdProductID.0 = STRING: "MBA3300RC "
// LSI-MegaRAID-SAS-MIB::pdTemperature.0 = INTEGER: 36
// LSI-MegaRAID-SAS-MIB::slotNumber.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::enclDeviceId.0 = INTEGER: 8
foreach ($cache['megaraid']['pd'] as $index => $pd) {
$encl = trim(trim($cache['megaraid']['enclosure'][$pd['enclIndex']]['vendorID'], '.') . ' ' . trim($cache['megaraid']['enclosure'][$pd['enclIndex']]['productID'], '.'));
if ($encl == '') {
$encl = 'Enclosure';
} // Static string if no enclosure vendor/product ID
$descr = $encl . ' (' . $pd['enclIndex'] . ') Slot ' . $pd['slotNumber'] . ': ' . $pd['pdVendorID'] . ' ' . $pd['pdProductID'];
$value = $pd['pdTemperature'];
$oid = ".1.3.6.1.4.1.3582.4.1.4.2.1.2.1.36.$index";
if ($value != '') {
//discover_sensor('temperature', $device, $oid, "pdTemperature.$index", 'lsi-megaraid-sas-mib', $descr, 1, $value);
}
$value = $pd['pdState'];
$oid = ".1.3.6.1.4.1.3582.4.1.4.2.1.2.1.10.$index";
if ($value !== '') {
//discover_status($device, $oid, "pdState.$index", 'lsi-megaraid-sas-pd-state', $descr, $value);
}
}
// Enclosure power supplies
// LSI-MegaRAID-SAS-MIB::powerSupplyID.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::powerSupplyID.1 = INTEGER: 1
// LSI-MegaRAID-SAS-MIB::enclosureId-EPST.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::enclosureId-EPST.1 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::powerSupplyStatus.0 = INTEGER: status-ok(2)
// LSI-MegaRAID-SAS-MIB::powerSupplyStatus.1 = INTEGER: status-ok(2)
echo(' enclosurePowerSupplyTable ');
$cache['megaraid']['psu'] = snmpwalk_cache_oid($device, 'enclosurePowerSupplyTable', [], 'LSI-MegaRAID-SAS-MIB');
foreach ($cache['megaraid']['psu'] as $index => $psu) {
$encl = trim(trim($cache['megaraid']['encl'][$psu['enclosureId-EPST']]['vendorID'], '.') . ' ' . trim($cache['megaraid']['encl'][$psu['enclosureId-EPST']]['productID'], '.'));
if ($encl == '') {
$encl = 'Enclosure (' . $cache['megaraid']['encl'][$psu['enclosureId-EPST']]['enclosureIndex'] . ')'; // Static string if no vendor/product ID for enclosure
} else {
$encl .= ' (' . $cache['megaraid']['encl'][$psu['enclosureId-EPST']]['enclosureIndex'] . ')';
}
$descr = $encl . ' Power Supply ' . (++$lsi_counter['psu'][$psu['enclosureId-EPST']]);
$value = $psu['powerSupplyStatus'];
$oid = ".1.3.6.1.4.1.3582.4.1.5.5.1.3.$index";
discover_status($device, $oid, "powerSupplyStatus.$index", 'lsi-megaraid-sas-sensor-state', $descr, $value);
}
// Enclosure temperature sensors
// LSI-MegaRAID-SAS-MIB::tempSensorID.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::tempSensorID.1 = INTEGER: 1
// LSI-MegaRAID-SAS-MIB::tempSensorID.2 = INTEGER: 2
// LSI-MegaRAID-SAS-MIB::enclosureId-ETST.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::enclosureId-ETST.1 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::enclosureId-ETST.2 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::tempSensorStatus.0 = INTEGER: status-ok(2)
// LSI-MegaRAID-SAS-MIB::tempSensorStatus.1 = INTEGER: status-ok(2)
// LSI-MegaRAID-SAS-MIB::tempSensorStatus.2 = INTEGER: status-ok(2)
// LSI-MegaRAID-SAS-MIB::enclosureTemperature.0 = INTEGER: 26
// LSI-MegaRAID-SAS-MIB::enclosureTemperature.1 = INTEGER: 22
// LSI-MegaRAID-SAS-MIB::enclosureTemperature.2 = INTEGER: 211
echo(' enclosureTempSensorTable ');
$cache['megaraid']['temp'] = snmpwalk_cache_oid($device, 'enclosureTempSensorTable', [], 'LSI-MegaRAID-SAS-MIB');
foreach ($cache['megaraid']['temp'] as $index => $temp) {
$encl = trim(trim($cache['megaraid']['encl'][$temp['enclosureId-ETST']]['vendorID'], '.') . ' ' . trim($cache['megaraid']['encl'][$temp['enclosureId-ETST']]['productID'], '.'));
if ($encl == '') {
$encl = 'Enclosure (' . $cache['megaraid']['encl'][$temp['enclosureId-ETST']]['enclosureIndex'] . ')'; // Static string if no vendor/product ID for enclosure
} else {
$encl .= ' (' . $cache['megaraid']['encl'][$temp['enclosureId-ETST']]['enclosureIndex'] . ')';
}
$descr = $encl . ' Temperature sensor ' . (++$lsi_counter['temp'][$temp['enclosureId-ETST']]);
$value = $temp['tempSensorStatus'];
$oid = ".1.3.6.1.4.1.3582.4.1.5.6.1.3.$index";
discover_status($device, $oid, "tempSensorStatus.$index", 'lsi-megaraid-sas-sensor-state', $descr, $value);
$value = $temp['enclosureTemperature'];
$oid = ".1.3.6.1.4.1.3582.4.1.5.6.1.4.$index";
if ($value < 200) // Filter out some silly values, possibly *10'd?
{
discover_sensor('temperature', $device, $oid, "enclosureTemperature.$index", 'lsi-megaraid-sas-mib', $descr, 1, $value);
}
}
// LSI-MegaRAID-SAS-MIB::fanID.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::enclosureId.0 = INTEGER: 0
// LSI-MegaRAID-SAS-MIB::fanStatus.0 = INTEGER: status-ok(2)
echo(' enclosureFanTable ');
$cache['megaraid']['fan'] = snmpwalk_cache_oid($device, 'enclosureFanTable', [], 'LSI-MegaRAID-SAS-MIB');
foreach ($cache['megaraid']['fan'] as $index => $fan) {
$encl = trim(trim($cache['megaraid']['encl'][$fan['enclosureId']]['vendorID'], '.') . ' ' . trim($cache['megaraid']['encl'][$fan['enclosureId']]['productID'], '.'));
if ($encl == '') {
$encl = 'Enclosure (' . $cache['megaraid']['encl'][$fan['enclosureId']]['enclosureIndex'] . ')'; // Static string if no vendor/product ID for enclosure
} else {
$encl .= ' (' . $cache['megaraid']['encl'][$fan['enclosureId']]['enclosureIndex'] . ')';
}
$descr = $encl . ' Fan ' . (++$lsi_counter['fan'][$fan['enclosureId']]);
$value = $fan['fanStatus'];
$oid = ".1.3.6.1.4.1.3582.4.1.5.3.1.3.$index";
discover_status($device, $oid, "fanStatus.$index", 'lsi-megaraid-sas-sensor-state', $descr, $value);
}
/*
enclosure data:
[1] => Array
(
[enclosureID] => 0
[deviceId] => 8
[enclosureIndex] => 1
[slotCount] => 12
[psCount] => 2
[fanCount] => 10
[tempSensorCount] => 6
[alarmCount] => 1
[simCount] => 7
[isFault] => 0
[pdCount] => 10
[pdIds] => 21 22 23 24 31 26 27 28 29 30
[adapterID-ET] => 0
[pdCountSpinup60] => 0
[enclosureType] => 0
[enclFirmwareVersion] => 30 31 41 20 01
[enclSerialNumber] => N/A
[vendorID] => Intel
[productID] => SSR212MC
[eSMSerialNumber] => N/A
[eSMFRU] => N/A
[enclosureZoningMode] => N/A
[eSMFRUPartInfo] => N/A
)
*/
unset($cache['megaraid'], $lsi_counter);
// EOF