SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Entwicklung von Nagios-Plugins mit
Net::SNMP und Nagios::Plugin
Plugins prima selbst gemacht
Martin Hefter
Schenker Deutschland AG
N¨urnberg, 28. - 29. Oktober 2009
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Neuer Abschnitt
1 Einf¨uhrung
2 Nagios::Plugin
3 Net::SNMP
4 Beispiel
5 Ende
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 2 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Zur Person
Erfahrungen mit Nagios seit 2004
Planung und Umsetzung der Nagios-¨Uberwachung f¨ur das Hess.
Landesamt f¨ur Bodenmanagement und Geoinformation (fr¨uher
Hess. Landesvermessungsamt)
Weitere kleine Projekte und Diplomarbeit zum Thema
”
¨Uberwachen von Gesch¨aftsprozessen mit Nagios“
Nagios-Plugins
Pluginpack zur ¨Uberwachung von Fujitsu(-Siemens-) Hardware
check power fsc
check fans fsc
check temp fsc
check systemhealth fsc
check raid fsc
Plugin zur ¨Uberwachung von USV-Systemen der Firma APC
check ups apc
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 3 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Zielsetzung
Ziel dieses Vortrags
Dieser Vortrag soll einen kurze Einf¨uhrung in die Verwendung
von Nagios::Plugin und Net::SNMP vermitteln. Es k¨onnen
leider nicht alle Methoden und M¨oglichkeiten der beiden
Module behandelt werden. Ausf¨uhrlichere Informationen zu
den beiden Modulen finden Sie auf der jeweiligen Website.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 4 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Agenda
1 Einf¨uhrung
2 Nagios::Plugin
3 Net::SNMP
4 Beispiel
5 Ende
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 5 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Neuer Abschnitt
1 Einf¨uhrung
2 Nagios::Plugin
3 Net::SNMP
4 Beispiel
5 Ende
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 6 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Installation
Installation von Nagios::Plugin
Beim Kompilieren der Nagios-Plugins ab Version 1.4.11 kann
das Perl Modul Nagios::Plugin mit ¨ubersetzt werden.
Kompilieren aus dem Sourcecode
./configure --enable-perl-modules
Alternativ
http://www.cpan.org/
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 7 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Einbinden von Nagios::Plugin
Einbinden von Nagios::Plugin
use FindBin
use lib "$FindBin ::Bin /../ perl/lib";
use Nagios :: Plugin;
Weitere Informationen zu Nagios::Plugin
http://search.cpan.org/~tonvoon/Nagios-Plugin-0.
33/lib/Nagios/Plugin.pm
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 8 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Einbinden von Nagios::Plugin
Einbinden von Nagios::Plugin
use FindBin
use lib "$FindBin ::Bin /../ perl/lib";
use Nagios :: Plugin;
Weitere Informationen zu Nagios::Plugin
http://search.cpan.org/~tonvoon/Nagios-Plugin-0.
33/lib/Nagios/Plugin.pm
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 8 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Objekt erzeugen
Objekt erzeugen
Das Nagios-Plugin-Objekt kapselt die wichtigsten Funktion f¨ur
ein Nagios-Plugin.
Beispiel Aufruf des Konstuktors
$np = Nagios ::Plugin ->new(
usage => "Usage: %s [-H <host >]"
shortname => "USV");
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 9 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Objekt erzeugen
Beispiel Aufruf des Konstrutors
$np = Nagios ::Plugin ->new(
usage => "Usage: %s [-H <host >]"
shortname => "USV");
Hinweis
Wenn das Argument usage verwendet wird, wird automatisch
eine Instanz von Nagios::Plugin::Getopt zur Verarbeitung von
Kommandozeilen-Argumenten erzeugt.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 10 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Kommandozeilen-Argumente hinzuf¨ugen
add_arg
F¨ugt dem Plugin ein Kommandozeilen-Argument hinzu.
Beispiel Aufruf add_arg
$np ->add_arg(
spec => ’hostname|H=s’,
help => "-H, --hostname (Hostname or IP Address)");
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 11 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Kommandozeilen-Argumente auswerten
getopts
¨Uberpr¨uft die Kommandozeilen-Argumente auf Vollst¨andigkeit
und stellt sie f¨ur den Zugriff bereit.
Zugriff auf Kommandozeilen-Argumente
$np ->getopts;
$hostname = $np ->opts ->hostname;
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 12 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Warnschwellen und Bereiche
Erzeugt einen Alarm wenn X...
Bereich Bemerkung
10 < 0 oder > 10 (Außerhalb des Bereiches [0 . . . 10])
10: < 10, (Außerhalb des Bereiches [10 . . . ∞])
∼:10 > 10, (Außerhalb des Bereiches [-∞ . . . 10])
10:20 < 10 or > 20, (Außerhalb des Bereiches [10 . . . 20])
@10:20 ≥ 10 and ≤ 20, (Innerhalb des Bereiches 10 . . . 20)
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 13 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Warnschwellen und Bereiche
Temperaturmessung im Serverraum
Bereichsdefinition
Warning 19:21
Critical 18:22
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 14 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Warnschwellen und Bereiche
set_thresholds
Legt die Grenzwerte f¨ur die ¨Uberpr¨ufung eines Wertes fest.
Beispiel Aufruf set_thresholds
$np -> set_thresholds (
warning => $warning ,
critical => $critical );
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 15 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Warnschwellen und Bereiche
check_thresholds
Vergleicht den ¨ubergebenen Wert mit den festgelegten
Grenzwerten und generiert den entsprechenden R¨uckgabewert
OK, Warning oder Critical.
Beispiel Aufruf check_thresholds
$code = $np -> check_threshold ($runtime );
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 16 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Nachrichten
add_message
F¨ugt eine Nachricht der entsprechenden Queue hinzu. Es wird
jeweils eine eigene Queue f¨ur OK, Warning und Critical
gef¨uhrt.
Beispiel Aufruf add_message (1/2)
$np -> add_message(’OK’,"Everything is all right");
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 17 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Nachrichten
Beispiel Aufruf add_message (1/2)
$np -> add_message(’OK’,"Everything is all right");
Beispiel Aufruf add_message mit check thresholds (2/2)
$np -> add_message( check_thresholds ($runtime),
"Battery Runtime is $runtime");
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 18 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Nachrichten
check_message
¨Uberpr¨uft die Nachrichten Queues und gibt die letzte
Nachricht der Queue mit der h¨ochsten Priorit¨at zur¨uck.
1 Critical
2 Warning
3 OK
Mit den Parametern join und join_all k¨onnen auch alle
Queues zur¨uckgeben werden.
check_message (1/2) Eine Queue
($code , $message) = $np -> check_messages ();
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 19 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Nachrichten
check_message (1/2) Eine Queue
($code , $message) = $np -> check_messages ();
check_message (2/2) Alle Queues
($code , $message) = $np -> check_messages (
join => "<BR >",
join_all => "<BR >");
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 20 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Performance Daten
add_perfdata
F¨ugt den Performance-Daten einen Wert hinzu.
Beispiel Aufruf add_perfdata
$np -> add_perfdata (
label => "batCapacity",
value => $batteryCapacity ,
threshold => $capacityThreshold ,
uom => "%",
min => 0,
max => 100);
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 21 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Exit-Methoden (1/2)
nagios_exit
Beendet das Skript mit einer Nachricht und einem
R¨uckgabewert.
Beispiel Aufruf nagios_exit
$np -> nagios_exit(
return_code => OK ,
message => "Everything is alright");
Hinweis
Diese Methode sollte verwendet werden, um das Plugin regul¨ar
zu beenden.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 22 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Exit-Methoden (1/2)
nagios_exit
Beendet das Skript mit einer Nachricht und einem
R¨uckgabewert.
Beispiel Aufruf nagios_exit
$np -> nagios_exit(
return_code => OK ,
message => "Everything is alright");
Hinweis
Diese Methode sollte verwendet werden, um das Plugin regul¨ar
zu beenden.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 22 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Exit-Methoden (2/2)
nagios_die
Beendet das Skript mit einer Nachricht und dem R¨uckgabewert
Unknown. Das Argument return_code ist hier optional.
Beispiel Aufruf nagios_die
$np ->nagios_die(
message => "Unable to open SNMP connection");
Hinweis
Diese Methode sollte verwendet werden, um das Plugin bei
einem Fehler zu beenden.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 23 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Exit-Methoden (2/2)
nagios_die
Beendet das Skript mit einer Nachricht und dem R¨uckgabewert
Unknown. Das Argument return_code ist hier optional.
Beispiel Aufruf nagios_die
$np ->nagios_die(
message => "Unable to open SNMP connection");
Hinweis
Diese Methode sollte verwendet werden, um das Plugin bei
einem Fehler zu beenden.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 23 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Neuer Abschnitt
1 Einf¨uhrung
2 Nagios::Plugin
3 Net::SNMP
4 Beispiel
5 Ende
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 24 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
SNMP
SNMP Tree
Managed Objects
Die Managed Objects werden durch einen eindeutigen Object
Identifier (OID) identifiziert. Die OID beschreibt den Weg durch den
Baum zum Managed Object.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 25 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Management Information Base
Management Information Base (MIB)
Die MIB beschreibt die Informationen, die ¨uber SNMP abgefragt
werden k¨onnen.
Beispiel OID
.1.3.6.1.4.1.318.1.1.1.2.2.3.0 = 72000
Beispiel MIB
upsAdvBatteryRunTimeRemaining OBJECT -TYPE
SYNTAX TimeTicks
ACCESS read -only
STATUS mandatory
DESCRIPTION
"The UPS battery run time remaining before battery exhaustion."
::= { upsAdvBattery 3 }
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 26 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
N¨utzliche Hilfsmittel
Kommandozeilen-Tools
snmpget
snmpwalk
Websites (MIB-Browser)
http://support.ipmonitor.com/snmp_center.aspx
http://www.oidview.com/mibs/detail.html
uvm.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 27 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Installation
Installation von Net::SNMP
Die meisten Linux-Distributionen liefern bereits fertige Pakete
f¨ur Net::SNMP mit.
Installation unter Debian
apt-get install libsnmp-perl
Alternativ (Sourcecode)
http://net-snmp.sourceforge.net
http://www.cpan.org/
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 28 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Einbinden von Net::SNMP
Einbinden von Net::SNMP
use Net::SNMP
Weitere Informationen zu Net::SNMP:
http://search.cpan.org/~dtown/Net-SNMP-v6.0.0/
lib/Net/SNMP.pm
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 29 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Einbinden von Net::SNMP
Einbinden von Net::SNMP
use Net::SNMP
Weitere Informationen zu Net::SNMP:
http://search.cpan.org/~dtown/Net-SNMP-v6.0.0/
lib/Net/SNMP.pm
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 29 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Verbindung aufnehmen
Verbindung aufnehmen
Das Session-Objekt regelt die Verbindung zwischen dem Client
und dem SNMP-Agenten
Beispiel Session-Objekt erzeugen
($session ,$error) = Net::SNMP ->session(
-hostname => $host ,
-community => $community ,
-port => $snmp_port ,
-version => $snmp_version );
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 30 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Anfragen stellen
Eine OID abfragen
Mit get_request() lassen sich eine oder mehere OIDs vom
Agenten abfragen. Entspricht der Funktion von snmpget auf
der Kommandozeile.
Beispiel get_request()
$timeOnBattery = " 1.3.6.1.4.1.318.1.1.1.2.1.2.0 ";
$lineFailCause = " 1.3.6.1.4.1.318.1.1.1.3.2.5.0 ";
push(@snmpoids , $timeOnBattery );
push(@snmpoids , $lineFailCause );
$result = $session ->get_request(varbindlist => @snmpoids );
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 31 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Anfragen stellen
Einen OID Baum abfragen
Mit get_table() kann ein ganzer OID-Baum abgefragt
werden. Entspricht der Funktion von snmpwalk auf der
Kommandozeile.
Beispiel get_table()
$physicalDev = " 1.3.6.1.4.1.231.2.49.1.5.2.1.3 ";
$devTable = $session ->get_table(baseoid => $physicalDev );
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 32 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Anfragen stellen
Hinweis
Die Abfrageergebnisse von get_table() k¨onnen sehr
umfangreich ausfallen, wenn ein Knoten nahe an der Wurzel
gew¨ahlt wird.
Hinweis
Net::SNMP bietet noch weitere Methoden um Abfragen zu
stellen z.B. get_entries() und get_bulk_request().
Damit lassen sich die Abfragen weiter optimieren. Allerdings
setzt dies mindestens SNMP Version 2 voraus.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 33 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Ergebnisse auswerten
Abfrage Ergebnisse
Die Methoden get_request() und get_table() liefern
jeweils eine Referenz auf einen HASH zur¨uck, der sich aus der
OID als Schl¨ussel dem dazugeh¨origen Wert zusammensetzt.
Beispiel (1/2) Zugriff auf einen einzelnen Wert
$timeOnBatteryOID = " 1.3.6.1.4.1.318.1.1.1.2.1.2.0 ";
push(@snmpoids , $timeOnBatteryOID );
$result = $session ->get_request(varbindlist => @snmpoids );
$timeOnBattery = $result ->{ $timeOnBatteryOID };
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 34 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Ergebnisse auswerten
Beispiel (1/2) Zugriff auf einen einzelnen Wert
$timeOnBatteryOID = " 1.3.6.1.4.1.318.1.1.1.2.1.2.0 ";
push(@snmpoids , $timeOnBatteryOID );
$result = $session ->get_request(varbindlist => @snmpoids );
$timeOnBattery = $result ->{ $timeOnBatteryOID };
Beispiel (2/2) Zugriff auf alle Werte
$physicalDevOID = " 1.3.6.1.4.1.231.2.49.1.5.2.1.3 ";
$devTable = $session ->get_table(baseoid => $physicalDevOID );
foreach my $oid (sort(keys (%{ $devTable }))) {
$dev = $devTable ->{$oid };
}
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 35 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Ergebnisse auswerten
Beispiel (2/2) Zugriff auf alle Werte
$physicalDevOID = " 1.3.6.1.4.1.231.2.49.1.5.2.1.3 ";
$devTable = $session ->get_table(baseoid => $physicalDevOID );
foreach my $oid (sort(keys (%{ $devTable }))) {
$dev = $devTable ->{$oid };
}
Hinweis
Nicht vergessen nach Beendigung der Abfragen die Verbindung
mit session->close() explizit zu schließen.
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 36 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Neuer Abschnitt
1 Einf¨uhrung
2 Nagios::Plugin
3 Net::SNMP
4 Beispiel
5 Ende
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 37 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Beispiel
Beispiel
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 38 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Neuer Abschnitt
1 Einf¨uhrung
2 Nagios::Plugin
3 Net::SNMP
4 Beispiel
5 Ende
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 39 von 40
Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende
Ende
Fragen?
Sie brauchen ein neues Nagios Plugin,
haben aber keine Zeit selber zu programmieren?
Gerne erstelle ich Ihnen ein Angebot.
info@martinhefter.de
- Nagios Consulting -
- Softwareentwicklung -
Slides TEXed with LATEX-Beamer
M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 40 von 40

