SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
SNMP Applied



SNMP-Monitoring planen, konfigurieren und integrieren




                 Gerrit Beine
                mail@gerritbeine.com


                                                        1
Motivation:
Warum dieser Vortrag?




                        2
Ich habe mir seit Jahren gewünscht,
  dass mir jemand SNMP erklärt...




                                      3
Ziele des Vortrags


●   Überblick zu SNMP liefern
●   Grundlegende Anwendung von Net-SNMP erklären
●   Erstellen eigener SNMP Traps mit Perl
●   Zusammenspiel von SNMP und Nagios beleuchten




                                                   4
Grundlegendes zu SNMP




                        5
SNMP


●   Simple Network Management Protocol
    ●   Verwendet UDP, Ports 161 und 162
●   Historie
    ●   Version 1 (1988) Ursprüngliche Spezifikatin in RFC 1155-1157
    ●   Secure SNMP (1992) RFC1351-1353, nie offiziell eingeführt
    ●   Party-based SNMP (1993, SNMPv2p) RFC 1441, 1445-1447, führte
        getbulk ein, erhöhte Sicherheit, heute nicht mehr im Einsatz
    ●   User-based SNMP (1996, SNMPv2u) RFC 1909-1910, heute nicht mehr
        im Einsatz
    ●   Community-based SNMP (1996, SNMPv2c) RFC 1901, 1905-1906,
        Erweiterung von Version 1 um Features aus SNMPv2p
    ●   Version 3 (2002), RFC 3410-3418, Fokus auf Sicherheit



                                                                       6
Anwendungen von SNMP


●   Kontinuierliches Monitoring (Polling)
    ●   Uptime, Load
    ●   Netzwerkverkehr
    ●   Speicherverbrauch (RAM, Festplatten)
    ●   Hardware-Zustand (S.M.A.R.T., Lüfterdrehzahl)
●   Information über Ereignisse (SNMP-Traps)
    ●   Fehlersituationen
    ●   Zustandswechsel




                                                        7
SNMP Begriffswelt


●   Agent – SNMP-Daemon, der Informationen via UDP 161 bereitstellt oder
    Traps via UDP 162 versendet
●   Manager – SNMP-Client, der Informationen via UDP 161 einsammelt
●   Trap – SNMP-Nachricht, über UDP 162 versendet
●   MIB – Management Information Base
    ●   Dateien mit strukturiertem Text nach ASN.1
    ●   Beschreiben Monitoring-Objekte
    ●   Übersetzen OIDs in Namen und interpretieren der entsprechenden Werte
●   OID – Object Identifier
    ●   Identifikatoren in durch ASN.1 definiertem Namensraum
●   community – in SNMP Version 1 und SNMPv2c zur Anmeldung am Agent
    verwendet



                                                                               8
Der MIB-Baum

                                 root
                                                                       Die Position im MIB-
                                                                       Tree liefert den OID
             ccitt(0)            iso(1)     join-iso-ccitt(2)          eines Objektes.
                                org(3)
                                                                       SNMP-Objekte der
                                dod(6)                                 Gerrit Beine GmbH
                                                                       beginnen immer mit
                              internet(1)                              1.3.6.1.4.1.40207.

    directory(1) mgmt(2) experimental(3)             private(4)

                     mib-2(1)                      enterprises(1)


system(1)                      host(25)
                                            Gerrit Beine GmbH(40207)
    interfaces(2)           snmp(11)

                    ip(4)



                                                                                              9
OID: Object Identifier


●   OID's sind eindeutige Identifikatoren innerhalb eines Agenten bzw. eines
    Gerätes
●   OID's navigieren durch SNMPs MIB-Baum
●   Hersteller-spezifische OID's immer unterhalb von 1.3.6.1.4.1
●   Mapping auf Domains
    ●   1.3.6.1.4.1.40207 –
        gerritbeinegmbh.enterprises.private.internet.dod.iso.org.
●   Unterhalb der OID ist jeder Hersteller frei in seinen Definitionen
●   Zuweisung der Enterprise-Identifkation erfolgt durch die IANA:
    http://www.iana.org/assignments/enterprise-numbers




                                                                           10
MIB internet (1.3.6.1)


●   directory(1) – OSI Verzeichnis
●   mgmt(2) – RFC Standard Objekte
●   experimental(3) – Experimente
●   private(4) – MIB's von Herstellern bzw. Unternehmen
●   security(5) – Sicherheitsrelevante MIB's
●   snmpV2(6) – SNMP Version 2 interne MIB's




                                                          11
Net-SNMP




           12
Net-SNMP


●   OpenSource SNMP Implementierung (CMU, BSD-Like)
●   Läuft auf fast allen Unix- und Linux-Systemen
●   Unterstützt SNMP Version 1, SNMPv2c, SNMPv3 via IPv4 und IPv6
●   Kommandozeilenapplikationen zu
    ●   Abfrage von SNMP-Agents (snmpget, snmpwalk, …)
    ●   Ändern von Konfigurationen via SNMP (snmpset)
    ●   Übersetzen von OID's (snmptranslate)
●   Daemon zum Empfangen von SNMP Traps (snmptrapd)
●   Daemon als SNMP Agent (snmpd)
●   C- und Perl-API's
●   Zu finden hier: http://www.net-snmp.org/



                                                                    13
Net-SNMP snmpd konfigurieren


●   Minimale Konfiguration definiert Standort, Kontakt und erlaubt Auslesen
    # /etc/snmp/snmpd.conf
    syslocation Server Room
    syscontact Sysadmin (root@localhost)

    # allow localhost read-only access via community public
    rocommunity public 127.0.0.1
    # allow whole network read-only access via community public
    rocommunity public 172.16.166.0/24
    # allow localhost read-write access via community mysecret
    # rwcommunity mysecret 127.0.0.1



