git.lirion.de

Of git, get, and gud

summaryrefslogtreecommitdiffstats
path: root/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/TemperatureSubsystem.pm
diff options
context:
space:
mode:
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/TemperatureSubsystem.pm')
-rwxr-xr-xnagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/TemperatureSubsystem.pm205
1 files changed, 205 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/TemperatureSubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/TemperatureSubsystem.pm
new file mode 100755
index 0000000..7c82a11
--- /dev/null
+++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/TemperatureSubsystem.pm
@@ -0,0 +1,205 @@
+package HP::Proliant::Component::TemperatureSubsystem;
+our @ISA = qw(HP::Proliant::Component);
+
+use strict;
+use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
+
+sub new {
+ my $class = shift;
+################################## custom_thresholds
+ my %params = @_;
+ my $self = {
+ runtime => $params{runtime},
+ rawdata => $params{rawdata},
+ method => $params{method},
+ condition => $params{condition},
+ status => $params{status},
+ temperatures => [],
+ blacklisted => 0,
+ info => undef,
+ extendedinfo => undef,
+ };
+ bless $self, $class;
+ if ($params{runtime}->{options}->{customthresholds}) {
+ if (-f $params{runtime}->{options}->{customthresholds}) {
+ $params{runtime}->{options}->{customthresholds} =
+ do { local (@ARGV, $/) =
+ $params{runtime}->{options}->{customthresholds}; <> };
+ }
+ foreach my $ct_items
+ (split(/\//, $params{runtime}->{options}->{customthresholds})) {
+ if ($ct_items =~ /^(\d+):(\d+)$/) {
+ $params{runtime}->{options}->{thresholds}->{$1} = $2;
+ } else {
+ die sprintf "invalid threshold %s", $ct_items;
+ }
+ }
+ }
+ if ($self->{method} eq 'snmp') {
+ return HP::Proliant::Component::TemperatureSubsystem::SNMP->new(%params);
+ } elsif ($self->{method} eq 'cli') {
+ return HP::Proliant::Component::TemperatureSubsystem::CLI->new(%params);
+ } else {
+ die "unknown method";
+ }
+ return $self;
+}
+
+sub check {
+ my $self = shift;
+ my $errorfound = 0;
+ $self->add_info('checking temperatures');
+ if (scalar (@{$self->{temperatures}}) == 0) {
+ #$self->overall_check();
+ $self->add_info('no temperatures found');
+ } else {
+ foreach (sort { $a->{cpqHeTemperatureIndex} <=> $b->{cpqHeTemperatureIndex}}
+ @{$self->{temperatures}}) {
+ $_->check();
+ }
+ }
+}
+
+sub dump {
+ my $self = shift;
+ foreach (@{$self->{temperatures}}) {
+ $_->dump();
+ }
+}
+
+
+package HP::Proliant::Component::TemperatureSubsystem::Temperature;
+our @ISA = qw(HP::Proliant::Component::TemperatureSubsystem);
+
+use strict;
+use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
+
+sub new {
+ my $class = shift;
+ my %params = @_;
+ my $self = {
+ runtime => $params{runtime},
+ cpqHeTemperatureChassis => $params{cpqHeTemperatureChassis},
+ cpqHeTemperatureIndex => $params{cpqHeTemperatureIndex},
+ cpqHeTemperatureLocale => $params{cpqHeTemperatureLocale},
+ cpqHeTemperatureCelsius => $params{cpqHeTemperatureCelsius},
+ cpqHeTemperatureThresholdCelsius => $params{cpqHeTemperatureThresholdCelsius},
+ cpqHeTemperatureCondition => $params{cpqHeTemperatureCondition},
+ cpqHeTemperatureThresholdType => $params{cpqHeTemperatureThresholdType} || "unknown",
+ blacklisted => 0,
+ info => undef,
+ extendedinfo => undef,
+ };
+ bless $self, $class;
+ if ($params{runtime}->{options}->{celsius}) {
+ $self->{cpqHeTemperatureUnits} = 'C';
+ $self->{cpqHeTemperature} = $self->{cpqHeTemperatureCelsius};
+ $self->{cpqHeTemperatureThreshold} =
+ $self->{cpqHeTemperatureThresholdCelsius};
+ } else {
+ $self->{cpqHeTemperatureUnits} = 'F';
+ $self->{cpqHeTemperature} =
+ (($self->{cpqHeTemperatureCelsius} * 9) / 5) + 32;
+ $self->{cpqHeTemperatureThreshold} =
+ (($self->{cpqHeTemperatureThresholdCelsius} * 9) / 5) + 32;
+ }
+ my $index = $self->{cpqHeTemperatureIndex};
+ if (exists $params{runtime}->{options}->{thresholds}->{$index}) {
+ $self->{cpqHeTemperatureThreshold} =
+ $params{runtime}->{options}->{thresholds}->{$index};
+
+ }
+ if ($self->{cpqHeTemperatureThresholdCelsius} == -99) {
+ bless $self, 'HP::Proliant::Component::TemperatureSubsystem::SoSTemperature';
+ } elsif ($self->{cpqHeTemperatureThresholdCelsius} == 0) {
+ # taucht auf, seit man gen8 ueber das ilo abfragen kann
+ bless $self, 'HP::Proliant::Component::TemperatureSubsystem::SoSTemperature';
+ }
+ return $self;
+}
+
+sub check {
+ my $self = shift;
+ $self->blacklist('t', $self->{cpqHeTemperatureIndex});
+ if ($self->{cpqHeTemperature} > $self->{cpqHeTemperatureThreshold}) {
+ $self->add_info(sprintf "%d %s temperature too high (%d%s, %d max)",
+ $self->{cpqHeTemperatureIndex}, $self->{cpqHeTemperatureLocale},
+ $self->{cpqHeTemperature}, $self->{cpqHeTemperatureUnits},
+ $self->{cpqHeTemperatureThreshold});
+ $self->add_message(CRITICAL, $self->{info});
+ } elsif ($self->{cpqHeTemperature} < 0) {
+ # #21 SCSI_BACKPLANE_ZONE -1C/31F 60C/140F OK - can't be true
+ $self->add_info(sprintf "%d %s temperature too low (%d%s)",
+ $self->{cpqHeTemperatureIndex}, $self->{cpqHeTemperatureLocale},
+ $self->{cpqHeTemperature}, $self->{cpqHeTemperatureUnits});
+ $self->add_message(CRITICAL, $self->{info});
+ } else {
+ $self->add_info(sprintf "%d %s temperature is %d%s (%d max)",
+ $self->{cpqHeTemperatureIndex}, $self->{cpqHeTemperatureLocale},
+ $self->{cpqHeTemperature}, $self->{cpqHeTemperatureUnits},
+ $self->{cpqHeTemperatureThreshold});
+ }
+ if ($self->{runtime}->{options}->{perfdata} == 2) {
+ $self->{runtime}->{plugin}->add_perfdata(
+ label => sprintf('temp_%s', $self->{cpqHeTemperatureIndex}),
+ value => $self->{cpqHeTemperature},
+ warning => $self->{cpqHeTemperatureThreshold},
+ critical => $self->{cpqHeTemperatureThreshold}
+ );
+ } elsif ($self->{runtime}->{options}->{perfdata} == 1) {
+ $self->{runtime}->{plugin}->add_perfdata(
+ label => sprintf('temp_%s_%s', $self->{cpqHeTemperatureIndex},
+ $self->{cpqHeTemperatureLocale}),
+ value => $self->{cpqHeTemperature},
+ warning => $self->{cpqHeTemperatureThreshold},
+ critical => $self->{cpqHeTemperatureThreshold}
+ );
+ }
+ $self->add_extendedinfo(sprintf "temp_%s=%d",
+ $self->{cpqHeTemperatureIndex},
+ $self->{cpqHeTemperature});
+}
+
+sub dump {
+ my $self = shift;
+ printf "[TEMP_%s]\n", $self->{cpqHeTemperatureIndex};
+ foreach (qw(cpqHeTemperatureChassis cpqHeTemperatureIndex
+ cpqHeTemperatureLocale cpqHeTemperatureCelsius cpqHeTemperatureThreshold
+ cpqHeTemperatureThresholdType cpqHeTemperatureCondition)) {
+ printf "%s: %s\n", $_, $self->{$_};
+ }
+ printf "info: %s\n\n", $self->{info};
+}
+
+
+package HP::Proliant::Component::TemperatureSubsystem::SoSTemperature;
+our @ISA = qw(HP::Proliant::Component::TemperatureSubsystem::Temperature);
+
+use strict;
+use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
+
+sub check {
+ my $self = shift;
+ $self->blacklist('t', $self->{cpqHeTemperatureIndex});
+ $self->add_info(sprintf "%d %s temperature is %d%s (no thresh.)",
+ $self->{cpqHeTemperatureIndex}, $self->{cpqHeTemperatureLocale},
+ $self->{cpqHeTemperature}, $self->{cpqHeTemperatureUnits});
+ if ($self->{runtime}->{options}->{perfdata} == 2) {
+ $self->{runtime}->{plugin}->add_perfdata(
+ label => sprintf('temp_%s', $self->{cpqHeTemperatureIndex}),
+ value => $self->{cpqHeTemperature},
+ );
+ } elsif ($self->{runtime}->{options}->{perfdata} == 1) {
+ $self->{runtime}->{plugin}->add_perfdata(
+ label => sprintf('temp_%s_%s', $self->{cpqHeTemperatureIndex},
+ $self->{cpqHeTemperatureLocale}),
+ value => $self->{cpqHeTemperature},
+ );
+ }
+ $self->add_extendedinfo(sprintf "temp_%s=%d",
+ $self->{cpqHeTemperatureIndex},
+ $self->{cpqHeTemperature});
+}
+
+1;
+