56
22. Oktober 2014 Der Check_MK Micro Core

Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

Embed Size (px)

Citation preview

Page 1: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22. Oktober 2014

Der Check_MK Micro Core

Page 2: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

2 / 56

Der Check_MK Micro CoreEinfach. Schnell.

Page 3: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

3 / 56

Aufgaben des Cores

● Anstoßen von Check-Plugins

● Empfangen von Resultaten

● Speichern der Resultate

● Erkennen von Änderungen (OK -> CRIT)

● Auslösen von Aktionen (Notifikationen)

● Weiterleiten von Performancedaten an RRDs

● Aktuelle Daten für Abfragen bereitstellen

Page 4: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

4 / 56

Stellung des Cores im System

Page 5: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

5 / 56

Stellung des Cores im System

Page 6: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

6 / 56

Stellung des Cores im System

Page 7: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

7 / 56

Stellung des Cores im System

Page 8: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

8 / 56

Stellung des Cores im System

Page 9: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

9 / 56

Stellung des Cores im System

Page 10: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

10 / 56

Stellung des Cores im System

Page 11: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

11 / 56

Stellung des Cores im System

Page 12: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

12 / 56

Stellung des Cores im System

Page 13: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

13 / 56

Stellung des Cores im System

Page 14: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

14 / 56

Stellung des Cores im System

Page 15: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

15 / 56

Stellung des Cores im System

Page 16: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

16 / 56

Stellung des Cores im System

Page 17: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

17 / 56

Stellung des Cores im System

Page 18: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

18 / 56

Stellung des Cores im System

Page 19: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

19 / 56

Stellung des Cores im System

Page 20: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

20 / 56

Stellung des Cores im System

Page 21: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

21 / 56

Stellung des Cores im System

Page 22: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

22 / 56

Nagios und Derivate

● Am Anfang: Nagios Core

● Erster Fork: Icinga

● Neuentwicklung in Python: Shinken

● Zweiter Fork: Naemon

● neugeschrieben in C++: Icinga 2

● Reicht's nicht langsam?

Page 23: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

23 / 56

Warum nicht Nagios?

Nichts gegen die Leistung von Ethan, aber:

● Code von Nagios und Forks sehr umfangreich

● großflächige Copy & Paste-Programmierung

● Programmierung mit vielen Seiteneffekten

● Code ist nicht Thread-sicher

● Code ist hässlich und kaum wartbar

● Konfigurationsänderung erfordert Neustart

Page 24: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

24 / 56

Warum nicht Shinken?

● Python leichter wartbar, aber..

● C/C++ ist view schneller (richtig programmiert)

● Architektur ist recht komplex

● Und: Abhängigkeit von fremdem Projekt

Page 25: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

25 / 56

Designziele vom CMC

1. Einfach

2. Schnell

Page 26: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

26 / 56

1. Einfach

● Komplexität aus dem Code auslagern

● Kein Konfigurationsparser

● Timeperiods offline berechnen

● Keine Modulschnittstelle

● Livestatus fest eingebaut

Page 27: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

27 / 56

1. Einfach

Ergebnis:

Nur 8% der Codezeilen von Nagios

Page 28: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

28 / 56

2. Schnell

● Monitoring ohne Prozesserzeugung!

● Konfiguration und Status in Binärform

● Intern gehen alle Zugriffe über Indizes

● Optimale Unterstützung von Check_MK

● Keine Temp-Dateien oder Spoolfiles

Page 29: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

29 / 56

2. Schnell

Ergebnis:

drastische Reduktion der CPU-Auslastung

Config von 600.000 Services in 0,5 sec laden

10.000 Checks / Sekunde und mehr

Page 30: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

30 / 56

Einschränkungen

Einschränkungen

● aktuell keine Eventhandler

● keine Service Dependencies

● kein Lesen von Nagios-Konfiguration

● keine Brokermodule

Page 31: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

31 / 56

Sehr wohl geht

● Ausführen von „normalen“ Nagios-Checks

● Eskalationen (über Check_MK)

● Weiterarbeiten mit bestehenden RRDs

● Alles, was Check_MK so braucht