Weitere ähnliche Inhalte

Ähnlich wie OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin by Martin Hefter

OSMC 2014: Plugin Entwicklung für Einsteiger | Alexander Wirt
OSMC 2014: Plugin Entwicklung für Einsteiger | Alexander WirtOSMC 2014: Plugin Entwicklung für Einsteiger | Alexander Wirt
OSMC 2014: Plugin Entwicklung für Einsteiger | Alexander WirtNETWAYS
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...Klaus Bild
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlungroskakori
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNETWAYS
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...NETWAYS
 
OSMC 2009 | Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...
OSMC 2009 |  Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...OSMC 2009 |  Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...
OSMC 2009 | Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...NETWAYS
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...NETWAYS
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkdie.agilen GmbH
 
SplunkLive! München - Flughafen München
SplunkLive! München - Flughafen MünchenSplunkLive! München - Flughafen München
SplunkLive! München - Flughafen MünchenSplunk
 
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis
 
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang BarthOSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang BarthNETWAYS
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)NETWAYS
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)NETWAYS
 
ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...
ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...
ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...Boris Glavic
 
Automatisierung von Windows-Anwendungen
Automatisierung von Windows-AnwendungenAutomatisierung von Windows-Anwendungen
Automatisierung von Windows-AnwendungenAndreas Schreiber
 

