Superuser

Autor Thema: Nagios-Plugin für Solaris  (Gelesen 6660 mal)

Offline linus83

  • Sobl Bachelor
  • ***
  • Beiträge: 144
Nagios-Plugin für Solaris
« am: 09. Juli 2009, 12:37:32 »
Hallo ich bin dabei ein Nagios-Plugin für Solaris zu schreiben. Es soll die temperatur-sensoren abfragen mit Hilfe von prtpicl. Es funktioniert auf einer SunFire 490, SunFire  V440 und 250 was anderes schönes habe ich leider nicht zur Verfügung zum testen.

Sieht die Ausgabe von prtpicl -v -c temperature-sensor auf allen Suns gleich aus? Ich habe unten das perl-plugin, wer möchte kann es auch selbst probieren. Ich kann es noch parametrisieren. Zur Arbeitsweise: Wenn die temperatur des Sensor unter HighWarningThreshold - $warn ist, dann ist alles im grünen Bereich, falls die Temperatur darüber ist, dann gebe ich warning an Nagios zurück. Wenn die Temperatur HighWarningThreshold übersteigt, dann gebe ich critical zurück. Das hat den Sinn, dass man bei critical noch eine Chance hat nach der Klimaanlage zu sehen oder den Rechner herunter fährt.

#!/usr/bin/perl -w

# File:    check_solaris_sensors
# Purpose: prtpicl output parser
# Author:  Michael Rennecke
# Date:    2009/07/08
# Version: 0.2

use strict;

my $warn        = 15;
my $prtpicl     = "/usr/sbin/prtpicl";
my @diag        = ();
my @sensor_data = ();
my $state       = 0;
my $output      = "";

unless(open(DIAG, "$prtpicl -v -c temperature-sensor | ")) {
    print STDERR "Initialization error - Can't execute  $prtpicl -v -c temperature-sensor!\n";
    exit(3);
}

while(<DIAG>){
    push(@diag, $_);
}
close(DIAG);

unless( @diag > 0) {
    print STDERR "Can't find any temperature-sensor!\n";
    exit(3);
}

sub change_state {
    if ($_[0] > $state) {
        $state = $_[0];
    }
}

my $sensor      = undef;
my $warning     = undef;
my $critical    = undef;
my $temperature = undef;
my $get_temp    = 0;

foreach my $line (@diag) {

    $get_temp = 0;

    if ($line =~ /\s*([a-zA-Z0-9_]+)\s*\(temperature-sensor/) {
        $sensor = $1;
    } elsif ($line =~ /:HighWarningThreshold\s*(\d+)/) {
        $warning = $1;
    } elsif ($line =~ /:Temperature\s*(\d+)/) {
        $temperature = $1;
        $get_temp = 1;
    }

    if ($get_temp == 1) {
        if ($temperature <= $warning - $warn) {
            &change_state(0);
        } elsif ($temperature <= $warning) {
            &change_state(1);
        } else {
            &change_state(2);
        }
    $output = "$output $sensor: ${temperature}°C ";
    }

}

if ($state == 0) {
    $output = "Temperature OK --$output \n";
} elsif ($state == 1) {
    $output = "Temperature WARNING --$output \n";
} elsif ($state == 2) {
    $output = "Temperature CRITICAL --$output \n";
} else {
    $output = "Temperature UNKNOWN --$output \n";
}

print STDOUT "$output";
exit ($state);

sonnenblen.de - Das unabhängige Sun User Forum

Nagios-Plugin für Solaris
« am: 09. Juli 2009, 12:37:32 »

Offline meik

  • Sobl Bachelor
  • ***
  • Beiträge: 187
Re: Nagios-Plugin für Solaris
« Antwort #1 am: 09. Juli 2009, 16:41:40 »
Sieht die Ausgabe von prtpicl -v -c temperature-sensor auf allen Suns gleich aus?

Die Idee von picl ("platform information and control library") ist ja, Informationen über ein System auf eine Art und Weise zur Verfügung zu stellen, die man leicht auslesen und weiter verarbeiten kann.

Auf den Output von prtdiag trifft das übrigens _nicht_ zu. ;-)

