diff options
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/DiskSubsystem/Fca/SNMP.pm')
-rwxr-xr-x | nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/DiskSubsystem/Fca/SNMP.pm | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/DiskSubsystem/Fca/SNMP.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/DiskSubsystem/Fca/SNMP.pm new file mode 100755 index 0000000..fc603e5 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/DiskSubsystem/Fca/SNMP.pm @@ -0,0 +1,303 @@ +package HP::Proliant::Component::DiskSubsystem::Fca::SNMP; +our @ISA = qw(HP::Proliant::Component::DiskSubsystem::Fca + HP::Proliant::Component::SNMP); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + controllers => [], + accelerators => [], + enclosures => [], + physical_drives => [], + logical_drives => [], + spare_drives => [], + blacklisted => 0, + }; + bless $self, $class; + return $self; +} + +sub init { + my $self = shift; + my $snmpwalk = $self->{rawdata}; + + # CPQFCA-MIB + my $oids = { + cpqFcaHostCntlrEntry => '1.3.6.1.4.1.232.16.2.7.1.1', + cpqFcaHostCntlrIndex => '1.3.6.1.4.1.232.16.2.7.1.1.1', + cpqFcaHostCntlrSlot => '1.3.6.1.4.1.232.16.2.7.1.1.2', + cpqFcaHostCntlrModel => '1.3.6.1.4.1.232.16.2.7.1.1.3', + cpqFcaHostCntlrStatus => '1.3.6.1.4.1.232.16.2.7.1.1.4', + cpqFcaHostCntlrCondition => '1.3.6.1.4.1.232.16.2.7.1.1.5', + cpqFcaHostCntlrOverallCondition => '1.3.6.1.4.1.232.16.2.7.1.1.8', + cpqFcaHostCntlrModelValue => { + 1 => "other", + # You may need to upgrade your driver software and\or instrument + # agent(s). You have a drive array controller in the system + # that the instrument agent does not recognize. (other according to CPQFCAL-MIB) + 2 => "fchc-p", + 3 => "fchc-e", + 4 => "fchc64", + 5 => "sa-sam", + 6 => "fca-2101", + 7 => "sw64-33", + 8 => "fca-221x", + 9 => "dpfcmc", + 10 => 'fca-2404', + 11 => 'fca-2214', + 12 => 'a7298a', + 13 => 'fca-2214dc', + 14 => 'a6826a', + 15 => 'fcmcG3', + 16 => 'fcmcG4', + 17 => 'ab46xa', + 18 => 'fc-generic', + 19 => 'fca-1143', + 20 => 'fca-1243', + 21 => 'fca-2143', + 22 => 'fca-2243', + 23 => 'fca-1050', + 24 => 'fca-lpe1105', + 25 => 'fca-qmh2462', + 26 => 'fca-1142sr', + 27 => 'fca-1242sr', + 28 => 'fca-2142sr', + 29 => 'fca-2242sr', + 30 => 'fcmc20pe', + 31 => 'fca-81q', + 32 => 'fca-82q', + 33 => 'fca-qmh2562', + 34 => 'fca-81e', + 35 => 'fca-82e', + 36 => 'fca-1205', + }, + cpqFcaHostCntlrStatusValue => { + 1 => "other", + 2 => "ok", + 3 => "failed", + 4 => "shutdown", + 5 => "loopDegraded", + 6 => "loopFailed", + 7 => "notConnected", + }, + cpqFcaHostCntlrConditionValue => { + 1 => "other", + 2 => "ok", + 3 => "degraded", + 4 => "failed", + }, + cpqFcaHostCntlrOverallConditionValue => { + 1 => "other", + 2 => "ok", + 3 => "degraded", + 4 => "failed", + }, # cntrl + alle associated storage boxes + }; + + # INDEX { cpqFcaHostCntlrIndex } + foreach ($self->get_entries($oids, 'cpqFcaHostCntlrEntry')) { + push(@{$self->{host_controllers}}, + HP::Proliant::Component::DiskSubsystem::Fca::HostController->new(%{$_})); + } + + $oids = { + cpqFcaCntlrEntry => '1.3.6.1.4.1.232.16.2.2.1.1', + cpqFcaCntlrBoxIndex => '1.3.6.1.4.1.232.16.2.2.1.1.1', + cpqFcaCntlrBoxIoSlot => '1.3.6.1.4.1.232.16.2.2.1.1.2', + cpqFcaCntlrModel => '1.3.6.1.4.1.232.16.2.2.1.1.3', + cpqFcaCntlrStatus => '1.3.6.1.4.1.232.16.2.2.1.1.5', + cpqFcaCntlrCondition => '1.3.6.1.4.1.232.16.2.2.1.1.6', + cpqFcaCntlrModelValue => { + 1 => "other", + 2 => "fibreArray", + 3 => "msa1000", + 4 => "smartArrayClusterStorage", + 5 => "hsg80", + 6 => "hsv110", + 7 => "msa500g2", + 8 => "msa20", + 8 => "msa1510i", + }, + cpqFcaCntlrStatusValue => { + 1 => "other", + 2 => "ok", + 3 => "failed", + 4 => "offline", + 5 => "redundantPathOffline", + 6 => "notConnected", + }, + cpqFcaCntlrConditionValue => { + 1 => "other", + 2 => "ok", + 3 => "degraded", + 4 => "failed", + }, + }; + + # INDEX { cpqFcaCntlrBoxIndex, cpqFcaCntlrBoxIoSlot } + foreach ($self->get_entries($oids, 'cpqFcaCntlrEntry')) { + push(@{$self->{controllers}}, + HP::Proliant::Component::DiskSubsystem::Fca::Controller->new(%{$_})); + } + + $oids = { + cpqFcaAccelEntry => '1.3.6.1.4.1.232.16.2.2.2.1', + cpqFcaAccelBoxIndex => '1.3.6.1.4.1.232.16.2.2.2.1.1', + cpqFcaAccelBoxIoSlot => '1.3.6.1.4.1.232.16.2.2.2.1.2', + cpqFcaAccelStatus => '1.3.6.1.4.1.232.16.2.2.2.1.3', + cpqFcaAccelErrCode => '1.3.6.1.4.1.232.16.2.2.2.1.5', + cpqFcaAccelBatteryStatus => '1.3.6.1.4.1.232.16.2.2.2.1.6', + cpqFcaAccelCondition => '1.3.6.1.4.1.232.16.2.2.2.1.9', + cpqFcaAccelStatusValue => { + 1 => "other", + 2 => "invalid", + 3 => "enabled", + 4 => "tmpDisabled", + 5 => "permDisabled", + }, + cpqFcaAccelErrCodeValue => { + 1 => 'other', + 2 => 'invalid', + 3 => 'badConfig', + 4 => 'lowBattery', + 5 => 'disableCmd', + 6 => 'noResources', + 7 => 'notConnected', + 8 => 'badMirrorData', + 9 => 'readErr', + 10 => 'writeErr', + 11 => 'configCmd', + 12 => 'expandInProgress', + 13 => 'snapshotInProgress', + 14 => 'redundantLowBattery', + 15 => 'redundantSizeMismatch', + 16 => 'redundantCacheFailure', + 17 => 'excessiveEccErrors', + 19 => 'postEccErrors', + }, + cpqFcaAccelBatteryStatusValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'recharging', + 4 => 'failed', + 5 => 'degraded', + 6 => 'notPresent', + }, + cpqFcaAccelConditionValue => { + 1 => "other", + 2 => "ok", + 3 => "degraded", + 4 => "failed", + }, + }; + + # INDEX { cpqFcaAccelBoxIndex, cpqFcaAccelBoxIoSlot } + foreach ($self->get_entries($oids, 'cpqFcaAccelEntry')) { + push(@{$self->{accelerators}}, + HP::Proliant::Component::DiskSubsystem::Fca::Accelerator->new(%{$_})); + } + + $oids = { + cpqFcaLogDrvEntry => '1.3.6.1.4.1.232.16.2.3.1.1', + cpqFcaLogDrvBoxIndex => '1.3.6.1.4.1.232.16.2.3.1.1.1', + cpqFcaLogDrvIndex => '1.3.6.1.4.1.232.16.2.3.1.1.2', + cpqFcaLogDrvFaultTol => '1.3.6.1.4.1.232.16.2.3.1.1.3', + cpqFcaLogDrvStatus => '1.3.6.1.4.1.232.16.2.3.1.1.4', + cpqFcaLogDrvPercentRebuild => '1.3.6.1.4.1.232.16.2.3.1.1.6', + cpqFcaLogDrvSize => '1.3.6.1.4.1.232.16.2.3.1.1.9', + cpqFcaLogDrvPhyDrvIDs => '1.3.6.1.4.1.232.16.2.3.1.1.10', + cpqFcaLogDrvCondition => '1.3.6.1.4.1.232.16.2.3.1.1.11', + cpqFcaLogDrvFaultTolValue => { + 1 => 'other', + 2 => 'none', + 3 => 'mirroring', + 4 => 'dataGuard', + 5 => 'distribDataGuard', + 7 => 'advancedDataGuard', + }, + cpqFcaLogDrvStatusValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'failed', + 4 => 'unconfigured', + 5 => 'recovering', + 6 => 'readyForRebuild', + 7 => 'rebuilding', + 8 => 'wrongDrive', + 9 => 'badConnect', + 10 => 'overheating', + 11 => 'shutdown', + 12 => 'expanding', + 13 => 'notAvailable', + 14 => 'queuedForExpansion', + 15 => 'hardError', + }, + cpqFcaLogDrvConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + }, + }; + + # INDEX { cpqFcaLogDrvBoxIndex, cpqFcaLogDrvIndex } + foreach ($self->get_entries($oids, 'cpqFcaLogDrvEntry')) { + push(@{$self->{logical_drives}}, + HP::Proliant::Component::DiskSubsystem::Fca::LogicalDrive->new(%{$_})); + } + + $oids = { + cpqFcaPhyDrvEntry => '1.3.6.1.4.1.232.16.2.5.1.1', + cpqFcaPhyDrvBoxIndex => '1.3.6.1.4.1.232.16.2.5.1.1.1', + cpqFcaPhyDrvIndex => '1.3.6.1.4.1.232.16.2.5.1.1.2', + cpqFcaPhyDrvModel => '1.3.6.1.4.1.232.16.2.5.1.1.3', + cpqFcaPhyDrvBay => '1.3.6.1.4.1.232.16.2.5.1.1.5', + cpqFcaPhyDrvStatus => '1.3.6.1.4.1.232.16.2.5.1.1.6', + cpqFcaPhyDrvCondition => '1.3.6.1.4.1.232.16.2.5.1.1.31', + cpqFcaPhyDrvSize => '1.3.6.1.4.1.232.16.2.5.1.1.38', + cpqFcaPhyDrvBusNumber => '1.3.6.1.4.1.232.16.2.5.1.1.42', + cpqFcaPhyDrvStatusValue => { + 1 => 'other', + 2 => 'unconfigured', + 3 => 'ok', + 4 => 'threshExceeded', + 5 => 'predictiveFailure', + 6 => 'failed', + }, + cpqFcaPhyDrvConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + }, + }; + + # INDEX { cpqFcaPhyDrvBoxIndex, cpqFcaPhyDrvIndex } + foreach ($self->get_entries($oids, 'cpqFcaPhyDrvEntry')) { + push(@{$self->{physical_drives}}, + HP::Proliant::Component::DiskSubsystem::Fca::PhysicalDrive->new(%{$_})); + } + + $oids = { + cpqFcaMibRevMajor => '1.3.6.1.4.1.232.16.1.1.0', + cpqFcaMibRevMinor => '1.3.6.1.4.1.232.16.1.2.0', + cpqFcaMibCondition => '1.3.6.1.4.1.232.16.1.3.0', + cpqFcaMibConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + }, + }; + $self->{global_status} = + HP::Proliant::Component::DiskSubsystem::Fca::GlobalStatus->new( + runtime => $self->{runtime}, + cpqFcaMibCondition => + SNMP::Utils::get_object_value($snmpwalk, + $oids->{cpqFcaMibCondition}, $oids->{cpqFcaMibConditionValue}) + ); +} |