Slide 1

Slide 1 text

GUUG 2013 Workshop 2013 Alexander Finger, Ronny Trommer February 27, 2015 1 / 49

Slide 2

Slide 2 text

Unser Plan für heute Pille, da draußen ist ein Ding. Vorstellung Versuchsumgebung Begriffe in der OpenNMS Welt Überblick OpenNMS Architektur Provisioning ein Spielplatz Lab: Vorbereitung Versuchsumgebung Lab: Installation und Einrichtung Net-SNMP Lab: Provisioning Spielplatz - Unser erster Node! 2 / 49

Slide 3

Slide 3 text

Unser Plan für heute Wie kann man nur so schwerhörig sein, wenn man solche Ohren hat. Monitoring von Web-Anwendungen Provisioning HTTP und DNS Services Lab: Provisioning Web-Server Lab: HTTP Monitoring verbessern Lab: Web-UI kennen lernen 3 / 49

Slide 4

Slide 4 text

Unser Plan für heute Gruß-Frequenzen öffnen Konzepte der Benachrichtigung Benachrichtigung erweitern Lab: Benachrichtigung HTTP Service Lab: Benachrichtigung Web-Server Lab: Zeitpläne für Benachrichtigungen 4 / 49

Slide 5

Slide 5 text

Unser Plan für heute Sulu, Sie dürfen einfach drauf losfliegen. Eigene Events in OpenNMS einbinden Was sind Events Wie werden sie verwaltet Wozu können Sie verwendet werden. Lab: Eigene Events anlegen Lab: Events mit send-event.pl erzeugen 5 / 49

Slide 6

Slide 6 text

Optional: Festplatten überwachen Dann fliegt sie eben auseinander Eigene Events in OpenNMS einbinden Aktives überwachen mit OpenNMS Passives überwachen mit Net-SNMP und Traps Lab: Konfiguration mit Threshold Lab: Konfiguration mit SNMP traps 6 / 49

Slide 7

Slide 7 text

Pille, da draußen ist ein Ding Unsere Versuchsumgebung Ubuntu 12.10 Desktop OpenNMS 1.10.8 vorinstalliert aus OpenNMS Debian-Repository Live-DVD Virtual Box Image mit Centos 6.3 und OpenNMS 1.10.8 7 / 49

Slide 8

Slide 8 text

Pille, da draußen ist ein Ding Begriffe In OpenNMS werden Netzwerk-Geräte als Node bezeichnet. Ein Node ... kann ein physikalische oder logische Komponente in einem Netzwerk sein. ist bspw. physikalisch als Server, Switch oder Router modelliert. ist bspw. logisch als hochverfügbarer Router mit virtuellen IP Adressen oder als Web-Seite modelliert. hat IP-Netzwerkschnittstellen kann physikalisch Schnittstellen haben wie bspw. Switch mit Ethernet ports ohne IP’s ist eindeutig über eine Node-ID identifiziert. hat Events, Notifications und Alarms kann Inventarinformationen wie bspw. Seriennumer, Modellnummer, Inventarnummer oder den Standort besitzen. 8 / 49

Slide 9

Slide 9 text

Pille, da draußen ist ein Ding Begriffe Wir sind an Nodes im Monitoring interessiert, weil sie wertvolle Services bereitstellen. Ein Service in OpenNMS ... wird von einer IP-Adresse bereitgestellt wird von Pollerd getestet und als verfügbar oder nicht verfügbar angezeigt. dient als Einstiegspunkt für die Leistungsdatenerfassung. hat Events, Notifications und Alarms wird von einer Service-ID eindeutig identifiziert. 9 / 49

Slide 10

Slide 10 text

Pille, da draußen ist ein Ding Begriffe OpenNMS hat als Möglichkeiten ihr Netzwerk abzubilden Nodes, Assetinformation, Interfaces und Services Das Bereitstellen von Nodes, Interfaces, Services und Assets im Netzwerk-Monitoring wird provisioning bezeichnet. Provisioning hat verschiedene Ansätze:(vollautomatisch, halb-automatisch oder komplett manuell) 10 / 49

Slide 11

Slide 11 text

Hands on ... 11 / 49

Slide 12

Slide 12 text

Pille, da draußen ist ein Ding Unsere Versuchsumgebung Ubuntu 12.10 Desktop OpenNMS 1.10.8 vorinstalliert aus OpenNMS Debian-Repository Live-DVD Virtual Box Image mit Centos 6.3 und OpenNMS 1.10.8 Hinweis Live-DVD: 1 sudo ln -s /var/run/resolvconf/resolv.conf /etc/resolv.conf 2 sudo apt-get install libxml-twig-perl 12 / 49

Slide 13

Slide 13 text