Als erste Iteration sollte das Script aber auf den meisten Systemen laufen. Ich hab's mal auf einer T2000 gestartet und das sieht sinnvoll aus:

root@t200 # perl test.pl
Temperature OK -- T_CORE: 41°C  T_AMB: 26°C  T_TCORE: 38°C  T_BCORE: 37°C  T_AMB: 25°C  T_AMB: 21°C
root@t200 #

Aber der Teufel liegt wie oft im Detail, ich würde mich also nicht allzu blind darauf verlassen, dass alle Plattformen und alle Solaris Versionen (inclusive Updates) genau den gleichen Output generieren. Ich würde an deiner Stelle einfach dokumentieren, auf welchen Systemen es schon funktioniert hat.

claus

  • Gast
Re: Nagios-Plugin für Solaris
« Antwort #2 am: 09. Juli 2009, 21:52:07 »
Gibt es da nicht einen Satz C-Funktionen, den man verwenden könnte?

Offline dominik

  • Sobl Bachelor
  • ***
  • Beiträge: 182
  • Me, myself & I
    • Meine Heimseite
Re: Nagios-Plugin für Solaris
« Antwort #3 am: 10. Juli 2009, 08:20:18 »
Hallo linus

Weder auf einer Serengeti (SF4900) noch auf einer M4000 funktioniert das Script:

Zitat
# ./picl.pl
Can't find any temperature-sensor!

Gruss
Dominik

Offline dornroeschen

  • Sobl Junior
  • **
  • Beiträge: 64
Re: Nagios-Plugin für Solaris
« Antwort #4 am: 10. Juli 2009, 08:54:04 »
Gibt es da nicht einen Satz C-Funktionen, den man verwenden könnte?

Klaro,

man libpicl
man libpicltree

Rainer

Offline linus83

  • Sobl Bachelor
  • ***
  • Beiträge: 144
Re: Nagios-Plugin für Solaris
« Antwort #5 am: 10. Juli 2009, 12:07:42 »
Das ganze Plugin mal in C ist auch noch eine gute idee, mal sehen ob ich am Wochenende etwas zeit habe. eine Skriptsprace hat den Vorteil, dass man mal schnell mittels try&error Plugins schreiben kann.

Zitat
Auf den Output von prtdiag trifft das übrigens _nicht_ zu. ;-)

Für prtdiag habe ich ein Plugin gefunden, das hat noch einmal für fast jede eine eigene Konfiguration. URL zum Plugin http://www.le-seb.org/dotclear/index.php/2007/03/03/85-a-nagios-plugin-for-sun-hardware-failure-detection

@dominik
Kannst Du mal Deine Ausgabe von /usr/sbin/prtpicl -v -c temperature-sensor posten, dann kann ich vielleicht schnell eine Sonderbehandlung für die M4000 und die SF 4900 einbauen. Es kann sich daran liegen, die M4000 und die SF 4900 haben doch mehrere Prozessorboards, oder? Da werden sicher die Ausgaben über die Hardware leicht anderst aussehen als bei Systemen mit einem Board

Gruß
« Letzte Änderung: 10. Juli 2009, 12:33:32 von linus83 »

Offline dominik

  • Sobl Bachelor
  • ***
  • Beiträge: 182
  • Me, myself & I
    • Meine Heimseite
Re: Nagios-Plugin für Solaris
« Antwort #6 am: 10. Juli 2009, 13:00:37 »
Hi linus

Gibt überhaupt keinen Output. 'prtpicl -v | grep -i temp' zeigt auch nichts an. Liegt vielleicht daran, dass Systeme mit System Controller (SC, XSCF) diese Angaben gar nicht an das OS weiterreichen? (Also ist nur eine Vermutung!)

Gruss
Dominik

Offline meik

  • Sobl Bachelor
  • ***
  • Beiträge: 187
Re: Nagios-Plugin für Solaris
« Antwort #7 am: 10. Juli 2009, 13:18:35 »
Hi linus

Gibt überhaupt keinen Output. 'prtpicl -v | grep -i temp' zeigt auch nichts an. Liegt vielleicht daran, dass Systeme mit System Controller (SC, XSCF) diese Angaben gar nicht an das OS weiterreichen? (Also ist nur eine Vermutung!)