●   Abfrage des snmpd erfolgt via snmpwalk
     ~ gbeine$ snmpwalk -c public -v1 172.16.166.129
     SNMPv2-MIB::sysDescr.0 = STRING: Linux linux-dwoa 3.1.10-1.16-default #1 SMP
     Wed Jun 27 05:21:40 UTC 2012 (d016078) x86_64
     SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
     DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (635449) 1:45:54.49
     SNMPv2-MIB::sysContact.0 = STRING: Sysadmin (root@localhost)
     SNMPv2-MIB::sysName.0 = STRING: linux-dwoa
     SNMPv2-MIB::sysLocation.0 = STRING: Server Room
     ...




                                                                                    14
Net-SNMP snmptrapd konfigurieren


●   Minimale Konfiguration nimmt alle Traps entgegen
    # /etc/snmp/snmptrapd.conf

    # allow community public
    authCommunity log,execute,net public



●   snmptrapd im Vordergrund starten
    linux-dwoa:~ # snmptrapd -f -Le
    NET-SNMP version 5.7.1




                                                       15
Traps in SNMP Version 1


●   Allgemeine Aufrufsyntax
    snmptrap -v 1 -c public
    [-Ci] # Antwort des Trap Daemon anfordern
    host # Host oder IP des Trap Daemon
    Enterprise-oid # OID des MIB, numerisch oder als Text
    agent # Informationen zum Sender, zumeist ""
    generic trap # Wert von 0-6, 6 bedeutet "enterpise", 0-5 sind fest definiert
    specific trap # Wenn generic trap = 6, wird spezifischer Trap Type erwartet
    uptime # Uptime-Informationen, zumeist ""
    [oid type value] # Inhalte der Trap

●   Versand einer Beispiel SNMP Trap über SNMPv2c
    ~ gbeine$ snmptrap -v 1 -c public 172.16.166.129 
    NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification "" 6 17 "" 
    netSnmpExampleHeartbeatRate i 123456
    ~ gbeine$

●   Empfang einer Beispiel SNMP Trap über SNMP Version 1
    2012-08-22 20:47:38 192.168.99.18(via UDP: [172.16.166.1]:53901-
    >[172.16.166.129]:162) TRAP, SNMP v1, community public
            NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification Enterprise
    Specific Trap (17) Uptime: 3 days, 8:42:36.98
            NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate = INTEGER: 123456




                                                                                    16
Traps in SNMPv2c


●   Allgemeine Aufrufsyntax
    snmptrap -v 2c -c public
    [-Ci] # Antwort des Trap Daemon anfordern
    host # Host oder IP des Trap Daemon
    uptime # Uptime-Informationen, zumeist ""
    trap-oid # OID des MIB, numerisch oder als Text
    [oid type value] # Inhalte der Trap


●   Versand einer Beispiel SNMP Trap über SNMPv2c
    ~ gbeine$ snmptrap -v 2c -c public 172.16.166.129 "" 
    NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification   
    netSnmpExampleHeartbeatRate i 123456
    ~ gbeine$

●   Empfang einer Beispiel SNMP Trap über SNMPv2c
    2012-08-22 20:47:17 <UNKNOWN> [UDP: [172.16.166.1]:63927-
    >[172.16.166.129]:162]:
    DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (29053542) 3 days,
    8:42:15.42 SNMPv2-MIB::snmpTrapOID.0 = OID: NET-SNMP-EXAMPLES-
    MIB::netSnmpExampleHeartbeatNotification     NET-SNMP-EXAMPLES-
    MIB::netSnmpExampleHeartbeatRate = INTEGER: 123456




                                                                          17
SNMP-Traps mit Perl




                      18
SNMP Traps mit Perl (via Net::SNMP) - I


 1   #!/usr/bin/perl
 2
 3   use strict;
 4   use warnings;
 5
 6   use Net::SNMP qw(:snmp :asn1);
 7
 8   my   $host = '172.16.166.129';
 9   my   $port = 162;
10   my   $version = 'snmpv1';
11   my   $community = 'public';
12
13   my ($session, $error) =      Net::SNMP->session(
14           -hostname    =>      $host,
15           -port        =>      $port,
16           -version     =>      $version,
17           -community   =>      $community
18   );
19
20   if (!defined($session)) {
21       printf("ERROR: %s.n", $error);
22       exit 1;
23   }
24

                                                        19
SNMP Traps mit Perl (via Net::SNMP) - II


  25 # translated via
  26 # 'snmptranslate -On NET-SNMP-EXAMPLES-
MIB::netSnmpExampleHeartbeatNotification'
  27 my $svSvcName = '.1.3.6.1.4.1.8072.2.3.0.1';
  28 my $message = '123456';
  29 my @oids = ($svSvcName, INTEGER, $message);
  30
  31 my $result = $session->trap(
  32         -agentaddr    => '172.16.166.2',
  33         -varbindlist => @oids
  34 );
  35
  36 if (!defined($result)) {
  37     printf("ERROR: %s.n", $session->error);
  38     $session->close;
  39     exit 1;
  40 }
  41




                                                       20
SNMP Traps mit Perl (via Net::SNMP) - III


●   Empfang einer Beispiel SNMP Trap via Perl
     2012-08-22 20:52:35 172.16.166.2(via UDP: [172.16.166.1]:58027-
     >[172.16.166.129]:162) TRAP, SNMP v1, community public
             SNMPv2-SMI::enterprises Enterprise Specific Trap (0) Uptime:
     0:00:00.00
             NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification = INTEGER:
     123456