Net-SNMP Installieren und konfigurieren 1 sudo apt-get -y install snmp snmpd snmp-mibs-downloader 2 sudo vi /etc/snmp/snmpd.conf 3 4 view opennms included .1 5 rocommunity notpublic default -V opennms 6 # includeAllDisks 10% 7 8 sudo service snmpd restart 9 snmpwalk -v 2c -c notpublic localhost 13 / 49

Slide 14

Slide 14 text

OpenNMS unser erster Node! Installieren und konfigurieren 1 cd /usr/share/opennms/bin 2 ./provision.pl requisition add Server 3 ./provision.pl node add Server 1 myLocalhost 4 ./provision.pl interface add Server 1 127.0.0.1 5 ./provision.pl interface set Server 1 127.0.0.1 snmp-primary P 6 ./provision.pl requisition import Server 7 sudo ./provision.pl snmp set 127.0.0.1 notpublic version=v2c 14 / 49

Slide 15

Slide 15 text

Explore the Web-UI ... 15 / 49

Slide 16

Slide 16 text

Time for a break 16 / 49

Slide 17

Slide 17 text

Wie kann man nur so schwerhörig sein ... Monitoring Web-Anwendungen HTTP-Monitor Page-Sequence-Monitor 17 / 49

Slide 18

Slide 18 text

Wie kann man nur so schwerhörig sein ... Monitoring Web-Anwendungen Monitorig the Web-Anwendung auf vic.labmonkeys.de und www.google.de Einfache HTTP Verbindung HTTP error code auswertbar Regexp nach Inhalt in der Seite suchen 18 / 49

Slide 19

Slide 19 text

Hands on ... 19 / 49

Slide 20

Slide 20 text

Wie kann man nur so schwerhörig sein ... Aufgabe Requisition Group für Web-Seiten anlegen Zwei Nodes mit der Bezeichnung www.google.de und vic.labmonkeys.de anlegen. (Node label) www.google.de interface 173.194.44.56 hinzufügen vic.labmonkeys.de interface 83.169.39.12 hinzufügen Beide als snmp-primary setzen HTTP und ICMP auf die beiden Interfaces manuell setzen. Requisition Group importieren. WebUI prüfen. Wie ist der Status? 20 / 49

Slide 21

Slide 21 text

Wie kann man nur so schwerhörig sein ... HTTP Monitor verbessern Response code auswerten host-name für VHost im HTTP / GET setzen Response text auswerten Bearbeiten des Monitors in poller-configuration.xml 1 2 3 4 5 6 7 8 9 10 21 / 49

Slide 22

Slide 22 text

Wie kann man nur so schwerhörig sein ... Monitoring Web-Anwendungen Monitorig DNS-Lookup für vic.labmonkeys.de und www.google.de DNS Resolution Monitor IPv4 A und IPv6 AAAA Verwendet DNS-Server vom System 22 / 49

Slide 23

Slide 23 text

Wie kann man nur so schwerhörig sein ... 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 20 1 ./provision.pl service add Web-Seiten 1 173.194.44.56 DNS-A 2 ./provision.pl service add Web-Seiten 1 173.194.44.56 DNS-AAAA 3 ./provision.pl service add Web-Seiten 2 83.169.39.12 DNS-A 4 ./provision.pl service add Web-Seiten 2 83.169.39.12 DNS-AAAA 5 ./provision.pl requisition import Web-Seiten. 6 sudo service opennms restart 23 / 49

Slide 24

Slide 24 text

Wie kann man nur so schwerhörig sein ... Monitoring Web-Anwendungen Monitoring Konfiguration und VHost macht es notwendig, dass für jeden VHost ein Monitor angelegt werden muss :/ host-name muss dynamisch gesetzt werden. Optionale Unterscheidung zwischen IPv4 und IPv6 PageSequenceMonitor for the win ... 24 / 49

Slide 25

Slide 25 text

1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 25 / 49

Slide 26

Slide 26 text

26 / 49

Slide 27

Slide 27 text

Gruß-Frequenzen öffnen Was sind Benachrichtigungen in OpenNMS OpenNMS kann uns benachrichtigen wenn etwas schief läuft. Benachrichtigungen werden von events erzeugt. Notifd ist die Komponente in OpenNMS die Benachrichtigungen versendet. Files für Benachrichtigungen sind: /etc/opennms/notifd-configuration.xml /etc/opennms/notifications.xml /etc/opennms/notificationCommands.xml /var/log/openmms/daemon/log/notifd.log 27 / 49

Slide 28

Slide 28 text

