Niepoprawna (niepełna) obsługa zakresów przez check_oracle_health

Piszę szerszy artykuł o wtyczce check_oracle_health od ConSol Labs i w czasie testów zauważyłem, że obsługa zakresów jest niepoprawna, a w zasadzie nie w pełni zaimplementowana. W wersji 1.7.1 jest możliwość podania progów dolnych lub górnych, nie ma możliwości podania zakresu.
Na szybko moja łata na to:

--- /usr/lib/nagios/plugins/check_oracle_health 2011-09-12 08:06:23.000000000 +0200
+++ /tmp/check_oracle_health    2011-09-22 10:13:32.000000000 +0200
@@ -4094,6 +4094,13 @@ sub check_thresholds {
# warning = 10, critical = 20, warn if > 10, crit if > 20
$level = $ERRORS{WARNING} if $value > $self->{warningrange};
$level = $ERRORS{CRITICAL} if $value > $self->{criticalrange};
+  } elsif ($self->{warningrange} =~ /(\d+):(\d+)/ &&
+      $self->{criticalrange} =~ /(\d+):(\d+)/) {
+    # warning = 78:84, critical = 70:90, warn if < 78 or > 84, crit if < 70 or > 90
+    $self->{warningrange} =~ /(\d+):(\d+)/;
+    $level = $ERRORS{WARNING} if $value < $1 || $value > $2;
+    $self->{criticalrange} =~ /(\d+):(\d+)/;
+    $level = $ERRORS{CRITICAL} if $value < $1 || $value > $2;
} elsif ($self->{warningrange} =~ /(\d+):/ &&
$self->{criticalrange} =~ /(\d+):/) {
# warning = 98:, critical = 95:, warn if < 98, crit if < 95

Nie jestem programistą Perl, jeśli da się to ‚upiększyć’, proszę o komentarz.
Oczywiście można pójść dalej (i zrobię to w wolnym czasie):

Tagi: ,

Jedna odpowiedź do “Niepoprawna (niepełna) obsługa zakresów przez check_oracle_health”

  1. [...] guzik Mój blog « Niepoprawna (niepełna) obsługa zakresów przez check_oracle_health [...]

Dodaj odpowiedź