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 --- .../plugins-scripts/HP/BladeSystem.pm | 240 +++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100755 nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem.pm (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem.pm') diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem.pm new file mode 100755 index 0000000..64e69e6 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem.pm @@ -0,0 +1,240 @@ +package HP::BladeSystem; + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; +use Data::Dumper; + +our @ISA = qw(HP::Server HP::Proliant::Component::SNMP); + +sub init { + my $self = shift; + $self->{components} = { + common_enclosure_subsystem => undef, + power_enclosure_subsystem => undef, + power_supply_subsystem => undef, + net_connector_subsystem => undef, + server_blade_subsystem => undef, + }; + $self->{serial} = 'unknown'; + $self->{product} = 'unknown'; + $self->{romversion} = 'unknown'; + $self->trace(3, 'BladeSystem identified'); + $self->collect(); + if (! $self->{runtime}->{plugin}->check_messages()) { + $self->set_serial(); + $self->analyze_common_enclosures(); + $self->analyze_power_enclosures(); + $self->analyze_power_supplies(); + $self->analyze_net_connectors(); + $self->analyze_server_blades(); + $self->check_common_enclosures(); + $self->check_power_enclosures(); + $self->check_power_supplies(); + $self->check_net_connectors(); + $self->check_server_blades(); + } +} + +sub identify { + my $self = shift; + return sprintf "System: '%s', S/N: '%s'", + $self->{product}, $self->{serial}; +} + +sub dump { + my $self = shift; + printf STDERR "serial %s\n", $self->{serial}; + printf STDERR "product %s\n", $self->{product}; + printf STDERR "romversion %s\n", $self->{romversion}; + printf STDERR "%s\n", Data::Dumper::Dumper($self->{enclosures}); +} + +sub analyze_common_enclosures { + my $self = shift; + $self->{components}->{common_enclosure_subsystem} = + HP::BladeSystem::Component::CommonEnclosureSubsystem->new( + rawdata => $self->{rawdata}, + method => $self->{method}, + runtime => $self->{runtime}, + ); +} + +sub analyze_power_enclosures { + my $self = shift; + $self->{components}->{power_enclosure_subsystem} = + HP::BladeSystem::Component::PowerEnclosureSubsystem->new( + rawdata => $self->{rawdata}, + method => $self->{method}, + runtime => $self->{runtime}, + ); +} + +sub analyze_power_supplies { + my $self = shift; + $self->{components}->{power_supply_subsystem} = + HP::BladeSystem::Component::PowerSupplySubsystem->new( + rawdata => $self->{rawdata}, + method => $self->{method}, + runtime => $self->{runtime}, + ); +} + +sub analyze_net_connectors { + my $self = shift; + $self->{components}->{net_connector_subsystem} = + HP::BladeSystem::Component::NetConnectorSubsystem->new( + rawdata => $self->{rawdata}, + method => $self->{method}, + runtime => $self->{runtime}, + ); +} + +sub analyze_server_blades { + my $self = shift; + $self->{components}->{server_blade_subsystem} = + HP::BladeSystem::Component::ServerBladeSubsystem->new( + rawdata => $self->{rawdata}, + method => $self->{method}, + runtime => $self->{runtime}, + ); +} + +sub check_common_enclosures { + my $self = shift; + $self->{components}->{common_enclosure_subsystem}->check(); + $self->{components}->{common_enclosure_subsystem}->dump() + if $self->{runtime}->{options}->{verbose} >= 2; +} + +sub check_power_enclosures { + my $self = shift; + $self->{components}->{power_enclosure_subsystem}->check(); + $self->{components}->{power_enclosure_subsystem}->dump() + if $self->{runtime}->{options}->{verbose} >= 2; +} + +sub check_power_supplies { + my $self = shift; + $self->{components}->{power_supply_subsystem}->check(); + $self->{components}->{power_supply_subsystem}->dump() + if $self->{runtime}->{options}->{verbose} >= 2; +} + +sub check_net_connectors { + my $self = shift; + $self->{components}->{net_connector_subsystem}->check(); + $self->{components}->{net_connector_subsystem}->dump() + if $self->{runtime}->{options}->{verbose} >= 2; +} + +sub check_server_blades { + my $self = shift; + $self->{components}->{server_blade_subsystem}->check(); + $self->{components}->{server_blade_subsystem}->dump() + if $self->{runtime}->{options}->{verbose} >= 2; +} + +sub collect { + my $self = shift; + if ($self->{runtime}->{plugin}->opts->snmpwalk) { + my $cpqRackMibCondition = '1.3.6.1.4.1.232.22.1.3.0'; + $self->trace(3, 'getting cpqRackMibCondition'); + if (! exists $self->{rawdata}->{$cpqRackMibCondition}) { + $self->add_message(CRITICAL, + 'snmpwalk returns no health data (cpqrack-mib)'); + } + } else { + my $net_snmp_version = Net::SNMP->VERSION(); # 5.002000 or 6.000000 + #$params{'-translate'} = [ + # -all => 0x0 + #]; + my ($session, $error) = + Net::SNMP->session(%{$self->{runtime}->{snmpparams}}); + if (! defined $session) { + $self->{plugin}->add_message(CRITICAL, 'cannot create session object'); + $self->trace(1, Data::Dumper::Dumper($self->{runtime}->{snmpparams})); + } else { + # revMajor is often used for discovery of hp devices + my $cpqSeMibRev = '1.3.6.1.4.1.232.22.1'; + my $cpqSeMibRevMajor = '1.3.6.1.4.1.232.22.1.1.0'; + my $cpqRackMibCondition = '1.3.6.1.4.1.232.22.1.3.0'; + $self->trace(3, 'getting cpqRackMibCondition'); + my $result = $session->get_request( + -varbindlist => [$cpqRackMibCondition] + ); + if (!defined($result) || + $result->{$cpqRackMibCondition} eq 'noSuchInstance' || + $result->{$cpqRackMibCondition} eq 'noSuchObject' || + $result->{$cpqRackMibCondition} eq 'endOfMibView') { + $self->add_message(CRITICAL, + 'snmpwalk returns no health data (cpqrack-mib)'); + $session->close; + } else { + $self->trace(3, 'getting cpqRackMibCondition done'); + } + } + if (! $self->{runtime}->{plugin}->check_messages()) { + # snmp peer is alive + $self->trace(2, sprintf "Protocol is %s", + $self->{runtime}->{snmpparams}->{'-version'}); + my $oidtrees = [ + ["cpqSiComponent", "1.3.6.1.4.1.232.2.2"], + ["cpqSiAsset", "1.3.6.1.4.1.232.2.2.2"], + #["cpqRackInfo", "1.3.6.1.4.1.232.22"], + ['cpqRackCommonEnclosureEntry', '1.3.6.1.4.1.232.22.2.3.1.1.1'], + ['cpqRackCommonEnclosureTempEntry', '1.3.6.1.4.1.232.22.2.3.1.2.1'], + ['cpqRackCommonEnclosureFanEntry', '1.3.6.1.4.1.232.22.2.3.1.3.1'], + ['cpqRackCommonEnclosureFuseEntry', '1.3.6.1.4.1.232.22.2.3.1.4.1'], + ['cpqRackCommonEnclosureManagerEntry', '1.3.6.1.4.1.232.22.2.3.1.6.1'], + ['cpqRackPowerEnclosureEntry', '1.3.6.1.4.1.232.22.2.3.3.1.1'], + ['cpqRackServerBladeEntry', '1.3.6.1.4.1.232.22.2.4.1.1.1'], + ['cpqRackPowerSupplyEntry', '1.3.6.1.4.1.232.22.2.5.1.1.1'], + ['cpqRackNetConnectorEntry', '1.3.6.1.4.1.232.22.2.6.1.1.1'], + ['cpqRackMibCondition', '1.3.6.1.4.1.232.22.1.3.0'], + ]; + my $cpqSiComponent = "1.3.6.1.4.1.232.2.2"; + my $cpqSiAsset = "1.3.6.1.4.1.232.2.2.2"; + my $cpqRackInfo = "1.3.6.1.4.1.232.22"; + $session->translate; + my $response = {}; #break the walk up in smaller pieces + foreach my $subtree (@{$oidtrees}) { + my $tic = time; my $tac = $tic; + my $response0 = $session->get_table( + -baseoid => $subtree->[1]); + if (scalar (keys %{$response0}) == 0) { + $self->trace(2, sprintf "maxrepetitions failed. fallback"); + $response0 = $session->get_table( + -maxrepetitions => 1, + -baseoid => $subtree->[1]); + } + $tac = time; + $self->trace(2, sprintf "%03d seconds for walk %s (%d oids)", + $tac - $tic, $subtree->[0], scalar(keys %{$response0})); + map { $response->{$_} = $response0->{$_} } keys %{$response0}; + } + $session->close; + map { $response->{$_} =~ s/^\s+//; $response->{$_} =~ s/\s+$//; } + keys %$response; + $self->{rawdata} = $response; + } + } + return $self->{runtime}->{plugin}->check_messages(); +} + +sub set_serial { + my $self = shift; + + my $cpqSiSysSerialNum = "1.3.6.1.4.1.232.2.2.2.1.0"; + my $cpqSiProductName = "1.3.6.1.4.1.232.2.2.4.2.0"; + + $self->{serial} = + SNMP::Utils::get_object($self->{rawdata}, $cpqSiSysSerialNum); + $self->{product} = + SNMP::Utils::get_object($self->{rawdata}, $cpqSiProductName); + $self->{serial} = $self->{serial}; + $self->{product} = lc $self->{product}; + $self->{romversion} = 'unknown'; +##################################################################### +$self->{runtime}->{product} = $self->{product}; +} + -- cgit v1.2.3