●   SNMP Traps eignen sich hervorragend zum Applikations-Monitoring
●   SNMP-API's sind für fast alle Programmiersprachen verfügbar
●   Java: http://www.snmp4j.org/
●   PHP: http://php.net/manual/de/book.snmp.php
●   Python: http://pysnmp.sourceforge.net/
●   Ruby: http://snmplib.rubyforge.org/


                                                                                     21
SNMP & Nagios




                22
SNMP & Nagios – Philosophie


●   Nagios kann SNMP auf zwei Arten lesen
    ●   Polling via Active Checks (was Nagios ohnehin meistens tut)
    ●   Checks via SNMP Traps (was interessanter ist)
●   Beispiel in Nagios-Dokumentation hat Nachteile
    ●   Traps werden immer überschrieben, keine Historie
●   Besser:
    ●   Verarbeitung via SNMPTT: http://www.snmptt.org/
    ●   Speichern in MySQL Datenbank
    ●   Nagios-Integration via NagTrap:
        http://sourceforge.net/projects/nagtrap/




                                                                      23
The Big Picture




                SNMP Agent                               Nagios Core

        Trap senden                                                  Trap Check triggern

                SNMP trapd                           check_snmptraps.pl

OID Handler triggern                                 Traps auslesen und prüfen

                  SNMPTT                MySQL              nagtrap

                        Trap persistieren       Traps anzeigen und verwalten




                                                                                       24
SNMPTT


●   Übergabe an SNMPTT erfolgt über Trap Handler
●   Dazu muss snmptrapd.conf angepasst werden:
    # /etc/snmp/snmptrapd.conf

    # allow community public
    authCommunity log,execute,net public

    # handle all traps via snmptt
    traphandle default /usr/sbin/snmptthandler


●   smnptt.ini: SNMPTT soll alle Traps entgegen nehmen:
    # /etc/snmp/snmptt.ini

    [Logging]
    unknown_trap_log_enable = 1
    unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log




                                                                25
Verarbeiten von Traps mit SNMPTT - I


●   Empfang einer Beispiel SNMP Trap mit Verarbeitung durch SNMPTT
    2012-08-22 22:06:06 192.168.99.18(via UDP: [172.16.166.1]:53583-
    >[172.16.166.129]:162) TRAP, SNMP v1, community public
            NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification Enterprise
    Specific Trap (17) Uptime: 3 days, 10:01:04.69
            NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate = INTEGER: 1234568
    SNMPTTHANDLER started: Wed Aug 22 22:06:26 2012

    s = 1345665986, usec = 747879
    s_pad = 1345665986, usec_pad = 747879

    Data received:

    <UNKNOWN>

    UDP: [172.16.166.1]:53583->[172.16.166.129]:162

    DISMAN-EVENT-MIB::sysUpTimeInstance 3:10:01:04.69

    SNMPv2-MIB::snmpTrapOID.0 NET-SNMP-EXAMPLES-
    MIB::netSnmpExampleHeartbeatNotification.0.17

    NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate 1234568

    SNMP-COMMUNITY-MIB::snmpTrapAddress.0 192.168.99.18

    SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "public"

    SNMPv2-MIB::snmpTrapEnterprise.0 NET-SNMP-EXAMPLES-
    MIB::netSnmpExampleHeartbeatNotification
                                                                                    26
Verarbeiten von Traps mit SNMPTT - II


●   SNMPTT soll Traps nach MySQL loggen
    # /etc/snmp/snmptt.ini

    ...

    [SQL]
    db_translate_enterprise = 0
    db_unknown_trap_format = '$-*'
    sql_custom_columns = <<END
    END

    sql_custom_columns_unknown = <<END
    END

    mysql_dbi_enable = 1
    mysql_dbi_host = localhost
    mysql_dbi_port = 3306
    mysql_dbi_database = snmptt
    mysql_dbi_table = snmptt
    mysql_dbi_table_unknown = snmptt_unknown
    mysql_dbi_table_statistics = snmptt_statistics
    mysql_dbi_username = snmptt
    mysql_dbi_password = snmptt
    mysql_ping_on_insert = 1
    mysql_ping_interval = 300




                                                           27
SNMP Traps bei SNMPTT bekanntmachen - I


●   MIB's können mit snmpttconvert übersetzt werden:
    linux-dwoa:~ # snmpttconvertmib --in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-
    MIB.txt --out /etc/snmp/snmptt.examples.conf


    *****   Processing MIB file *****

    snmptranslate version: NET-SNMP version: 5.7.1
    severity: Normal

    File to load is:         /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt
    File to APPEND TO:       /etc/snmp/snmptt.examples.conf

    MIBS environment var:   /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt
    mib name: NET-SNMP-EXAMPLES-MIB


    ...


    Done

    Total translations:         1
    Successful translations:    1
    Failed translations:        0




                                                                                   28
SNMP Traps bei SNMPTT bekanntmachen - II


●   Übersetzungen müssen von SNMPTT importiert werden:
    # /etc/snmp/snmptt.ini

    [General]
    ...

    net_snmp_perl_enable = 1
    net_snmp_perl_best_guess = 2
    translate_log_trap_oid = 0
    translate_value_oids = 1
    translate_enterprise_oid_format = 1
    translate_trap_oid_format = 1
    translate_varname_oid_format = 1
    translate_integers = 1

    ...

    [TrapFiles]
    snmptt_conf_files = <<END
    /etc/snmp/snmptt.conf
    /etc/snmp/snmptt.examples.conf
    END




                                                           29