Ähnlich wie OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin by Martin Hefter (20)

OSMC 2014: Plugin Entwicklung für Einsteiger | Alexander Wirt
OSMC 2014: Plugin Entwicklung für Einsteiger | Alexander WirtOSMC 2014: Plugin Entwicklung für Einsteiger | Alexander Wirt
OSMC 2014: Plugin Entwicklung für Einsteiger | Alexander Wirt
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
 
check_sap_health
check_sap_healthcheck_sap_health
check_sap_health
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlung
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
OSMC 2009 | Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...
OSMC 2009 |  Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...OSMC 2009 |  Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...
OSMC 2009 | Das Nagios-Benachrichtigungssystem (Grundlagen, Escalations, Dep...
 
SNMP Applied
SNMP AppliedSNMP Applied
SNMP Applied
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
 
SplunkLive! München - Flughafen München
SplunkLive! München - Flughafen MünchenSplunkLive! München - Flughafen München
SplunkLive! München - Flughafen München
 
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
 
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang BarthOSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
 
ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...
ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...
ICDE 2009 - Perm: Processing Provenance and Data on the same Data Model throu...
 
Automatisierung von Windows-Anwendungen
Automatisierung von Windows-AnwendungenAutomatisierung von Windows-Anwendungen
Automatisierung von Windows-Anwendungen
 

OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin by Martin Hefter

  • 1. Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin Plugins prima selbst gemacht Martin Hefter Schenker Deutschland AG N¨urnberg, 28. - 29. Oktober 2009
  • 2. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Neuer Abschnitt 1 Einf¨uhrung 2 Nagios::Plugin 3 Net::SNMP 4 Beispiel 5 Ende M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 2 von 40
  • 3. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Zur Person Erfahrungen mit Nagios seit 2004 Planung und Umsetzung der Nagios-¨Uberwachung f¨ur das Hess. Landesamt f¨ur Bodenmanagement und Geoinformation (fr¨uher Hess. Landesvermessungsamt) Weitere kleine Projekte und Diplomarbeit zum Thema ” ¨Uberwachen von Gesch¨aftsprozessen mit Nagios“ Nagios-Plugins Pluginpack zur ¨Uberwachung von Fujitsu(-Siemens-) Hardware check power fsc check fans fsc check temp fsc check systemhealth fsc check raid fsc Plugin zur ¨Uberwachung von USV-Systemen der Firma APC check ups apc M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 3 von 40
  • 4. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Zielsetzung Ziel dieses Vortrags Dieser Vortrag soll einen kurze Einf¨uhrung in die Verwendung von Nagios::Plugin und Net::SNMP vermitteln. Es k¨onnen leider nicht alle Methoden und M¨oglichkeiten der beiden Module behandelt werden. Ausf¨uhrlichere Informationen zu den beiden Modulen finden Sie auf der jeweiligen Website. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 4 von 40
  • 5. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Agenda 1 Einf¨uhrung 2 Nagios::Plugin 3 Net::SNMP 4 Beispiel 5 Ende M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 5 von 40
  • 6. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Neuer Abschnitt 1 Einf¨uhrung 2 Nagios::Plugin 3 Net::SNMP 4 Beispiel 5 Ende M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 6 von 40
  • 7. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Installation Installation von Nagios::Plugin Beim Kompilieren der Nagios-Plugins ab Version 1.4.11 kann das Perl Modul Nagios::Plugin mit ¨ubersetzt werden. Kompilieren aus dem Sourcecode ./configure --enable-perl-modules Alternativ http://www.cpan.org/ M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 7 von 40
  • 8. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Einbinden von Nagios::Plugin Einbinden von Nagios::Plugin use FindBin use lib "$FindBin ::Bin /../ perl/lib"; use Nagios :: Plugin; Weitere Informationen zu Nagios::Plugin http://search.cpan.org/~tonvoon/Nagios-Plugin-0. 33/lib/Nagios/Plugin.pm M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 8 von 40
  • 9. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Einbinden von Nagios::Plugin Einbinden von Nagios::Plugin use FindBin use lib "$FindBin ::Bin /../ perl/lib"; use Nagios :: Plugin; Weitere Informationen zu Nagios::Plugin http://search.cpan.org/~tonvoon/Nagios-Plugin-0. 33/lib/Nagios/Plugin.pm M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 8 von 40
  • 10. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Objekt erzeugen Objekt erzeugen Das Nagios-Plugin-Objekt kapselt die wichtigsten Funktion f¨ur ein Nagios-Plugin. Beispiel Aufruf des Konstuktors $np = Nagios ::Plugin ->new( usage => "Usage: %s [-H <host >]" shortname => "USV"); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 9 von 40
  • 11. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Objekt erzeugen Beispiel Aufruf des Konstrutors $np = Nagios ::Plugin ->new( usage => "Usage: %s [-H <host >]" shortname => "USV"); Hinweis Wenn das Argument usage verwendet wird, wird automatisch eine Instanz von Nagios::Plugin::Getopt zur Verarbeitung von Kommandozeilen-Argumenten erzeugt. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 10 von 40
  • 12. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Kommandozeilen-Argumente hinzuf¨ugen add_arg F¨ugt dem Plugin ein Kommandozeilen-Argument hinzu. Beispiel Aufruf add_arg $np ->add_arg( spec => ’hostname|H=s’, help => "-H, --hostname (Hostname or IP Address)"); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 11 von 40
  • 13. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Kommandozeilen-Argumente auswerten getopts ¨Uberpr¨uft die Kommandozeilen-Argumente auf Vollst¨andigkeit und stellt sie f¨ur den Zugriff bereit. Zugriff auf Kommandozeilen-Argumente $np ->getopts; $hostname = $np ->opts ->hostname; M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 12 von 40
  • 14. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Warnschwellen und Bereiche Erzeugt einen Alarm wenn X... Bereich Bemerkung 10 < 0 oder > 10 (Außerhalb des Bereiches [0 . . . 10]) 10: < 10, (Außerhalb des Bereiches [10 . . . ∞]) ∼:10 > 10, (Außerhalb des Bereiches [-∞ . . . 10]) 10:20 < 10 or > 20, (Außerhalb des Bereiches [10 . . . 20]) @10:20 ≥ 10 and ≤ 20, (Innerhalb des Bereiches 10 . . . 20) M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 13 von 40
  • 15. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Warnschwellen und Bereiche Temperaturmessung im Serverraum Bereichsdefinition Warning 19:21 Critical 18:22 M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 14 von 40
  • 16. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Warnschwellen und Bereiche set_thresholds Legt die Grenzwerte f¨ur die ¨Uberpr¨ufung eines Wertes fest. Beispiel Aufruf set_thresholds $np -> set_thresholds ( warning => $warning , critical => $critical ); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 15 von 40
  • 17. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Warnschwellen und Bereiche check_thresholds Vergleicht den ¨ubergebenen Wert mit den festgelegten Grenzwerten und generiert den entsprechenden R¨uckgabewert OK, Warning oder Critical. Beispiel Aufruf check_thresholds $code = $np -> check_threshold ($runtime ); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 16 von 40
  • 18. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Nachrichten add_message F¨ugt eine Nachricht der entsprechenden Queue hinzu. Es wird jeweils eine eigene Queue f¨ur OK, Warning und Critical gef¨uhrt. Beispiel Aufruf add_message (1/2) $np -> add_message(’OK’,"Everything is all right"); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 17 von 40
  • 19. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Nachrichten Beispiel Aufruf add_message (1/2) $np -> add_message(’OK’,"Everything is all right"); Beispiel Aufruf add_message mit check thresholds (2/2) $np -> add_message( check_thresholds ($runtime), "Battery Runtime is $runtime"); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 18 von 40
  • 20. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Nachrichten check_message ¨Uberpr¨uft die Nachrichten Queues und gibt die letzte Nachricht der Queue mit der h¨ochsten Priorit¨at zur¨uck. 1 Critical 2 Warning 3 OK Mit den Parametern join und join_all k¨onnen auch alle Queues zur¨uckgeben werden. check_message (1/2) Eine Queue ($code , $message) = $np -> check_messages (); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 19 von 40
  • 21. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Nachrichten check_message (1/2) Eine Queue ($code , $message) = $np -> check_messages (); check_message (2/2) Alle Queues ($code , $message) = $np -> check_messages ( join => "<BR >", join_all => "<BR >"); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 20 von 40
  • 22. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Performance Daten add_perfdata F¨ugt den Performance-Daten einen Wert hinzu. Beispiel Aufruf add_perfdata $np -> add_perfdata ( label => "batCapacity", value => $batteryCapacity , threshold => $capacityThreshold , uom => "%", min => 0, max => 100); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 21 von 40
  • 23. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Exit-Methoden (1/2) nagios_exit Beendet das Skript mit einer Nachricht und einem R¨uckgabewert. Beispiel Aufruf nagios_exit $np -> nagios_exit( return_code => OK , message => "Everything is alright"); Hinweis Diese Methode sollte verwendet werden, um das Plugin regul¨ar zu beenden. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 22 von 40
  • 24. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Exit-Methoden (1/2) nagios_exit Beendet das Skript mit einer Nachricht und einem R¨uckgabewert. Beispiel Aufruf nagios_exit $np -> nagios_exit( return_code => OK , message => "Everything is alright"); Hinweis Diese Methode sollte verwendet werden, um das Plugin regul¨ar zu beenden. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 22 von 40
  • 25. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Exit-Methoden (2/2) nagios_die Beendet das Skript mit einer Nachricht und dem R¨uckgabewert Unknown. Das Argument return_code ist hier optional. Beispiel Aufruf nagios_die $np ->nagios_die( message => "Unable to open SNMP connection"); Hinweis Diese Methode sollte verwendet werden, um das Plugin bei einem Fehler zu beenden. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 23 von 40
  • 26. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Exit-Methoden (2/2) nagios_die Beendet das Skript mit einer Nachricht und dem R¨uckgabewert Unknown. Das Argument return_code ist hier optional. Beispiel Aufruf nagios_die $np ->nagios_die( message => "Unable to open SNMP connection"); Hinweis Diese Methode sollte verwendet werden, um das Plugin bei einem Fehler zu beenden. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 23 von 40
  • 27. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Neuer Abschnitt 1 Einf¨uhrung 2 Nagios::Plugin 3 Net::SNMP 4 Beispiel 5 Ende M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 24 von 40
  • 28. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende SNMP SNMP Tree Managed Objects Die Managed Objects werden durch einen eindeutigen Object Identifier (OID) identifiziert. Die OID beschreibt den Weg durch den Baum zum Managed Object. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 25 von 40
  • 29. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Management Information Base Management Information Base (MIB) Die MIB beschreibt die Informationen, die ¨uber SNMP abgefragt werden k¨onnen. Beispiel OID .1.3.6.1.4.1.318.1.1.1.2.2.3.0 = 72000 Beispiel MIB upsAdvBatteryRunTimeRemaining OBJECT -TYPE SYNTAX TimeTicks ACCESS read -only STATUS mandatory DESCRIPTION "The UPS battery run time remaining before battery exhaustion." ::= { upsAdvBattery 3 } M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 26 von 40
  • 30. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende N¨utzliche Hilfsmittel Kommandozeilen-Tools snmpget snmpwalk Websites (MIB-Browser) http://support.ipmonitor.com/snmp_center.aspx http://www.oidview.com/mibs/detail.html uvm. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 27 von 40
  • 31. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Installation Installation von Net::SNMP Die meisten Linux-Distributionen liefern bereits fertige Pakete f¨ur Net::SNMP mit. Installation unter Debian apt-get install libsnmp-perl Alternativ (Sourcecode) http://net-snmp.sourceforge.net http://www.cpan.org/ M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 28 von 40
  • 32. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Einbinden von Net::SNMP Einbinden von Net::SNMP use Net::SNMP Weitere Informationen zu Net::SNMP: http://search.cpan.org/~dtown/Net-SNMP-v6.0.0/ lib/Net/SNMP.pm M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 29 von 40
  • 33. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Einbinden von Net::SNMP Einbinden von Net::SNMP use Net::SNMP Weitere Informationen zu Net::SNMP: http://search.cpan.org/~dtown/Net-SNMP-v6.0.0/ lib/Net/SNMP.pm M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 29 von 40
  • 34. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Verbindung aufnehmen Verbindung aufnehmen Das Session-Objekt regelt die Verbindung zwischen dem Client und dem SNMP-Agenten Beispiel Session-Objekt erzeugen ($session ,$error) = Net::SNMP ->session( -hostname => $host , -community => $community , -port => $snmp_port , -version => $snmp_version ); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 30 von 40
  • 35. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Anfragen stellen Eine OID abfragen Mit get_request() lassen sich eine oder mehere OIDs vom Agenten abfragen. Entspricht der Funktion von snmpget auf der Kommandozeile. Beispiel get_request() $timeOnBattery = " 1.3.6.1.4.1.318.1.1.1.2.1.2.0 "; $lineFailCause = " 1.3.6.1.4.1.318.1.1.1.3.2.5.0 "; push(@snmpoids , $timeOnBattery ); push(@snmpoids , $lineFailCause ); $result = $session ->get_request(varbindlist => @snmpoids ); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 31 von 40
  • 36. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Anfragen stellen Einen OID Baum abfragen Mit get_table() kann ein ganzer OID-Baum abgefragt werden. Entspricht der Funktion von snmpwalk auf der Kommandozeile. Beispiel get_table() $physicalDev = " 1.3.6.1.4.1.231.2.49.1.5.2.1.3 "; $devTable = $session ->get_table(baseoid => $physicalDev ); M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 32 von 40
  • 37. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Anfragen stellen Hinweis Die Abfrageergebnisse von get_table() k¨onnen sehr umfangreich ausfallen, wenn ein Knoten nahe an der Wurzel gew¨ahlt wird. Hinweis Net::SNMP bietet noch weitere Methoden um Abfragen zu stellen z.B. get_entries() und get_bulk_request(). Damit lassen sich die Abfragen weiter optimieren. Allerdings setzt dies mindestens SNMP Version 2 voraus. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 33 von 40
  • 38. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Ergebnisse auswerten Abfrage Ergebnisse Die Methoden get_request() und get_table() liefern jeweils eine Referenz auf einen HASH zur¨uck, der sich aus der OID als Schl¨ussel dem dazugeh¨origen Wert zusammensetzt. Beispiel (1/2) Zugriff auf einen einzelnen Wert $timeOnBatteryOID = " 1.3.6.1.4.1.318.1.1.1.2.1.2.0 "; push(@snmpoids , $timeOnBatteryOID ); $result = $session ->get_request(varbindlist => @snmpoids ); $timeOnBattery = $result ->{ $timeOnBatteryOID }; M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 34 von 40
  • 39. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Ergebnisse auswerten Beispiel (1/2) Zugriff auf einen einzelnen Wert $timeOnBatteryOID = " 1.3.6.1.4.1.318.1.1.1.2.1.2.0 "; push(@snmpoids , $timeOnBatteryOID ); $result = $session ->get_request(varbindlist => @snmpoids ); $timeOnBattery = $result ->{ $timeOnBatteryOID }; Beispiel (2/2) Zugriff auf alle Werte $physicalDevOID = " 1.3.6.1.4.1.231.2.49.1.5.2.1.3 "; $devTable = $session ->get_table(baseoid => $physicalDevOID ); foreach my $oid (sort(keys (%{ $devTable }))) { $dev = $devTable ->{$oid }; } M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 35 von 40
  • 40. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Ergebnisse auswerten Beispiel (2/2) Zugriff auf alle Werte $physicalDevOID = " 1.3.6.1.4.1.231.2.49.1.5.2.1.3 "; $devTable = $session ->get_table(baseoid => $physicalDevOID ); foreach my $oid (sort(keys (%{ $devTable }))) { $dev = $devTable ->{$oid }; } Hinweis Nicht vergessen nach Beendigung der Abfragen die Verbindung mit session->close() explizit zu schließen. M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 36 von 40
  • 41. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Neuer Abschnitt 1 Einf¨uhrung 2 Nagios::Plugin 3 Net::SNMP 4 Beispiel 5 Ende M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 37 von 40
  • 42. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Beispiel Beispiel M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 38 von 40
  • 43. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Neuer Abschnitt 1 Einf¨uhrung 2 Nagios::Plugin 3 Net::SNMP 4 Beispiel 5 Ende M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 39 von 40
  • 44. Einf¨uhrung Nagios::Plugin Net::SNMP Beispiel Ende Ende Fragen? Sie brauchen ein neues Nagios Plugin, haben aber keine Zeit selber zu programmieren? Gerne erstelle ich Ihnen ein Angebot. info@martinhefter.de - Nagios Consulting - - Softwareentwicklung - Slides TEXed with LATEX-Beamer M. Hefter - OSMC 2009 Plugins mit Net::SNMP und Nagios::Plugins 40 von 40