Checkmk
Checkmk (Eigenschreibweise: checkmk) ist eine in Python und C++ entwickelte Software für das Service-Monitoring von IT-Infrastruktur. Sie wird zur Überwachung von Server, Netzwerk, Applikationen, Public Clouds, Containern, Speicher, Datenbanken und Umweltsensoren genutzt.[2]
Checkmk | |
---|---|
Basisdaten | |
Entwickler | tribe29 GmbH (frühere Mathias Kettner GmbH) |
Erscheinungsjahr | 2008 |
Aktuelle Version | 2.0.0p12 (5. Oktober 2021) |
Betriebssystem | Linux |
Programmiersprache | Python, C++ |
Kategorie | IT-Infrastruktur-Monitoring |
Lizenz | GPLv2 und weitere Open-Source-Lizenzen, Checkmk Enterprise License[1] |
deutschsprachig | ja |
https://checkmk.de |
Checkmk gibt es in drei Editionen[3]: einer Open Source Edition („Checkmk Raw Edition – CRE“), einer kommerziellen Enterprise Edition („Checkmk Enterprise Edition – CEE“) und einer kommerziellen Edition für Managed Services Provider („Checkmk Managed Services Edition – CME“). Verfügbar sind diese Checkmk-Editionen für eine Reihe von Plattformen, insbesondere für unterschiedliche Versionen von Debian, Ubuntu, SLES und RedHat/CentOS, sowie als Docker-Image[4]. Zusätzlich werden physische Appliances unterschiedlicher Größe, sowie eine virtuelle Appliance angeboten, um die Administration des unterliegenden Betriebssystems durch eine grafische Oberfläche zu vereinfachen und Hochverfügbarkeitslösungen zu ermöglichen.
Die Agenten, die Checkmk zum Datensammeln auf vielen Systemen einsetzt, sind dabei für 11 Plattformen verfügbar, darunter auch Windows.[5]
Geschichte
Checkmk entstand ab dem Jahr 2008 als Agenten ersetzendes Shellskript für den Inetd und wurde im April 2009 unter der GPL veröffentlicht.[6] Es basierte ursprünglich auf Nagios und erweitert dies um mehrere Komponenten[7][8]. Die Open-Source-Variante basiert auch weiterhin noch auf einem Nagios-Kern und bündelt diesen mit weiteren Open-Source-Komponenten in einem System[9].
Die kommerziellen Editionen von Checkmk haben sich aber seit vielen Jahren in ein vollständig eigenständiges Monitoring-System entwickelt, das alle wesentlichen Komponenten durch eigene ersetzt hat – inkl. eines eigens entwickeltem Monitoring-Kerns[10]. Der Großteil der Entwicklungen für die kommerziellen Varianten, insbesondere alle Plug-ins, fließen auch in die Checkmk Raw Edition ein.
Während Checkmk früher insbesondere für die Überwachung großer und heterogener On-premise-Umgebungen ausgelegt war, unterstützt es ab der Version 1.5+ (1.5p12) auch die Überwachung von AWS-, Azure-, Docker- und Kubernetes-Diensten[11].
Checkmk wird von der tribe29 GmbH[12] aus München entwickelt, die bis zum 16. April 2019 unter dem Namen Mathias Kettner GmbH firmierte. Im Zuge der Umfirmierung wurde auch die alte Schreibweise „Check_MK“ in „Checkmk“ geändert.
Die tribe29 GmbH folgt einem Open-Core-Geschäftsmodell. Die Open-Source-Edition ist unter unterschiedlichen Open-Source-Lizenzen – mehrheitlich GPLv2 – verfügbar, während große Teile der kommerziellen Editionen unter der proprietären ‚Checkmk Enterprise License‘ laufen.
Produkt
Checkmk kombiniert drei Arten des IT-Monitorings:
- Die statusbasierte Überwachung, die den Zustand („Health“) eines Geräts oder einer Applikation über Schwellwerte erfasst.
- Die metrikbasierte Überwachung, die das Aufzeichnen und die Analyse von Zeitreihengraphen ermöglicht. Für die CEE steht dafür sowohl ein eigenes HTML5 basiertes Graphing-System zur Verfügung als auch eine Integration mit Grafana[13].
- Und die log- und eventbasierte Überwachung, bei der wichtige Events herausgefiltert und darauf basierend Aktionen ausgelöst werden können.
Um eine sehr breite Überwachung zu gewährleisten, bringt Checkmk in jeder Edition aktuell 1700 eigene Plug-ins mit, die alle unter GPLv2 lizenziert sind. Diese Plug-ins werden als Teil des Produkts gewartet und regelmäßig durch weitere Plug-ins bzw. Erweiterungen existierender Plug-ins ergänzt. Zusätzlich ist die Anbindung bestehender Legacy-Nagios Plug-ins möglich.
Um das Set-up und den Betrieb deutlich zu vereinfachen werden alle Komponenten von Checkmk voll integriert ausgeliefert. Eine regelbasierte 1:n-Konfiguration, sowie ein hoher Automatisierungsgrad beschleunigen dabei Arbeitsabläufe deutlich. Zu den Automatisierungen gehören dabei:
- Automatisierte Host-Erkennung (optional, wo relevant)
- Automatisierte Services-Erkennung[14]
- Automatisierte Konfiguration vieler Plugins über vorkonfigurierte Schwellwerte und Regeln
- Automatische Agent-Updates (ein CEE-Feature)
- Automatische und dynamische Konfiguration, die das Aufnehmen von volatilen Diensten mit einer Lebensdauer von wenigen Sekunden, wie im Kubernetesumfeld, ermöglicht (ab CEE v1.6)[15]
- Automatische Discovery von Tags & Labels aus Quellen wie Kubernetes, AWS und Azure (ab CEE v1.6)
Daneben existieren auch Playbooks für die Nutzung von Konfigurations- und Deployment-Werkzeugen wie Ansible[16] oder Salt[17].
Checkmk wird häufig in sehr großen verteilten Umgebungen eingesetzt, in denen eine hohe Anzahl von Standorten (z. B. 300 Standorte von Faurecia[18]) und/oder deutlich über 100.000 Geräte (z. B. Edeka[19]) überwacht werden. Dies wird unter anderem dadurch möglich, dass Checkmks Microcore einen sehr viel geringeren CPU-Ressourcenverbrauch als z. B. Nagios aufweist und dadurch auf gleicher Hardware eine deutlich höhere Performance bietet. Des Weiteren werden die nicht-persistenten Daten in-memory im RAM vorgehalten, was die Zugriffszeit deutlich verbessert.
Komponenten
Monitoring-Kern („Checkmk Microcore – CMC“)
Die kommerziellen Varianten von Checkmk setzen einen eigenen, in C++ geschriebenen, Monitoring-Kern ein. Dieser hat eine deutlich höhere Performance als ein Nagios-Kern. Zusätzlich erlaubt er ab der Version 1.6 die dynamische Aufnahme von kurzlebigen Objekten, wie z. B. Containern, da im Gegensatz zum Nagioskern kein Neustart bei Konfigurationsänderungen notwendig ist. Die Open-Source-Variante „Checkmk Raw Edition“ setzt aktuell noch einen Nagios-Kern ein.
Konfiguration- & Check-Engine
Checkmk bietet eine eigenständige Diensterkennung und Einstellungserzeugung. Beim Durchführen der Prüfungen (englisch checks) arbeitet Checkmk auf eine eigene Art. In der Prüfzeit wird jeder Wirt (englisch hosts) nur noch ein einziges Mal kontaktiert. Die Prüfergebnisse werden an den Monitoring-Kern als passive Checks übermittelt. Dies verbessert wesentlich die Leistung auf dem Monitoring Server sowie auf den zu überwachenden Wirten. Dabei nutzt Checkmk unterschiedliche Methoden, um auf die Daten der Zielsysteme zuzugreifen. Dazu gehören Agenten, die auf dem Ziel-System installiert werden, „Special Agents“, die auf dem Monitoring-Server laufen und mit der API des Zielsystems kommunizieren, die SNMP-API für die Überwachung von z. B. Netzwerkgeräten und Druckern und HTTP/TCP-Protokolle, um mit Webservices und Internetdiensten zu kommunizieren. Standardmäßig folgt Checkmk dem „Pull-Prinzip“, d. h. die Daten werden explizit vom überwachenden System abgefragt, um schnell zu identifizieren, sollte ein System plötzlich ausfallen und nicht mehr auf einen „Pull“ antworten. Alternativ kann aber auch ein „Push“ konfiguriert werden, auf dem das System seine Daten direkt an Checkmk oder einen Zwischenwirt übergibt.
Datenschnittstelle („Livestatus“)
Der Livestatus ist die wichtigste Schnittstelle in Checkmk. Er stellt einen Live-Zugriff auf alle Daten der überwachten Hosts und Services zur Verfügung. Die Daten werden direkt aus dem RAM geholt, was langsame Festplattenzugriffe vermeidet und einen schnellen Zugriff auf das Monitoring gibt, ohne das System zu sehr zu belasten. Der Zugriff erfolgt über ein einfaches Protokoll und ist von allen Programmiersprachen aus ohne eine spezielle Bibliothek möglich.
Web-GUI („Multisite“)
Multisite ist die Web-GUI von Checkmk. Neben einem schnellen Seitenaufbau bietet sie benutzerdefinierbare Ansichten und Dashboards, verteiltes Monitoring durch Einbinden mehrerer Monitoring-Instanzen via Livestatus, Integration von NagVis, eine integrierte LDAP-Anbindung, einen Zugriff auf Statusdaten via Webservice und vieles mehr. Dashboards und Ansichten können nach Benutzern oder Benutzergruppen unterschieden werden, z. B. vSphere-spezifische[20] Ansichten für VMware-Admins. Die Web-GUI existiert aktuell in deutscher und englischer Sprache.
Web Administration („WATO“)
Das Web Administration Tool macht ein auf Checkmk basierendes System komplett über den Browser administrierbar. Dies umfasst auch die Verwaltung von Benutzern, Rollen, Gruppen, Zeitperioden, und mehr. Über ein Rollenkonzept können Berechtigungen auf diese Weise granular vergeben werden. Dafür können vorhandenen rollenbasierten Zugriffskontrollen (LDAP, AD) genutzt werden. Das WATO arbeitet regelbasiert, so dass die Konfiguration auch in komplexen Umgebungen intuitiv bleibt und der notwendige Konfigurationsaufwand gering ist. Automatische Erkennung und Konfiguration sowie automatisierte Agentenaktualisierung beschleunigen die Konfiguration weiter. Über eine HTTP-API können für die beschleunigte Konfiguration auch CMDBs integriert werden.
Benachrichtigungssystem
Pro Benutzer können mehrere Benachrichtigungskanäle eingerichtet und unterschiedlich regelbasiert konfiguriert werden. So kann z. B. die E-Mail den ganzen Tag, SMS aber nur für wichtige Probleme während Bereitschaftszeiten ausgelöst werden – ohne dass dafür mehrere künstliche Benutzer angelegt werden müssen. Die Benachrichtigungen können an alle oder auch nur an bestimmte Teams gehen, z. B. nur an die Speicheradmins bei einer ausgefallenen Festplatte. Doppelte Benachrichtigungen werden dabei zusammengefasst, so dass kein Benutzer über einen bestimmten Kanal doppelt benachrichtigt wird. Des Weiteren können Anwender ihre Benachrichtigungen selbst konfigurieren. In verteilten Umgebungen können Warnmeldungen zentral verwaltet werden. Für erkannte Probleme können automatisch Aktionen ausgelöst werden (Alarmsteuerung), z. B. über Skripte. Mit Checkmk direkt ausgeliefert werden Integrationen zu Email und SMS-Gateways sowie zu Kommunikations- und IT-Service-Management-Lösungen wie Slack, Jira, PagerDuty, OpsGenie, VictorOps und ServiceNow.
Business Intelligence
Das Business-Intelligence-Modul ist in die grafische Benutzeroberfläche integriert. Es aggregiert regelbasiert aus vielen einzelnen Statusdaten von Hosts und Services den Gesamtzustand von Geschäftsprozessen, deren Abhängigkeit von komplexen Anwendungen und deren Abhängigkeit von IT-Infrastrukturelementen. Es kann auch zur Darstellung von Anwendungen genutzt werden, die sich aus Microservices zusammensetzen, welche ihrerseits wieder aus Kubernetes-Pods und -Deployments bestehen. Des Weiteren können Worst-Case-Szenarien in Echtzeit simuliert werden und historische Zustände analysiert werden, um Ursachen für verschlechterte Leistungen zu verstehen.
Event Console
Die Event Console integriert die Verarbeitung von Logmeldungen und SNMP-Traps in das Monitoring. Sie wird über ein flexibles Regelwerk konfiguriert und entscheidet, ob die eingehenden Meldungen verworfen werden oder wie sie eingestuft werden. Sie kann zählen, korrelieren, Meldungen erwarten, Meldungen umschreiben und mehr. Gleiche Einträge können zu einem einzigen Ereignis zusammengefasst werden (z. B. mehrere fehlgeschlagene Logins), um die Übersicht der Ereignisse zu wahren. Auch verfügt sie über einen eingebauten Syslog-Daemon, der direkt auf Port 514 Meldungen entgegennimmt sowie einen SNMP-Trap-Receiver welcher auf Port 162 Traps empfängt.
Metrik-Graphing
Die kommerziellen Checkmk-Editionen verwenden ein eigenes Metrik- und Graphing-System. Mit diesem können Zeitreihenmetriken über lange Zeiträume mit interaktiven HTML5-Graphen analysiert werden. Die maximale Auflösung beträgt dabei eine Sekunde. Daten können aus einer Vielzahl von Datenquellen und Formaten für Metriken (JSON, XML, SNMP usw.) importiert werden und in eine plattenplatzsparende Langzeitdatenspeicherung abgelegt werden.
Alternativ können über eine Exportschnittstelle Graphite oder InfluxDB angeschlossen werden. Ab der Version CEE 1.5p16 existiert zusätzlich auch ein Datasource-Plugin für Grafana, um Daten direkt aus Checkmk in Grafana zur Visualisierung zu integrieren. Die Checkmk Raw Edition verwendet aktuell weiterhin PNP4Nagios als Graphing-System.
Reporting
Das Reporting ermöglicht die direkte Bereitstellung von PDF-Berichten, ad-hoc oder automatisiert in regelmäßigen Abständen. Es beinhaltet eine Verfügbarkeitsanalyse in der die Historie der Zustände mit einem Klick über einen beliebigen Zeitraum mit Berechnung der Verfügbarkeit bereitgestellt werden kann Verfügbarkeitsberechnungen können nicht überwachte Zeiten ausschließen, die Auflösung anpassen oder kurze Intervalle ignorieren. Neben den Verfügbarkeitsberechnungen beinhaltet das Reporting auch ein SLA-Reporting, in dem komplexe SLAs überwacht werden können. Das Reporting ist nur in den kommerziellen Varianten von Checkmk verfügbar.
Hardware-Software-Inventory
Das Hardware-Software-Inventory ermitteln den Bestand der gesamten Hard- und Software, die auf Geräten und Systemen installiert sind. Damit lassen sich z. B. Änderungen an der Hard- und Software überwachen, das Vorhandensein von installierten Sicherheitsupdates überprüfen und statische Daten durch dynamische Parameter, wie z. B. die aktuelle Festplattenauslastung über Monitoringdaten aktualisieren. Zur Configuration Management Database (CMDB) i-doit besteht eine tiefe Integration, die den Austausch von CMDB-Daten mit Monitoringdaten ermöglicht.
Siehe auch
Einzelnachweise
- Checkmk EULA. tribe29 GmbH. Abgerufen am 31. Mai 2019.
- Use Cases. tribe29 GmbH. Abgerufen am 15. Juni 2019.
- Checkmk Editionen. tribe29 GmbH. Abgerufen am 27. November 2015.
- Download version. tribe29 GmbH. Abgerufen am 10. Juli 2019.
- Monitoring Agents. tribe29 GmbH. Abgerufen am 12. Juni 2019.
- Mathias Kettner (check_mk). In: Meet The Community. Nagios Enterprises. 17. August 2009. Archiviert vom Original am 6. Januar 2012. Abgerufen am 27. November 2015.
- Götz Rieger: Einfach mal Nagios – Netzwerk-Monitoring mit OMD und Check_MK. In: c’t. 3. November 2012, S. 190 (Einleitung online [abgerufen am 27. November 2015]).
- Mathias Huber: Nagios-Erweiterung Check_mk in Version 1.1.10. Linux-Magazin. 9. März 2011. Abgerufen am 27. November 2015.
- Peter Siering: Monitoring-System Check_MK in frischer Version 1.4.0. Heise online 05/2017. 31. Mai 2017. Abgerufen am 31. Mai 2017.
- Mathias Kettner: Der Check_MK Micro Core. Abgerufen am 14. Juni 2018.
- Checkmk community announcement 1.5 Plus(1.5.p12). tribe29 GmbH. 17. Februar 2019. Abgerufen am 11. Juli 2019.
- tribe29 - Our Story. tribe29 GmbH. Abgerufen am 14. Juni 2019.
- Grafana Data Source Plugin. 17. April 2019, abgerufen am 9. Juli 2019 (englisch).
- Automatisierte Serviceerkennung. tribe29 GmbH. Abgerufen am 17. Februar 2017.
- Überwachung dynamischer Umgebungen. tribe29 GmbH. Abgerufen am 7. Mai 2019.
- Ansible integration with Checkmk. 1. Mai 2019, abgerufen am 8. Mai 2019 (englisch).
- Salt integration with Checkmk. 2. Mai 2019, abgerufen am 9. Mai 2019 (englisch).
- Checkmk weltweit bei Faurecia. 23. Oktober 2018, abgerufen am 23. Oktober 2018.
- EDEKA Vortrag. 12. Mai 2017, abgerufen am 12. Mai 2017.
- Heike Jurzik, Marcel Arentz: vSphere-Monitoring mit Checkmk. Linux-Magazin, 1. Juli 2019, abgerufen am 2. Juli 2019.