Wer alles über WATO konfiguriert, hat keine Enschränkungen.

Page 32: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

32 / 56

Dinge, die nur CMC kann

Ein paar Dinge kann nur der CMC, z.B.

● Performancedaten an Graphite senden

● Konfiguration der RRD-Struktur pro Host/Service

● Availability Cache

● Konfiguration neu laden ohne Stoppen des Cores oder von laufenden Checks

Page 33: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

33 / 56

Migration auf CMC

Was muss man tun, um von Nagios auf CMC zu wechseln?

Page 34: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

34 / 56

Event Handler

Automatisches Ausführen von Aktionen wird aktuell nur durch Notifications unterstützt

● Bei Bedarf also Notification-Skripte erstellen

Page 35: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

35 / 56

Service Dependencies

● Mal ehrlich, wer braucht die?

● Umständlich zu konfigurieren

● Sehr intransparent

● Check_MK geht eh einen anderen Weg

● Beispiel: neuer ORACLE Agent

Page 36: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

36 / 56

Legacy Checks

● Klassiche Nagios-Checks gehen wunderbar, aber...

● legacy_checks += versteht CMC nicht

● Grund: diese basieren auf define command {}

● Also: Umstellen auf custom_checks● Das ist das Format, das auch WATO nutzt

● Umstellung ist auch mit Nagios kompatibel und schadet nicht

Page 37: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

37 / 56

Vorher: legacy_checks

Page 38: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

38 / 56

Nachher: custom_checks

Page 39: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

39 / 56

Eskalationen

Werden von CMC nicht unterstützt, aber...

...durch Check_MK extern gelöst:

● Flexible Notifications (alt)

● Rule Based Notifications (neu)

Page 40: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

40 / 56

Weitere Migration

Weiterhin zu beachten bei der Migration:

● Historie durch Kopieren von Dateien übernehmen

● Aktueller Zustand von Downtimes, Acknowledgements wird übernommen

● Aktueller Status wird nicht übernommen (aber ist dann in 1 Minute wieder da)

● Weitere Einzelheiten:http://mathias-kettner.de/cms_cmc_migration.html

Page 41: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

41 / 56

Host Checks - Smart PING

Der CMC bietet einen neue Methode für Host-Checks:

Smart PING

Page 42: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

42 / 56

Smart PING

Ideen von Smart PING:

● Ein Prozess wickelt alles Pingen ab

● Keine Prozesserzeugung mehr

● PINGs gleichmäßig verteilen, nicht in Bursts

● Auch eingehende TCP SYN/RST/ACK auswerten!

Page 43: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

43 / 56

Smart PING - Vorteile

Vorteile:

● Praktisch keine CPU Last mehr

● Zeitnahe Hostchecks

● Kein nachgelagerter Hostcheck bei TCP-“Connection refused“ nötig

Page 44: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

44 / 56

Smart PING - Nachteile

Nachteile:

● Smart PING sammelt keine Performancedaten!

Macht, aber nix, weil:

● Bei benötigten Hosts, entweder PING-Service

● oder Hostcheck auf check_icmp zurückstellen

Page 45: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

45 / 56

Snapin zur Core-Statistik

Page 46: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

46 / 56

Architektur

Die Architektur des CMC

Page 47: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

47 / 56

CMC Architektur

Page 48: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

48 / 56

Architektur - Scheduler

Page 49: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

49 / 56

Architektur - Check Helper

Page 50: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

50 / 56

Architektur - Check_MK Helper

Page 51: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

51 / 56

Architektur - ICMP Helper

Page 52: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

52 / 56

Architektur - RRD Cache

Page 53: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

53 / 56

Architektur - RRD Erzeugung

Page 54: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

54 / 56

Architektur - Notifications

Page 55: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

55 / 56

Page 56: Der Check MK Micro Core - Mathias Kettner · 22.10.14 36 / 56 Legacy Checks Klassiche Nagios-Checks gehen wunderbar, aber... legacy_checks += versteht CMC nicht Grund: diese basieren

22.10.14

56 / 56

Vielen Dank

für Ihre

Aufmerksamkeit