SNMP Traps bei SNMPTT bekanntmachen - III


●   Die ursprüngliche MIB für netSnmpExampleHeartbeatRate
    #   /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt

    NET-SNMP-EXAMPLES-MIB DEFINITIONS ::= BEGIN

    --
    -- Example MIB objects for agent module example implementations
    --

    IMPORTS
    ...

    NetSnmpExamples MODULE-IDENTITY
        LAST-UPDATED "200406150000Z"
        ORGANIZATION "www.net-snmp.org"
    ...

    netSnmpExampleHeartbeatRate OBJECT-TYPE
        SYNTAX      Integer32
        MAX-ACCESS accessible-for-notify
        STATUS      current
        DESCRIPTION
            "A simple integer object, to act as a payload for the
             netSnmpExampleHeartbeatNotification. The value has
             no real meaning, but is nominally the interval (in
             seconds) between successive heartbeat notifications."
    ::= { netSnmpExampleNotificationObjects 1 }

    ...

                                                                      30
SNMP Traps bei SNMPTT bekanntmachen - IV


●   Übersetzung von NET-SNMP-EXAMPLES-MIB anpassen:
    # /etc/snmp/snmptt.example.conf

    #
    #
    #
    #
    MIB: NET-SNMP-EXAMPLES-MIB (file:/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-
    MIB.txt) converted on Thu Aug 23 12:16:36 2012 using snmpttconvertmib v1.3
    #
    #
    #
    EVENT netSnmpExampleHeartbeatNotification .1.3.6.1.4.1.0.0 "Status Events" 
    Critical
    FORMAT An example notification, used to illustrate the $* 
    SDESC
    An example notification, used to illustrate the
    definition and generation of trap and inform PDUs
    (including the use of both standard and additional
    varbinds in the notification payload).
    This notification will typically be sent every
    30 seconds, using the code found in the example module
    agent/mibgroup/examples/notification.c
    Variables:
      1: netSnmpExampleHeartbeatRate
    EDESC




                                                                                   31
NagTrap konfigurieren


●   check_snmptraps.pl muss sich mit MySQL verbinden können
    #   /usr/lib/nagios/plugins/check_snmptrap.pl

    ...

    # ==================== Database connect information ====================
    my $dbHost = "localhost";
    my $dbName = "snmptt";
    my $dbUser = "snmptt";
    my $dbPass = "snmptt";
    my $dbTable = "snmptt";
    my $dbTableUnknown = "snmptt_unknown";

    ...




                                                                               32
Nagios Check prüfen


●   check_snmptraps.pl Aufruf testen
    linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.2 -r
    CRITICAL - No warning Traps and 3 critical Traps in the database|'warning
    trap'=0;;;; 'critical trap'=3;;;;


    # Bestimmte Kategorie prüfen
    linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.2 -r
    -C 'Backup Fehler'
    OK - No warning Traps and no critical traps in the database|'warning
    trap'=0;;;; 'critical trap'=0;;;;

    # Bestimmte OID prüfen
    linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.2 -r
    -O .1.3.6.1.4.1.0.0
    CRITICAL - No warning Traps and 3 critical Traps in the database|'warning
    trap'=0;;;; 'critical trap'=3;;;;

    # Unbekannte Traps prüfen
    linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.1 -r
    -u
    CRITICAL - 10 Unknown Traps|'Unknown trap='10;;;;




                                                                                   33
Literaturempfehlungen


●   Net-SNMP: http://www.net-snmp.org/docs/
●   SNMPTT: http://www.snmptt.org/docs/snmptt.shtml
●   Nagios: http://nagios.sourceforge.net/docs/nagioscore/3/en/toc.html
●   SNMP Traps verarbeiten:
    http://www.nagios-wiki.de/nagios/howtos/snmptt
●   Evan McGinnis, David Perkins: Understanding SNMP Mibs
    http://www.amazon.de/Understanding-SNMP-Mibs-Evan-McGinnis/dp/
    0134377087/
●   Douglas R. Mauro, Kevin J. Schmidt: Essential SNMP
    http://www.amazon.de/Essential-SNMP-System-Network-Administrator
    s/dp/0596008406/




                                                                          34
Viel Spaß noch auf der FrOSCon 2012!




                                       35

Más contenido relacionado

Similar a SNMP Applied

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPadesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)adesso AG
 
OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...
OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...
OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...NETWAYS
 
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
 
OSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko Streng
OSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko StrengOSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko Streng
OSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko StrengNETWAYS
 
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...NETWAYS
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisJörn Dinkla
 
Status of syslog as of 2005
Status of syslog as of 2005Status of syslog as of 2005
Status of syslog as of 2005Rainer Gerhards
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
Tk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneuTk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneuWerner Fischer
 
Check cisco voice
Check cisco voiceCheck cisco voice
Check cisco voicebboguhn
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Gunther Pippèrr
 
Private Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStackPrivate Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStackDaniel Schneller
 
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...NETWAYS
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk BackbonesMaximilan Wilhelm
 

