From 1e2387474a449452b78520b9ad96a8b4b5e99722 Mon Sep 17 00:00:00 2001 From: Harald Pfeiffer Date: Wed, 17 Apr 2019 19:07:19 +0200 Subject: initial commit of source fetch --- .../BladeSystem/Component/PowerSupplySubsystem.pm | 238 +++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100755 nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/PowerSupplySubsystem.pm (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/PowerSupplySubsystem.pm') diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/PowerSupplySubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/PowerSupplySubsystem.pm new file mode 100755 index 0000000..261ce19 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/PowerSupplySubsystem.pm @@ -0,0 +1,238 @@ +package HP::BladeSystem::Component::PowerSupplySubsystem; +our @ISA = qw(HP::BladeSystem::Component); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + power_supplies => [], + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + $self->init(); + return $self; +} + +sub init { + my $self = shift; + my $oids = { + cpqRackPowerSupplyEntry => '1.3.6.1.4.1.232.22.2.5.1.1.1', + cpqRackPowerSupplyRack => '1.3.6.1.4.1.232.22.2.5.1.1.1.1', + cpqRackPowerSupplyChassis => '1.3.6.1.4.1.232.22.2.5.1.1.1.2', + cpqRackPowerSupplyIndex => '1.3.6.1.4.1.232.22.2.5.1.1.1.3', + cpqRackPowerSupplyEnclosureName => '1.3.6.1.4.1.232.22.2.5.1.1.1.4', + cpqRackPowerSupplySerialNum => '1.3.6.1.4.1.232.22.2.5.1.1.1.5', + cpqRackPowerSupplySparePartNumber => '1.3.6.1.4.1.232.22.2.5.1.1.1.7', + cpqRackPowerSupplyFWRev => '1.3.6.1.4.1.232.22.2.5.1.1.1.8', + cpqRackPowerSupplyMaxPwrOutput => '1.3.6.1.4.1.232.22.2.5.1.1.1.9', + cpqRackPowerSupplyCurPwrOutput => '1.3.6.1.4.1.232.22.2.5.1.1.1.10', + cpqRackPowerSupplyIntakeTemp => '1.3.6.1.4.1.232.22.2.5.1.1.1.12', + cpqRackPowerSupplyExhaustTemp => '1.3.6.1.4.1.232.22.2.5.1.1.1.13', + cpqRackPowerSupplyStatus => '1.3.6.1.4.1.232.22.2.5.1.1.1.14', + cpqRackPowerSupplySupplyInputLineStatus => '1.3.6.1.4.1.232.22.2.5.1.1.1.15', + cpqRackPowerSupplyPresent => '1.3.6.1.4.1.232.22.2.5.1.1.1.16', + cpqRackPowerSupplyCondition => '1.3.6.1.4.1.232.22.2.5.1.1.1.17', + cpqRackPowerSupplySupplyInputLineStatusValue => { + 1 => 'noError', + 2 => 'lineOverVoltage', + 3 => 'lineUnderVoltage', + 4 => 'lineHit', + 5 => 'brownOut', + 6 => 'linePowerLoss', + }, + cpqRackPowerSupplyStatusValue => { + 1 => 'noError', + 2 => 'generalFailure', + 3 => 'bistFailure', + 4 => 'fanFailure', + 5 => 'tempFailure', + 6 => 'interlockOpen', + 7 => 'epromFailed', + 8 => 'vrefFailed', + 9 => 'dacFailed', + 10 => 'ramTestFailed', + 11 => 'voltageChannelFailed', + 12 => 'orringdiodeFailed', + 13 => 'brownOut', + 14 => 'giveupOnStartup', + 15 => 'nvramInvalid', + 16 => 'calibrationTableInvalid', + }, + cpqRackPowerSupplyPresentValue => { + 1 => 'other', + 2 => 'absent', + 3 => 'present', + }, + cpqRackPowerSupplyConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + }, + }; + + + # INDEX { cpqRackPowerSupplyRack, cpqRackPowerSupplyChassis, cpqRackPowerSupplyIndex } + foreach ($self->get_entries($oids, 'cpqRackPowerSupplyEntry')) { + push(@{$self->{power_supplies}}, + HP::BladeSystem::Component::PowerSupplySubsystem::PowerSupply->new(%{$_})); + } +} + +sub check { + my $self = shift; + my $total_current_watt = 0; + my $total_max_watt = 0; + my $total_in_temp = 0; + my $total_out_temp = 0; + my $num_ps = 0; + foreach (@{$self->{power_supplies}}) { + $_->check() if $_->{cpqRackPowerSupplyPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + if ($_->{cpqRackPowerSupplyPresent} eq 'present') { + $total_max_watt += $_->{cpqRackPowerSupplyMaxPwrOutput}; + $total_current_watt += $_->{cpqRackPowerSupplyCurPwrOutput}; + $total_in_temp += $_->{cpqRackPowerSupplyIntakeTemp} + if $_->{cpqRackPowerSupplyIntakeTemp} != -1; + $total_out_temp += $_->{cpqRackPowerSupplyExhaustTemp} + if $_->{cpqRackPowerSupplyExhaustTemp} != -1; + $num_ps++; + } + } + $self->{runtime}->{plugin}->add_perfdata( + label => 'watt_total', + value => $total_current_watt, + warning => $total_max_watt, + critical => $total_max_watt, + ); + #$self->{runtime}->{plugin}->add_perfdata( + # label => 'watt_total_pct', + # value => ($total_current_watt == 0 ? 0 : + # sprintf("%.2f", + # ($total_current_watt / $total_max_watt * 100))), + # warning => 100, + # critical => 100, + # uom => '%', + #); + if ($total_in_temp) { + $self->{runtime}->{plugin}->add_perfdata( + label => 'in_temp', + value => $total_in_temp / $num_ps, + ); + } + if ($total_out_temp) { + $self->{runtime}->{plugin}->add_perfdata( + label => 'out_temp', + value => $total_out_temp / $num_ps, + ); + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{power_supplies}}) { + $_->dump() if $_->{cpqRackPowerSupplyPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + + +package HP::BladeSystem::Component::PowerSupplySubsystem::PowerSupply; +our @ISA = qw(HP::BladeSystem::Component::PowerSupplySubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + map { $self->{$_} = $params{$_} } grep /cpqRackPowerSupply/, keys %params; + $self->{name} = $params{cpqRackPowerSupplyRack}. + ':'.$params{cpqRackPowerSupplyChassis}. + ':'.$params{cpqRackPowerSupplyIndex}; + $self->{serfw} = sprintf "Ser: %s, FW: %s", $self->{cpqRackPowerSupplySerialNum}, $self->{cpqRackPowerSupplyFWRev}; + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('ps', $self->{name}); + my $info = sprintf 'power supply %s is %s, condition is %s (%s)', + $self->{name}, $self->{cpqRackPowerSupplyPresent}, + $self->{cpqRackPowerSupplyCondition}, $self->{serfw}; + $self->add_info($info); + if ($self->{cpqRackPowerSupplyPresent} eq 'present') { + if ($self->{cpqRackPowerSupplyCondition} eq 'degraded') { + $info .= sprintf " (SparePartNum %s)", $self->{cpqRackPowerSupplySparePartNumber}; + $self->add_message(WARNING, $info); + $self->add_info(sprintf 'power supply %s status is %s, inp.line status is %s', + $self->{name}, $self->{cpqRackPowerSupplyStatus}, + $self->{cpqRackPowerSupplySupplyInputLineStatus}); + } elsif ($self->{cpqRackPowerSupplyCondition} eq 'failed') { + $info .= sprintf " (SparePartNum %s)", $self->{cpqRackPowerSupplySparePartNumber}; + $self->add_message(CRITICAL, $info); + $self->add_info(sprintf 'power supply %s status is %s, inp.line status is %s', + $self->{name}, $self->{cpqRackPowerSupplyStatus}, + $self->{cpqRackPowerSupplySupplyInputLineStatus}); + } + if ($self->{runtime}->{options}->{perfdata} != 2) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf('watt_%s', $self->{name}), + value => $self->{cpqRackPowerSupplyCurPwrOutput}, + warning => $self->{cpqRackPowerSupplyMaxPwrOutput}, + critical => $self->{cpqRackPowerSupplyMaxPwrOutput} + ); + #$self->{runtime}->{plugin}->add_perfdata( + # label => sprintf('watt_pct_%s', $self->{name}), + # value => ($self->{cpqRackPowerSupplyCurPwrOutput} == 0 ? 0 : + # sprintf ("%.2f", + # ($self->{cpqRackPowerSupplyCurPwrOutput} / + # $self->{cpqRackPowerSupplyMaxPwrOutput} * 100))), + # warning => 100, + # critical => 100, + # uom => '%', + #); + if ($self->{cpqRackPowerSupplyIntakeTemp} != -1) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf('in_temp_%s', $self->{name}), + value => $self->{cpqRackPowerSupplyIntakeTemp}, + ); + } + if ($self->{cpqRackPowerSupplyExhaustTemp} != -1) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf('out_temp_%s', $self->{name}), + value => $self->{cpqRackPowerSupplyExhaustTemp}, + ); + } + } + } +} + +sub dump { + my $self = shift; + printf "[POWER_SUPPLY%s]\n", $self->{name}; + foreach (qw(cpqRackPowerSupplyRack cpqRackPowerSupplyChassis cpqRackPowerSupplyIndex cpqRackPowerSupplyEnclosureName cpqRackPowerSupplySerialNum cpqRackPowerSupplySparePartNumber cpqRackPowerSupplyFWRev cpqRackPowerSupplyMaxPwrOutput cpqRackPowerSupplyCurPwrOutput cpqRackPowerSupplyIntakeTemp cpqRackPowerSupplyExhaustTemp cpqRackPowerSupplyStatus cpqRackPowerSupplySupplyInputLineStatus cpqRackPowerSupplyPresent cpqRackPowerSupplyCondition)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "\n"; +} + + +1; -- cgit v1.2.3