Gruß-Frequenzen öffnen Destination paths Wie können Benachrichtigungen versendet werden? Benachrichtigungen können über verschiedene Protokolle versendet werden. Die Protokolle können erweitert werden. Beispiel: eMail, Jabber, Asterisk Anruf Benachrichtigungen können an Benutzer und Gruppen gesendet werden. Diese Einstellungen werden als Destination Path bezeichnet. Benachrichtigungen können eskaliert werden. Benachrichtigungen können verzögert werden. 28 / 49

Slide 29

Slide 29 text

Hands on ... 29 / 49

Slide 30

Slide 30 text

Gruß-Frequenzen öffnen Aufgabe Benachrichtigung anschalten und Service Störung an E-Mail-Admin benachrichtigen lassen. Einrichten einer Benachrichtigungsverzögerung von 5 min. Benachrichtigung nur von komplettem Node down einrichten. Bestätigen von Benachrichtigungen Benachrichtigungszeitplan für Benutzer 30 / 49

Slide 31

Slide 31 text

Gruß-Frequenzen öffnen Diskussion Was ist Aufgabe: Benachrichtigung anschalten und Service Störung an E-Mail-Admin benachrichtigen lassen. 31 / 49

Slide 32

Slide 32 text

Time for a break 32 / 49

Slide 33

Slide 33 text

Sulu, Sie dürfen einfach drauf losfliegen. Was sind Events? Alle Änderungen im System werden von Events initiiert. Diese Events können von den folgenden Komponenten erzeugt werden: OpenNMS selbst im Monitoring, bspw. Pollerd (NodeDown, NodeLostService, InterfaceDown), Collectd (Threshold exceeded) Externe logging Protokolle wie Syslog und SNMP-Traps werden in Events umgewandelt. Externe Anwendungen über TCP 5817 und XML Daten oder send-event.pl 33 / 49

Slide 34

Slide 34 text

Sulu, Sie dürfen einfach drauf losfliegen. Unique Event Identifier Alle Events in OpenNMS werden über einen Unique Event Identifier (UEI) identifiziert. Sie beschreiben und klassifizieren ein Event z.B.: uei.opennms.org/nodes/nodeDown uei.opennms.org/nodes/interfaceDown uei.opennms.org/nodes/nodeLostService Events von externen Quellen wie bspw. Syslog oder SNMP traps müssen UEI zugewiesen bekommen. 34 / 49

Slide 35

Slide 35 text

Sulu, Sie dürfen einfach drauf losfliegen. Konfiguration von Events Die Events werden von Eventd verarbeitet. Die Konfigurationsdateien befinden sich: /etc/opennms/eventd-configuration.xml /etc/opennms/eventconf.xml /etc/opennms/events /var/log/opennms/daemon/eventd.log 35 / 49

Slide 36

Slide 36 text

Sulu, Sie dürfen einfach drauf losfliegen. eventconf.xml - OpenNMS "down" 1 2 uei.opennms.org/nodes/nodeLostService 3 OpenNMS-defined node event: nodeLostService 4 <p>A %service% outage was identified on interface %interface%. 5 </p> 6 <p>A new Outage record has been created and service level 7 availability calculations will be impacted until this outage is 8 resolved.</p> 9 10 %service% outage identified on interface %interface% 11 with reason code: %parm[eventReason]%. 12 13 Minor 14 16 36 / 49

Slide 37

Slide 37 text

Sulu, Sie dürfen einfach drauf losfliegen. eventconf.xml - OpenNMS "up" 1 2 uei.opennms.org/nodes/nodeRegainedService 3 OpenNMS-defined node event: nodeRegainedService 4 <p>The %service% service on interface %interface% was previously down 5 and has been restored.</p> 6 <p>This event is generated when a service which had previously failed 7 polling attempts is again responding to polls by OpenNMS. </p> 8 <p>This event will cause any active outages associated with this 9 service/interface combination to be cleared.</p> 10 11 The %service% outage on interface %interface% 12 has been cleared. Service is restored. 13 14 Normal 15 20 37 / 49

Slide 38

Slide 38 text

Sulu, Sie dürfen einfach drauf losfliegen. eventconf.xml - Include other files 1 events/Rancid.events.xml 2 events/3Com.events.xml 3 events/AdaptecRaid.events.xml 4 events/ADIC-v2.events.xml 5 events/Adtran.events.xml 6 events/Adtran.Atlas.events.xml 7 events/Aedilis.events.xml 8 events/AirDefense.events.xml 9 events/AIX.events.xml 10 11 ... 12 13 events/programmatic.events.xml 14 events/Standard.events.xml 15 events/Translator.default.events.xml 16 events/default.events.xml 38 / 49

Slide 39

Slide 39 text

Sulu, Sie dürfen einfach drauf losfliegen. eventd-configuration.xml 1 10 39 / 49

Slide 40

Slide 40 text