Similar a SNMP Applied (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
SNMP - Eine kurze Einführung
SNMP - Eine kurze Einführung SNMP - Eine kurze Einführung
SNMP - Eine kurze Einführung
 
Grundlagen nmap
Grundlagen nmapGrundlagen nmap
Grundlagen nmap
 
OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...
OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...
OSDC 2011 | Automatische Netzwerkdokumentation mit NetDot und RANCID by Jens ...
 
Netzwerkmonitoring.pdf
Netzwerkmonitoring.pdfNetzwerkmonitoring.pdf
Netzwerkmonitoring.pdf
 
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 ...
 
OSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko Streng
OSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko StrengOSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko Streng
OSMC 2013 | Monitoring-Landschaft auf Basis von OMD by Reiko Streng
 
E Security
E SecurityE Security
E Security
 
XenServer und Storage
XenServer und StorageXenServer und Storage
XenServer und Storage
 
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der Praxis
 
Status of syslog as of 2005
Status of syslog as of 2005Status of syslog as of 2005
Status of syslog as of 2005
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
Tk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneuTk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneu
 
Check cisco voice
Check cisco voiceCheck cisco voice
Check cisco voice
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015
 
Private Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStackPrivate Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStack
 
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
 

Más de Gerrit Beine

Auf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredAuf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredGerrit Beine
 
Mastering Cargo Cult
Mastering Cargo CultMastering Cargo Cult
Mastering Cargo CultGerrit Beine
 
Conway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturConway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturGerrit Beine
 
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdBeyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdGerrit Beine
 
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveMastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveGerrit Beine
 
Gut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGerrit Beine
 
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternBeyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternGerrit Beine
 
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Gerrit Beine
 
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenBacklog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenGerrit Beine
 
Der hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientDer hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientGerrit Beine
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerGerrit Beine
 
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisDie Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisGerrit Beine
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerGerrit Beine
 
Technische Schulden - mit Notizen
Technische Schulden - mit NotizenTechnische Schulden - mit Notizen
Technische Schulden - mit NotizenGerrit Beine
 
Technische Schulden
Technische SchuldenTechnische Schulden
Technische SchuldenGerrit Beine
 
Die Product Owner Toolbox
Die Product Owner ToolboxDie Product Owner Toolbox
Die Product Owner ToolboxGerrit Beine
 
Agile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenAgile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenGerrit Beine
 
Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Gerrit Beine
 

Más de Gerrit Beine (20)

Auf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredAuf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und Fred
 
Mastering Cargo Cult
Mastering Cargo CultMastering Cargo Cult
Mastering Cargo Cult
 
Conway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturConway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-Architektur
 
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdBeyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
 
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveMastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
 
Gut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile Architekturen
 
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternBeyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
 
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
 
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenBacklog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
 
Der hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientDer hyperbolische Thread-Koeffizient
Der hyperbolische Thread-Koeffizient
 
Broken by Design
Broken by DesignBroken by Design
Broken by Design
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product Owner
 
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisDie Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product Owner
 
Antifragilität
AntifragilitätAntifragilität
Antifragilität
 
Technische Schulden - mit Notizen
Technische Schulden - mit NotizenTechnische Schulden - mit Notizen
Technische Schulden - mit Notizen
 
Technische Schulden
Technische SchuldenTechnische Schulden
Technische Schulden
 
Die Product Owner Toolbox
Die Product Owner ToolboxDie Product Owner Toolbox
Die Product Owner Toolbox
 
Agile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenAgile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit Notizen
 
Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...
 

Último (8)

Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_EssenAngewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
 
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg EssenBetriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
 
Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.
 
Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!
 
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdfLAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
 
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-EssenWirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
 
1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf
 
1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf
 

SNMP Applied

  • 1. SNMP Applied SNMP-Monitoring planen, konfigurieren und integrieren Gerrit Beine mail@gerritbeine.com 1
  • 3. Ich habe mir seit Jahren gewünscht, dass mir jemand SNMP erklärt... 3
  • 4. Ziele des Vortrags ● Überblick zu SNMP liefern ● Grundlegende Anwendung von Net-SNMP erklären ● Erstellen eigener SNMP Traps mit Perl ● Zusammenspiel von SNMP und Nagios beleuchten 4
  • 6. SNMP ● Simple Network Management Protocol ● Verwendet UDP, Ports 161 und 162 ● Historie ● Version 1 (1988) Ursprüngliche Spezifikatin in RFC 1155-1157 ● Secure SNMP (1992) RFC1351-1353, nie offiziell eingeführt ● Party-based SNMP (1993, SNMPv2p) RFC 1441, 1445-1447, führte getbulk ein, erhöhte Sicherheit, heute nicht mehr im Einsatz ● User-based SNMP (1996, SNMPv2u) RFC 1909-1910, heute nicht mehr im Einsatz ● Community-based SNMP (1996, SNMPv2c) RFC 1901, 1905-1906, Erweiterung von Version 1 um Features aus SNMPv2p ● Version 3 (2002), RFC 3410-3418, Fokus auf Sicherheit 6
  • 7. Anwendungen von SNMP ● Kontinuierliches Monitoring (Polling) ● Uptime, Load ● Netzwerkverkehr ● Speicherverbrauch (RAM, Festplatten) ● Hardware-Zustand (S.M.A.R.T., Lüfterdrehzahl) ● Information über Ereignisse (SNMP-Traps) ● Fehlersituationen ● Zustandswechsel 7
  • 8. SNMP Begriffswelt ● Agent – SNMP-Daemon, der Informationen via UDP 161 bereitstellt oder Traps via UDP 162 versendet ● Manager – SNMP-Client, der Informationen via UDP 161 einsammelt ● Trap – SNMP-Nachricht, über UDP 162 versendet ● MIB – Management Information Base ● Dateien mit strukturiertem Text nach ASN.1 ● Beschreiben Monitoring-Objekte ● Übersetzen OIDs in Namen und interpretieren der entsprechenden Werte ● OID – Object Identifier ● Identifikatoren in durch ASN.1 definiertem Namensraum ● community – in SNMP Version 1 und SNMPv2c zur Anmeldung am Agent verwendet 8
  • 9. Der MIB-Baum root Die Position im MIB- Tree liefert den OID ccitt(0) iso(1) join-iso-ccitt(2) eines Objektes. org(3) SNMP-Objekte der dod(6) Gerrit Beine GmbH beginnen immer mit internet(1) 1.3.6.1.4.1.40207. directory(1) mgmt(2) experimental(3) private(4) mib-2(1) enterprises(1) system(1) host(25) Gerrit Beine GmbH(40207) interfaces(2) snmp(11) ip(4) 9
  • 10. OID: Object Identifier ● OID's sind eindeutige Identifikatoren innerhalb eines Agenten bzw. eines Gerätes ● OID's navigieren durch SNMPs MIB-Baum ● Hersteller-spezifische OID's immer unterhalb von 1.3.6.1.4.1 ● Mapping auf Domains ● 1.3.6.1.4.1.40207 – gerritbeinegmbh.enterprises.private.internet.dod.iso.org. ● Unterhalb der OID ist jeder Hersteller frei in seinen Definitionen ● Zuweisung der Enterprise-Identifkation erfolgt durch die IANA: http://www.iana.org/assignments/enterprise-numbers 10
  • 11. MIB internet (1.3.6.1) ● directory(1) – OSI Verzeichnis ● mgmt(2) – RFC Standard Objekte ● experimental(3) – Experimente ● private(4) – MIB's von Herstellern bzw. Unternehmen ● security(5) – Sicherheitsrelevante MIB's ● snmpV2(6) – SNMP Version 2 interne MIB's 11
  • 12. Net-SNMP 12
  • 13. Net-SNMP ● OpenSource SNMP Implementierung (CMU, BSD-Like) ● Läuft auf fast allen Unix- und Linux-Systemen ● Unterstützt SNMP Version 1, SNMPv2c, SNMPv3 via IPv4 und IPv6 ● Kommandozeilenapplikationen zu ● Abfrage von SNMP-Agents (snmpget, snmpwalk, …) ● Ändern von Konfigurationen via SNMP (snmpset) ● Übersetzen von OID's (snmptranslate) ● Daemon zum Empfangen von SNMP Traps (snmptrapd) ● Daemon als SNMP Agent (snmpd) ● C- und Perl-API's ● Zu finden hier: http://www.net-snmp.org/ 13
  • 14. Net-SNMP snmpd konfigurieren ● Minimale Konfiguration definiert Standort, Kontakt und erlaubt Auslesen # /etc/snmp/snmpd.conf syslocation Server Room syscontact Sysadmin (root@localhost) # allow localhost read-only access via community public rocommunity public 127.0.0.1 # allow whole network read-only access via community public rocommunity public 172.16.166.0/24 # allow localhost read-write access via community mysecret # rwcommunity mysecret 127.0.0.1 ● Abfrage des snmpd erfolgt via snmpwalk ~ gbeine$ snmpwalk -c public -v1 172.16.166.129 SNMPv2-MIB::sysDescr.0 = STRING: Linux linux-dwoa 3.1.10-1.16-default #1 SMP Wed Jun 27 05:21:40 UTC 2012 (d016078) x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (635449) 1:45:54.49 SNMPv2-MIB::sysContact.0 = STRING: Sysadmin (root@localhost) SNMPv2-MIB::sysName.0 = STRING: linux-dwoa SNMPv2-MIB::sysLocation.0 = STRING: Server Room ... 14
  • 15. Net-SNMP snmptrapd konfigurieren ● Minimale Konfiguration nimmt alle Traps entgegen # /etc/snmp/snmptrapd.conf # allow community public authCommunity log,execute,net public ● snmptrapd im Vordergrund starten linux-dwoa:~ # snmptrapd -f -Le NET-SNMP version 5.7.1 15
  • 16. Traps in SNMP Version 1 ● Allgemeine Aufrufsyntax snmptrap -v 1 -c public [-Ci] # Antwort des Trap Daemon anfordern host # Host oder IP des Trap Daemon Enterprise-oid # OID des MIB, numerisch oder als Text agent # Informationen zum Sender, zumeist "" generic trap # Wert von 0-6, 6 bedeutet "enterpise", 0-5 sind fest definiert specific trap # Wenn generic trap = 6, wird spezifischer Trap Type erwartet uptime # Uptime-Informationen, zumeist "" [oid type value] # Inhalte der Trap ● Versand einer Beispiel SNMP Trap über SNMPv2c ~ gbeine$ snmptrap -v 1 -c public 172.16.166.129 NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification "" 6 17 "" netSnmpExampleHeartbeatRate i 123456 ~ gbeine$ ● Empfang einer Beispiel SNMP Trap über SNMP Version 1 2012-08-22 20:47:38 192.168.99.18(via UDP: [172.16.166.1]:53901- >[172.16.166.129]:162) TRAP, SNMP v1, community public NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification Enterprise Specific Trap (17) Uptime: 3 days, 8:42:36.98 NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate = INTEGER: 123456 16
  • 17. Traps in SNMPv2c ● Allgemeine Aufrufsyntax snmptrap -v 2c -c public [-Ci] # Antwort des Trap Daemon anfordern host # Host oder IP des Trap Daemon uptime # Uptime-Informationen, zumeist "" trap-oid # OID des MIB, numerisch oder als Text [oid type value] # Inhalte der Trap ● Versand einer Beispiel SNMP Trap über SNMPv2c ~ gbeine$ snmptrap -v 2c -c public 172.16.166.129 "" NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification netSnmpExampleHeartbeatRate i 123456 ~ gbeine$ ● Empfang einer Beispiel SNMP Trap über SNMPv2c 2012-08-22 20:47:17 <UNKNOWN> [UDP: [172.16.166.1]:63927- >[172.16.166.129]:162]: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (29053542) 3 days, 8:42:15.42 SNMPv2-MIB::snmpTrapOID.0 = OID: NET-SNMP-EXAMPLES- MIB::netSnmpExampleHeartbeatNotification NET-SNMP-EXAMPLES- MIB::netSnmpExampleHeartbeatRate = INTEGER: 123456 17
  • 19. SNMP Traps mit Perl (via Net::SNMP) - I 1 #!/usr/bin/perl 2 3 use strict; 4 use warnings; 5 6 use Net::SNMP qw(:snmp :asn1); 7 8 my $host = '172.16.166.129'; 9 my $port = 162; 10 my $version = 'snmpv1'; 11 my $community = 'public'; 12 13 my ($session, $error) = Net::SNMP->session( 14 -hostname => $host, 15 -port => $port, 16 -version => $version, 17 -community => $community 18 ); 19 20 if (!defined($session)) { 21 printf("ERROR: %s.n", $error); 22 exit 1; 23 } 24 19
  • 20. SNMP Traps mit Perl (via Net::SNMP) - II 25 # translated via 26 # 'snmptranslate -On NET-SNMP-EXAMPLES- MIB::netSnmpExampleHeartbeatNotification' 27 my $svSvcName = '.1.3.6.1.4.1.8072.2.3.0.1'; 28 my $message = '123456'; 29 my @oids = ($svSvcName, INTEGER, $message); 30 31 my $result = $session->trap( 32 -agentaddr => '172.16.166.2', 33 -varbindlist => @oids 34 ); 35 36 if (!defined($result)) { 37 printf("ERROR: %s.n", $session->error); 38 $session->close; 39 exit 1; 40 } 41 20
  • 21. SNMP Traps mit Perl (via Net::SNMP) - III ● Empfang einer Beispiel SNMP Trap via Perl 2012-08-22 20:52:35 172.16.166.2(via UDP: [172.16.166.1]:58027- >[172.16.166.129]:162) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (0) Uptime: 0:00:00.00 NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification = INTEGER: 123456 ● SNMP Traps eignen sich hervorragend zum Applikations-Monitoring ● SNMP-API's sind für fast alle Programmiersprachen verfügbar ● Java: http://www.snmp4j.org/ ● PHP: http://php.net/manual/de/book.snmp.php ● Python: http://pysnmp.sourceforge.net/ ● Ruby: http://snmplib.rubyforge.org/ 21
  • 23. SNMP & Nagios – Philosophie ● Nagios kann SNMP auf zwei Arten lesen ● Polling via Active Checks (was Nagios ohnehin meistens tut) ● Checks via SNMP Traps (was interessanter ist) ● Beispiel in Nagios-Dokumentation hat Nachteile ● Traps werden immer überschrieben, keine Historie ● Besser: ● Verarbeitung via SNMPTT: http://www.snmptt.org/ ● Speichern in MySQL Datenbank ● Nagios-Integration via NagTrap: http://sourceforge.net/projects/nagtrap/ 23
  • 24. The Big Picture SNMP Agent Nagios Core Trap senden Trap Check triggern SNMP trapd check_snmptraps.pl OID Handler triggern Traps auslesen und prüfen SNMPTT MySQL nagtrap Trap persistieren Traps anzeigen und verwalten 24
  • 25. SNMPTT ● Übergabe an SNMPTT erfolgt über Trap Handler ● Dazu muss snmptrapd.conf angepasst werden: # /etc/snmp/snmptrapd.conf # allow community public authCommunity log,execute,net public # handle all traps via snmptt traphandle default /usr/sbin/snmptthandler ● smnptt.ini: SNMPTT soll alle Traps entgegen nehmen: # /etc/snmp/snmptt.ini [Logging] unknown_trap_log_enable = 1 unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log 25
  • 26. Verarbeiten von Traps mit SNMPTT - I ● Empfang einer Beispiel SNMP Trap mit Verarbeitung durch SNMPTT 2012-08-22 22:06:06 192.168.99.18(via UDP: [172.16.166.1]:53583- >[172.16.166.129]:162) TRAP, SNMP v1, community public NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification Enterprise Specific Trap (17) Uptime: 3 days, 10:01:04.69 NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate = INTEGER: 1234568 SNMPTTHANDLER started: Wed Aug 22 22:06:26 2012 s = 1345665986, usec = 747879 s_pad = 1345665986, usec_pad = 747879 Data received: <UNKNOWN> UDP: [172.16.166.1]:53583->[172.16.166.129]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 3:10:01:04.69 SNMPv2-MIB::snmpTrapOID.0 NET-SNMP-EXAMPLES- MIB::netSnmpExampleHeartbeatNotification.0.17 NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate 1234568 SNMP-COMMUNITY-MIB::snmpTrapAddress.0 192.168.99.18 SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "public" SNMPv2-MIB::snmpTrapEnterprise.0 NET-SNMP-EXAMPLES- MIB::netSnmpExampleHeartbeatNotification 26
  • 27. Verarbeiten von Traps mit SNMPTT - II ● SNMPTT soll Traps nach MySQL loggen # /etc/snmp/snmptt.ini ... [SQL] db_translate_enterprise = 0 db_unknown_trap_format = '$-*' sql_custom_columns = <<END END sql_custom_columns_unknown = <<END END mysql_dbi_enable = 1 mysql_dbi_host = localhost mysql_dbi_port = 3306 mysql_dbi_database = snmptt mysql_dbi_table = snmptt mysql_dbi_table_unknown = snmptt_unknown mysql_dbi_table_statistics = snmptt_statistics mysql_dbi_username = snmptt mysql_dbi_password = snmptt mysql_ping_on_insert = 1 mysql_ping_interval = 300 27
  • 28. SNMP Traps bei SNMPTT bekanntmachen - I ● MIB's können mit snmpttconvert übersetzt werden: linux-dwoa:~ # snmpttconvertmib --in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES- MIB.txt --out /etc/snmp/snmptt.examples.conf ***** Processing MIB file ***** snmptranslate version: NET-SNMP version: 5.7.1 severity: Normal File to load is: /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt File to APPEND TO: /etc/snmp/snmptt.examples.conf MIBS environment var: /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt mib name: NET-SNMP-EXAMPLES-MIB ... Done Total translations: 1 Successful translations: 1 Failed translations: 0 28
  • 29. SNMP Traps bei SNMPTT bekanntmachen - II ● Übersetzungen müssen von SNMPTT importiert werden: # /etc/snmp/snmptt.ini [General] ... net_snmp_perl_enable = 1 net_snmp_perl_best_guess = 2 translate_log_trap_oid = 0 translate_value_oids = 1 translate_enterprise_oid_format = 1 translate_trap_oid_format = 1 translate_varname_oid_format = 1 translate_integers = 1 ... [TrapFiles] snmptt_conf_files = <<END /etc/snmp/snmptt.conf /etc/snmp/snmptt.examples.conf END 29
  • 30. SNMP Traps bei SNMPTT bekanntmachen - III ● Die ursprüngliche MIB für netSnmpExampleHeartbeatRate # /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt NET-SNMP-EXAMPLES-MIB DEFINITIONS ::= BEGIN -- -- Example MIB objects for agent module example implementations -- IMPORTS ... NetSnmpExamples MODULE-IDENTITY LAST-UPDATED "200406150000Z" ORGANIZATION "www.net-snmp.org" ... netSnmpExampleHeartbeatRate OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS accessible-for-notify STATUS current DESCRIPTION "A simple integer object, to act as a payload for the netSnmpExampleHeartbeatNotification. The value has no real meaning, but is nominally the interval (in seconds) between successive heartbeat notifications." ::= { netSnmpExampleNotificationObjects 1 } ... 30
  • 31. SNMP Traps bei SNMPTT bekanntmachen - IV ● Übersetzung von NET-SNMP-EXAMPLES-MIB anpassen: # /etc/snmp/snmptt.example.conf # # # # MIB: NET-SNMP-EXAMPLES-MIB (file:/usr/share/snmp/mibs/NET-SNMP-EXAMPLES- MIB.txt) converted on Thu Aug 23 12:16:36 2012 using snmpttconvertmib v1.3 # # # EVENT netSnmpExampleHeartbeatNotification .1.3.6.1.4.1.0.0 "Status Events" Critical FORMAT An example notification, used to illustrate the $* SDESC An example notification, used to illustrate the definition and generation of trap and inform PDUs (including the use of both standard and additional varbinds in the notification payload). This notification will typically be sent every 30 seconds, using the code found in the example module agent/mibgroup/examples/notification.c Variables: 1: netSnmpExampleHeartbeatRate EDESC 31
  • 32. NagTrap konfigurieren ● check_snmptraps.pl muss sich mit MySQL verbinden können # /usr/lib/nagios/plugins/check_snmptrap.pl ... # ==================== Database connect information ==================== my $dbHost = "localhost"; my $dbName = "snmptt"; my $dbUser = "snmptt"; my $dbPass = "snmptt"; my $dbTable = "snmptt"; my $dbTableUnknown = "snmptt_unknown"; ... 32
  • 33. Nagios Check prüfen ● check_snmptraps.pl Aufruf testen linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.2 -r CRITICAL - No warning Traps and 3 critical Traps in the database|'warning trap'=0;;;; 'critical trap'=3;;;; # Bestimmte Kategorie prüfen linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.2 -r -C 'Backup Fehler' OK - No warning Traps and no critical traps in the database|'warning trap'=0;;;; 'critical trap'=0;;;; # Bestimmte OID prüfen linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.2 -r -O .1.3.6.1.4.1.0.0 CRITICAL - No warning Traps and 3 critical Traps in the database|'warning trap'=0;;;; 'critical trap'=3;;;; # Unbekannte Traps prüfen linux-dwoa:~ # /usr/lib/nagios/plugins/check_snmptraps.pl -H 172.16.166.1 -r -u CRITICAL - 10 Unknown Traps|'Unknown trap='10;;;; 33
  • 34. Literaturempfehlungen ● Net-SNMP: http://www.net-snmp.org/docs/ ● SNMPTT: http://www.snmptt.org/docs/snmptt.shtml ● Nagios: http://nagios.sourceforge.net/docs/nagioscore/3/en/toc.html ● SNMP Traps verarbeiten: http://www.nagios-wiki.de/nagios/howtos/snmptt ● Evan McGinnis, David Perkins: Understanding SNMP Mibs http://www.amazon.de/Understanding-SNMP-Mibs-Evan-McGinnis/dp/ 0134377087/ ● Douglas R. Mauro, Kevin J. Schmidt: Essential SNMP http://www.amazon.de/Essential-SNMP-System-Network-Administrator s/dp/0596008406/ 34
  • 35. Viel Spaß noch auf der FrOSCon 2012! 35