1 Alle Rechte an diesen Unterlagen liegen bei Mathias Kettner, Preysingstr. 74, 81667 München. Vervielfältigung oder Reproduktion – auch auszugsweise – nur mit vorheriger schriftlicher Genehmigung. Die Nutzung ist beschränkt auf die Unterrichtsbegleitung für die von Mathias Kettner veranstaltete Schulung und deren spätere persönliche Nutzung durch die Teilnehmer. Insbesondere ist eine Nutzung der Unterlagen für weitere Schulungen oder ähnliche Veranstaltungen untersagt. Diese Unterlagen sind nur original mit Deckblatt, Datumshinweis, in Farbe und auf 160-Gramm Papier. Melden Sie unerlaubte Kopien oder einen anderen Verstoß gegen das Urheberrecht bitte per Telefon unter 089 / 444 09 662 oder per Email an [email protected]. Check MK 1. Mathias Kettner 3. Nagios am Limit dozent_kettner Mathias Kettner Diplom Informatiker früher Entwickler bei SuSE ersetzt NRPE, NSClient++, check_snmp check_mk_motivation eigene Agenten für Linux, Unix, Windows und VMS Nagios stößt bei sehr umfangreichen Installation an technische und menschliche Grenzen. Schwierigkeiten bei komplexen Installationen vereinfacht Erstellen und Pflege der Konfiguration verbessert Gesamtperformance ☞ mehr Checks pro Zeit Lizenz: GNU GPL Version 2 Konfigurationsaufwand Home: ☞ http://mathias-kettner.de/check_mk Ausbringung und Pflege der Agenten Autor von ,,Fehlerdiagnose und Problembehebung unter Linux“ evtl. viele unterschiedliche Zielplattformen seit 2000 selbständig Dozent und Consultant Übersicht in der Darstellung als neues umfassendes Addon für Nagios Ablauf mit NRPE, Beispiel: Dateisystem Performance von Nagios! Verwaltungsaufwand beim Operating Grafische Oberfläche für die Konfiguration? hübsch, aber... ändert nicht was konfiguriert werden muss, sondern wie 2. Firma MK verbessert nicht die Performance ➊ ➋ ➌ ➍ gibt außerdem die Vorteile von Textdateien auf ➎ Über Exitcode und stdout geht’s weiter an Nagios ersetzt nicht den Aufwand bei den Agenten firma_kettner hilft nicht beim Operating Ablauf mit : Ganzer Host auf einmal ☞ Neuer Denkansatz notwendig! MK – Mathias Kettner Schulung, Consulting, Support Nagios ruft check_nrpe als aktiven Check auf check_nrpe sendet Kommando an NRPE NRPE ruft check_disk als lokales Plugin auf Das Resultat geht zurück an check_nrpe 4. check_mk check_mk Schwerpunktthema: Linux im Rechenzentrum, Nagios Sitz in München, Haidhausen ➊ ➋ ➌ ➍ ➎ Kontakt: Mathias Kettner Preysingstraße 74 81667 München WWW: mathias-kettner.de E-Mail: [email protected] c 2009 Mathias Kettner Nagios führt pro Host 1× pro Zyklus check_mk aus. check_mk kontaktiert den Agenten per TCP Der Agent ermittelt alle verfügbaren Daten auf einmal check_mk extrahiert relevante Daten gemäß Konfig. und sendet Ergebnisse als passive Checks zu Nagios. Beispielausgabe des Agenten: 29. Oktober 2009 www.mathias-kettner.de 2 Alle Rechte an diesen Unterlagen liegen bei Mathias Kettner, Preysingstr. 74, 81667 München. Vervielfältigung oder Reproduktion – auch auszugsweise – nur mit vorheriger schriftlicher Genehmigung. Die Nutzung ist beschränkt auf die Unterrichtsbegleitung für die von Mathias Kettner veranstaltete Schulung und deren spätere persönliche Nutzung durch die Teilnehmer. Insbesondere ist eine Nutzung der Unterlagen für weitere Schulungen oder ähnliche Veranstaltungen untersagt. Diese Unterlagen sind nur original mit Deckblatt, Datumshinweis, in Farbe und auf 160-Gramm Papier. Melden Sie unerlaubte Kopien oder einen anderen Verstoß gegen das Urheberrecht bitte per Telefon unter 089 / 444 09 662 oder per Email an [email protected]. Check MK <<<check_mk>>> Version: 1.0.36 <<<df>>> /dev/mapper/system-root ext3 28834812 10390192 16979892 38% / /dev/md1 ext3 964408 46792 868624 6% /boot /dev/mapper/system-home ext3 96118540 66110464 25125440 73% /home /dev/mapper/system-svn ext3 2064208 804804 1154548 42% /svn /dev/mapper/system-local ext3 5160576 1089048 3809384 23% /usr/local /dev/mapper/system-cd ext3 206424760 57212868 138726132 30% /cdarchiv <<<ps>>> init [2] udevd --daemon /sbin/portmap /sbin/rpc.statd /usr/sbin/rpc.idmapd ...usw... Umsetzung der Agenten: Windows Standalone check_mk_agent.exe als Dienst keine Konfiguration notwendig – – – – RAID-Arrays und -platten Multipathgeräte Hardwaresensoren Windows-Dienste Beispiel: Cisco-Switches, Brocade FC-Switche, Bladecenter, FSC Server View, uvm. Inventur in der Praxis ➊ Aufruf von check_mk -I alltcp ➋ ☞ neue Services werden gefunden ➌ Aufruf von check_mk -R ➍ ☞ Konfiguration für Nagios wird automatisch erzeugt! ➎ ... und Nagios durchgestartet Inventur arbeitet inkrementell und kann jederzeit wiederholt werden. Beispiel: Ablauf Switchports ➊ SNMP auf Switch freigeben für Nagios ➋ Switch in all_hosts aufnehmen ➌ Inventur auslösen mit check_mk -I ifoperstatus ➍ check_mk -R ☞ erzeugt Konfig, startet Nagios durch check_mk überwacht automatisch alle belegten Ports 8. Inventurchecks check_mk_inventurchecks keine DLLs, keine Laufzeitumgebung nötig Idee verwendet nur WIN32 API ☞ portabel aktuell nur über C/C++ erweiterbar warnen, wenn auf Host ungecheckte Items auftauchen 6. Demonstration check_mk_demo Umsetzung der Agenten: Linux/UNIX Umsetzung Einbindung per inetd, SSH oder stunnel check_mk --check-inventory $HOSTADDRESS$ läuft als normaler aktiver Nagios-Check pro Host optimal portabel, da nicht binär is OK, wenn Inventur nichts neues finden würde benötigt keine Nagios-Plugins! Zyklus z.B. alle zwei Stunden einfaches Shellskript sehr einfach erweiterbar und nun: kurze Demonstration in der Praxis! main.mk inventory_check_interval = 120 5. Inventur check_mk_inventur Idee 7. check_mk und SNMP z. B.: alle plattengebundenen Dateisysteme ☞ daraus automatisch Services ermitteln ☞ Prinzip von check_mk auch hier anwendbar Dies geht auch in vielen anderen Fällen, z. B. c 2009 Mathias Kettner ☞ Checks werden automatisch in Nagios integriert check_mk_snmp Netzwerkgeräte, FC-Switche, Appliances, uvm. können nur per SNMP überwacht werden. oftmals: tabellarische Daten: Switchports, Sensoren... Agent sendet alle denkbaren Daten über Host – Netzwerkkarten Konfiguration Einfach in main.mk: In der Praxis: 9. Monitoring von Clustern check_mk_cluster Problemstellung check_mk unterstützt viele Geräte out-of-the-box 29. Oktober 2009 Manche HA-Cluster habe keine Service-IP www.mathias-kettner.de 3 Alle Rechte an diesen Unterlagen liegen bei Mathias Kettner, Preysingstr. 74, 81667 München. Vervielfältigung oder Reproduktion – auch auszugsweise – nur mit vorheriger schriftlicher Genehmigung. Die Nutzung ist beschränkt auf die Unterrichtsbegleitung für die von Mathias Kettner veranstaltete Schulung und deren spätere persönliche Nutzung durch die Teilnehmer. Insbesondere ist eine Nutzung der Unterlagen für weitere Schulungen oder ähnliche Veranstaltungen untersagt. Diese Unterlagen sind nur original mit Deckblatt, Datumshinweis, in Farbe und auf 160-Gramm Papier. Melden Sie unerlaubte Kopien oder einen anderen Verstoß gegen das Urheberrecht bitte per Telefon unter 089 / 444 09 662 oder per Email an [email protected]. Check MK Wie monitore ich einen Dienst... ... wenn ich nicht weiß, wo er läuft? Lösung mit ➊: Definition meiner Cluster in main.mk: main.mk clusters = { "cluster1" : [ "node1", "node2" ], "cluster2" : [ "node3", "node4", "node5" ] } ➋: Festlegung, welche Dienste geclustert sind: clustered_services = [ ( ["knot11", "knot12"], [ "fs_/cdarchiv" ] ), ( ALL_HOSTS, [ "fs_/exchange" ] ) ] ➌: Inventur auslösen ☞ Rest geht automatisch # # # oracle_asm_dg cpu.loads lsi.disk vms_md statgrab_net.params multipath cpu.threads diskstat Jetzt wichtig: Apache + Nagios muss laufen! Dann: # ☞ Defaults sind in der Regel richtig. Testen: # This is check_mk version 1.0.39 Copyright (C) 2009 Mathias Kettner Test: Abruf der Daten von TCP Port 6556: check_mk_weiteres Logfilemonitoring Aggregation von Services ☞ Übersicht Multiadmin: Viele Services auf einmal steuern Kontakte, Hostgruppen, Servicegruppen zuordnen 11. check_mk aufsetzen check_mk_aufsetzen ➊: holen und installieren Software von ☞ http://mathias-kettner.de/check_mk holen und unter /root ablegen. Dann: c 2009 Mathias Kettner # # ➍: Durchstarten Jetzt fehlt noch: Konfiguration für Nagios generieren Hostchecks vorkompilieren Nagios neu starten ☞ das alles macht ein Befehl: 1120940 ➌: in Monitoring aufnehmen Als ersten Host localhost aufnehmen: /etc/check_mk/main.mk all_hosts = [ ’localhost’ ] new new new new # Getting info cpu from host localhost (127.0.0.1) CPU load OK - 0.00 Number of threads OK - 69 threads fs_/ OK - 35% used Disk IO read OK - 0.0MB/s (in last 1241393233 secs) Disk IO write OK - 0.0MB/s (in last 1241393233 secs) CPU utilization OK - user: 0%, system: 1%, wait: 1% Memory used OK - 10.5% of RAM (52 MB) used by processes NIC eth0 counters OK - Receive: 0.00 MB/sec - Send: 0.00 MB/sec OK - Agent Version 1.0.39, Successfully processed 8 host infos # ➷ ➸ 10. Weitere Funktionen # nothing nothing nothing nothing Test: Check von localhost manuell durchführen: ➋: Installation des Agenten auf Zunächst brauchen wir xinetd: # Jetzt den Agenten selbst installieren: # !! <<<check_mk>>> Version: 1.0.39 <<<df>>> /dev/hda1 ext3 3989892 <<<ps>>> init [2] udevd --daemon /usr/sbin/rsyslogd -c3 nothing new ✁ # Generating Nagios configuration for hosts...OK Generating Nagios configuration for services...OK Validating Nagios configuration...OK Precompiling host checks...OK Restarting Nagios...OK → Host localhost und Services erscheinen in Nagios ➎: Weboberfläche check_mk bringt Webseite in Python mit: Einzige Funktion aktuell: Suchfunktion über Services Steuerbefehle auf Suchergebnis anwenden Inventurlauf: neue Checks finden: # " 29. Oktober 2009 ☞ Dazu braucht Apache braucht mod_python www.mathias-kettner.de 4 Alle Rechte an diesen Unterlagen liegen bei Mathias Kettner, Preysingstr. 74, 81667 München. Vervielfältigung oder Reproduktion – auch auszugsweise – nur mit vorheriger schriftlicher Genehmigung. Die Nutzung ist beschränkt auf die Unterrichtsbegleitung für die von Mathias Kettner veranstaltete Schulung und deren spätere persönliche Nutzung durch die Teilnehmer. Insbesondere ist eine Nutzung der Unterlagen für weitere Schulungen oder ähnliche Veranstaltungen untersagt. Diese Unterlagen sind nur original mit Deckblatt, Datumshinweis, in Farbe und auf 160-Gramm Papier. Melden Sie unerlaubte Kopien oder einen anderen Verstoß gegen das Urheberrecht bitte per Telefon unter 089 / 444 09 662 oder per Email an [email protected]. Check MK Python-Unterstützung für Apache installieren: # $ Dann Apache neu starten: # Und jetzt: ☞ http://nagios/check_mk Am besten als Link in die Sidebar einbauen ☞ Genau das macht Livestatus! Architektur livestatus.o wird als NEB-Modul geladen dieses öffnet ein UNIX-Socket und wartet auf Anfragen Anfragen werden direkt aus Nagios-Daten beantwortet Eigene Anfragesprache erlaubt effizientes Filtern /usr/local/nagios/share/side.php <li><a href="/check_mk/filter.py" target=main ➷ ➸>Check_MK Multiadmin</a></li> → sehr schnelle Antworten und topaktuelle Daten → kein Overhead für Daten-Kopieren → Nagios-Knowhow (.z.B in_notification_period) Beispiel: Verwendung von der Shell Komplette Information über alle Hosts: 12. Livestatus check_mk_livestatus Welche Wege gibt es zum Zugriff auf die aktuellen Statusinformationen von Nagios? status.dat klassischer Weg Jede Anfrage erfordert komplettes Parsen sh> %&'( % ) Beispiele für Anfragen Alle Hosts holen, aber nur bestimmte Spalten: GET hosts Columns: name alias address state (auch indirekt über Host): GET services Filter: contacts >= harri Zählen statt ausgeben Beispiel: wieviele Services sind OK/WARN/CRITICAL GET services Stats: state = 0 Stats: state = 1 Stats: state = 2 Ausgabe sieht so aus: 834;12;2 Das gleiche, aber nur für einen bestimmten Host: GET services Stats: state = 0 Stats: state = 1 Stats: state = 2 Filter: host_name = xyz123 Das gleiche, aber nur hosts, die nicht UP sind: Daten sind i.A. 10 - 30 Sekunden veraltet Teilweise fehlen Informationen (z.B. Timeperiods) NDO / SQL-Datenbanken Daten werden aktiv in Datenbank transportiert Zugriff über SQL teils recht komplexe Joins notwendig Und: Aktuellhalten ist extrem CPU-hungrig! Große Probleme mit Housekeeping, etc. zusätzlicher Aufwand durch Datenbank-Administration ’s Livestatus Modul Idee: Nagios hat alle Daten im Hauptspeicher diese sind untereinander optimal verknüpft Warum nicht diese direkt anzapfen? c 2009 Mathias Kettner GET hosts Columns: name alias address state Filter: state != 0 13. Vielen Dank extro_mk_kompakt Tabellen sind verbunden, z.B. service → host: GET services Columns: description state Bis zum nächsten Kurs alles Gute und viel Spaß beim Erproben des Stoffs in der Praxis! Nagios-spezifische Logik Hosts, die gerade in ihrer notification_period sind: GET hosts Filter: in_notification_period = 1 Alle nicht-OK services, für die harri ein Kontakt ist 29. Oktober 2009 Mathias Kettner www.mathias-kettner.de 5 Check MK Alle Rechte an diesen Unterlagen liegen bei Mathias Kettner, Preysingstr. 74, 81667 München. Vervielfältigung oder Reproduktion – auch auszugsweise – nur mit vorheriger schriftlicher Genehmigung. Die Nutzung ist beschränkt auf die Unterrichtsbegleitung für die von Mathias Kettner veranstaltete Schulung und deren spätere persönliche Nutzung durch die Teilnehmer. Insbesondere ist eine Nutzung der Unterlagen für weitere Schulungen oder ähnliche Veranstaltungen untersagt. Diese Unterlagen sind nur original mit Deckblatt, Datumshinweis, in Farbe und auf 160-Gramm Papier. Melden Sie unerlaubte Kopien oder einen anderen Verstoß gegen das Urheberrecht bitte per Telefon unter 089 / 444 09 662 oder per Email an [email protected]. Alle Rechte vorbehalten. Vervielfältigung - auch auszugsweise - nur mit vorheriger schriftlicher Genehmigung. Mathias Kettner Preysingstraße 74 81667 München Tel. 089 / 444 09 662 c 2009 Mathias Kettner mk @ mathias-kettner.de www.mathias-kettner.de 29. Oktober 2009 www.mathias-kettner.de