Sulu, Sie dürfen einfach drauf losfliegen. send-event.pl 1 Usage: ./send-event.pl [host] [options] 2 3 the UEI is a required field! 4 Usage: ./send-event.pl [host] [options] 5 6 Options: 7 8 the universal event identifier (URI) 9 [host[:port]] a hostname to send the event to (default: localhost) 10 --version, -V print version and exit successfully 11 --verbose, -v print the raw XML thats generated 12 --help, -h this help message 13 14 --timezone, -t the time zone you are in 15 --service, -s service name 16 --nodeid, -n node identifier (numeric) 17 --interface, -i IP address of the interface 18 --descr, -d a description for the event browser 19 --logmsg, -l a logmsg for the event browser (secure field by default) 20 . 21 . 22 . 40 / 49

Slide 41

Slide 41 text

Sulu, Sie dürfen einfach drauf losfliegen. send-event.pl 1 . 2 . 3 . 4 --severity, -x the severity of the event (numeric or name) 5 1 = Indeterminate 6 2 = Cleared (unimplemented at this time) 7 3 = Normal 8 4 = Warning 9 5 = Minor 10 6 = Major 11 7 = Critical 12 13 --parm, -p an event parameter (ie: 14 --parm ’url http://www.google.com/’) 15 --uuid, -U a UUID to pass with the event 16 17 Example: Force discovery of a node: 18 19 send-event.pl \ 20 --interface 172.16.1.1 \ 21 uei.opennms.org/internal/discovery/newSuspect 41 / 49

Slide 42

Slide 42 text

Sulu, Sie dürfen einfach drauf losfliegen. Events - Hands-on Erstellen eines eigenen "down" events. Bitte vergewissern, dass alarm-data mit angegeben ist. Erstellen eines eigenen "up" events. Dieses Event löst das vorher gehende Event auf. Sicherstellen dass die Events korrekt verwendet werden Test zum überschreiben der severity und der logmsg 42 / 49

Slide 43

Slide 43 text

Lab Class.events.xml Wir erzeugen das DOWN event: 1 2 3 uei.opennms.org/class/downTest 4 AAA - Class Test Event - Down 5 <p> 6 Oh my, something be broken! 7 </p> 8 9 <p>Down: Something be broken!</p> 10 Warning 11 15 16 . 17 . 18 . 43 / 49

Slide 44

Slide 44 text

Lab Class.events.xml Wir erzeugen das UP event: 1 . 2 . 3 . 4 5 uei.opennms.org/class/upTest 6 AAA - Class Test Event - Up 7 <p> 8 Never mind, I was just kidding. 9 </p> 10 11 <p>Up: All better now.</p> 12 Normal 13 18 19 44 / 49

Slide 45

Slide 45 text

Lab "down" Event senden mit : send-event.pl uei.opennms.org/class/downTest In der Web UI sicher stellen, dass das Event unter "Events" als auch unter "Alarms" angezeigt wird. Das Event "down" wiederholt senden. Es sollte in "Events" zweimal und in den "Alarms" einmal angezeigt werden. Senden des "down" Event mit anderer Severity: send-event.pl -x 7 uei.opennms.org/class/downTest Sicherstellen, Alarm sollte immer noch einmal angezeigt werden. Senden des "up" Event mit: send-event.pl uei.opennms.org/class/upTest Event in der "Event-Liste" und den Alarm prüfen 30 Sekunden warten und refresh des Alars. Was passiert? 45 / 49

Slide 46

Slide 46 text

"Dann fliegt sie eben auseinander" Wenn Festplatten voll sind oder fast voll sind, reagieren Anwendungen oft nicht mehr oder werden sehr langsam. Es gibt verschiedene Varianten diese Ziel zu erreichen: Aktiv: OpenNMS zeichnet Plattenfüllstand auf und misst gegen einen Schwellwert Polling mit einem Monitor gegen den Füllstand und als Service abbilden. Passiv: Net-SNMP agent sendet uns einen SNMP-Trap 46 / 49

Slide 47

Slide 47 text

"Dann fliegt sie eben auseinander" Threshold event Benachrichtigung anschalten 47 / 49

Slide 48

Slide 48 text

"Dann fliegt sie eben auseinander" "Aktives" Thresholding Admin/Manage Thresholds Edit "netsnmp" threshold group Edit "ns-dskPercent" Datasource Konfiguration: threshold, re-arm & trigger values Filter für root "/" file system anlegen Temporäre Datei erzeugen um den Schwellwert auszulösen. (Vorsichtig!) dd if=/dev/zero of=my1gb.file bs=1024 count=1000000 48 / 49

Slide 49

Slide 49 text

"Dann fliegt sie eben auseinander" Thresholds konfigieren 49 / 49