Gruss
Dominik


Bei den großen Büchsen (also 15k und Co, 6800/E6900 und Co, Mx000) sieht der System Controller natürlich alle Hardware im System, die Domain jeweils nur das, was zu ihr gehört. Da sollten aber auch die Temperatur-Sensoren für die Prozessoren der Domain mit drin sein.

Offline dominik

  • Sobl Bachelor
  • ***
  • Beiträge: 182
  • Me, myself & I
    • Meine Heimseite
Re: Nagios-Plugin für Solaris
« Antwort #8 am: 10. Juli 2009, 13:44:02 »
meik:

Ja, *sollte*, ist aber nicht so :) Auch 'prtdiag -v' zeigt auf diesen Maschinen nix an. Wenn ich mich richtig erinnere, war das auch bei der SF25k so, dass man nur auf dem SC die Temperatur angezeigt gekriegt hat. An das Verhalten der E10k erinner ich mich nicht mehr.

Gruss
Dominik

Offline meik

  • Sobl Bachelor
  • ***
  • Beiträge: 187
Re: Nagios-Plugin für Solaris
« Antwort #9 am: 10. Juli 2009, 14:33:35 »
meik:

Ja, *sollte*, ist aber nicht so :) Auch 'prtdiag -v' zeigt auf diesen Maschinen nix an. Wenn ich mich richtig erinnere, war das auch bei der SF25k so, dass man nur auf dem SC die Temperatur angezeigt gekriegt hat. An das Verhalten der E10k erinner ich mich nicht mehr.

Gruss
Dominik

Ich habe mal kurz nachgeschaut, was der SunMC-Agent anzeigen kann, das sollte ziemlich deckungsgleich mit den Möglichkeiten der Hardware sein. Und da sieht die Domain tatsächlich keine Infos über Temperatursensoren oder Lüfterdrehzahlen.

http://docs.sun.com/source/819-0417/index.html

Das macht es natürlich etwas komplizierter, weil die Info vom System Controller dem System zugeordnet werden muss.

sonnenblen.de - Das unabhängige Sun User Forum

Re: Nagios-Plugin für Solaris
« Antwort #9 am: 10. Juli 2009, 14:33:35 »

Offline linus83

  • Sobl Bachelor
  • ***
  • Beiträge: 144
Re: Nagios-Plugin für Solaris
« Antwort #10 am: 10. Juli 2009, 19:04:34 »
Da das größte was ich überwachen muss eine SF 490 ist, muss ich mich damit nicht rum schlagen. Aber ich wollte ein plugin schreiben, was auf möglichst vielen Suns sinnvoll arbeitet. Ich habe noch nie an einer derartigen Maschiene gesessen. Wenn man da die Hardware anderst abfragt, dann könnte man das auch mit einbauen.

Man könnte vielleicht über den ILOM die Sensoren abfragen. Das ist aber sicher etwas komplizierter in perl.

Gruß

Offline meik

  • Sobl Bachelor
  • ***
  • Beiträge: 187
Re: Nagios-Plugin für Solaris
« Antwort #11 am: 10. Juli 2009, 19:36:22 »
Da das größte was ich überwachen muss eine SF 490 ist, muss ich mich damit nicht rum schlagen. Aber ich wollte ein plugin schreiben, was auf möglichst vielen Suns sinnvoll arbeitet. Ich habe noch nie an einer derartigen Maschiene gesessen. Wenn man da die Hardware anderst abfragt, dann könnte man das auch mit einbauen.

Naja, für solche Maschinen würde ich dann eher ein eigenes Plugin schreiben, dass a) die Hardware entsprechend über den System Controller abfragt und b) dann die Alarme den jeweiligen Boards/Domains zuordnet.

Ich hätte aber gedacht, dass es da schon etwas (fast) fertiges auf nagiosexchange.org gibt.

Zitat
Man könnte vielleicht über den ILOM die Sensoren abfragen. Das ist aber sicher etwas komplizierter in perl.

Ein ILOM haben ja nur die x86-Kisten. Das kann man sehr bequem per IPMI abfragen.