Check MK

Werbung
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
Herunterladen