Checkmk
to checkmk.com

1. Einleitung

Checkmk unterstützt das Konzept der Labels, von denen Sie beliebig viele einem Host zuweisen können. Dabei verhalten sich Labels und Host-Merkmale (host tags) recht ähnlich:

  • Labels werden wie Merkmale an Hosts „gehängt“.

  • Labels können wie Merkmale als Bedingungen in Regeln verwendet werden.

  • Labels sind ähnlich wie Merkmale nach dem Prinzip Schlüssel:Wert aufgebaut.

Warum gibt es hier also ein neues Konzept? Nun — die IT-Welt ändert sich und wird viel dynamischer. Cloud- und Containersysteme wie Amazon Web Services (AWS), Microsoft Azure und Kubernetes erzeugen und löschen selbständig Objekte, die in Checkmk Hosts entsprechen. In diesen Technologien spielen Labels und Merkmale eine große Rolle, denn sie stellen die Verbindung zwischen den überwachten Objekten und ihrer Bedeutung her. Die Host-Namen hingegen werden zunehmend zufällig und nichtssagend.

Checkmk kann mit der dynamischen Host-Konfiguration solche dynamischen Hosts automatisch anlegen und bekommt dabei auch die Information über die dort bereits vorhandenen Labels/Merkmale. Diese können Sie dann für Regelbedingungen, Suchen, Auswertungen, Dashboards und andere Aufgaben verwenden.

Natürlich stellt sich die Frage, warum wir solche dynamischen Labels nicht einfach auf das vorhandene Konzept der Host-Merkmale abbilden. Und in der Tat ist das auch erst einmal sehr naheliegend. Allerdings haben Host-Merkmale eine sehr wichtige Eigenschaft, die das sehr schwierig und kompliziert machen würde: Welche Merkmalsgruppen und Merkmale es gibt, legen Sie bei Checkmk starr fest. Alles ist wohldefiniert. Jeder Host hat aus jeder Gruppe genau ein Merkmal. Alle können sich darauf verlassen. Tippfehler in der Schreibweise von Merkmalen können nicht vorkommen, ebenso wenig Hosts, die sich nicht an das Schema halten. Denn dessen Einhaltung wird von Checkmk streng kontrolliert. Bei sehr heterogenen Umgebungen mit vielen Tausend manuell gepflegten Hosts ist das wichtig und nützlich.

Dynamische Labels von Kubernetes und Co hingegen sind quasi „Freiform“. Und selbst wenn diese einem Schema folgen, ist dieses Checkmk überhaupt nicht bekannt. Außerdem überwachen Sie vielleicht mehrere unterschiedliche Plattformen, die wiederum Labels auf sehr unterschiedliche Art einsetzen.

Deswegen wurde mit den Checkmk-Labels ein Konzept eingeführt, welches bestens auf die wachsende Dynamik passt. Und Sie können die Labels natürlich auch ohne Anbindung an Cloud-Umgebungen nutzen.

Für die Beantwortung der Frage "Wann soll man Labels nehmen und wann Host-Merkmale?" hilft vielleicht die folgende Überlegung: Labels können vorhanden sein, Host-Merkmale sind es immer. Daher eignen sich Host-Merkmale für Eigenschaften, die immer da sind (oder zumindest sein sollen) und in der Regel durch den Checkmk-Administrator für das gesamte zu überwachende System und für alle Checkmk-Benutzer vorgegeben werden. Einzelne Checkmk-Benutzer können die spezifischen Anforderungen in ihrem Verantwortungsbereich mit Labels umsetzen. Für eine überschaubare lokale Struktur können die Labels die Lücken füllen, die von der globalen Administration freigelassen wurden, und dabei ihre Vorteile ausspielen: Sie sind schnell und einfach erstellt — und auch wieder gelöscht.

Hier sind die Besonderheiten von Labels:

  • Labels müssen nirgendwo vordefiniert werden. Es gibt kein fixes Schema für Labels. Alles ist Freiform. Alles ist erlaubt.

  • Jeder Host kann beliebig viele Labels haben. Diese können manuell gepflegt sein, über Regeln definiert werden oder automatisch entstehen.

  • Labels sind nach dem Prinzip Schlüssel:Wert aufgebaut. Pro Schlüssel darf ein Host nur einen Wert haben. Also kann ein Host, der das Label foo:bar hat, nicht gleichzeitig foo:bar2 haben.

  • Anders als die Host-Merkmale dürfen sowohl der Schlüssel als auch der Wert — bis auf den Doppelpunkt — beliebige Zeichen enthalten.

  • Es gibt keine Unterscheidung zwischen ID und Titel (oder angezeigtem Namen): Der Schlüssel des Labels ist beides gleichzeitig.

Labels haben folgende Aufgaben:

  • Sie bilden eine Grundlage für Bedingungen in Konfigurationsregeln, z.B. „Alle Hosts mit dem Label os:windows sollen so oder so oder sehr genau überwacht werden.“

  • Sie können sehr einfach zusätzliche Informationen oder Anmerkungen zu einem Host speichern (z.B. location:RZ 74/123/xyz) und diese z.B. in Tabellenansichten anzeigen lassen.

2. Labels erstellen

2.1. Explizite Labels

Einem Host können auf verschiedenen Wegen Labels zugeordnet werden.

Der erste davon ist einfach: Auf der Seite mit den Host-Eigenschaften, die angezeigt wird, wenn Sie im Setup einen Host erstellen oder bearbeiten, können Sie diesem beliebig viele Labels verpassen:

Dialog mit Eigenschaften eines Hosts zum Definieren von Labels.

Aktivieren Sie Labels mit der Checkbox, klicken Sie dann in das Feld Add some label, geben Sie die Label-Definition in der Form Schlüssel:Wert ein und schließen diese mit Enter ab.

Ein bestehendes Label können Sie durch einen Klick in dessen Text editieren oder mit dem kleinen Kreuz wieder entfernen.

Hinweis: Sowohl der Schlüssel als auch der Wert eines Labels dürfen jedes beliebige Zeichen enthalten — außer dem Doppelpunkt! Allerdings sollten Sie sich genau überlegen, wie Sie es mit der Groß-/Kleinschreibung halten. Denn wenn Sie später Bedingungen über Labels definieren, dann muss die Schreibweise sowohl beim Schlüssel als auch beim Wert strikt beachtet werden.

Natürlich können Labels auch von einem Ordner vererbt werden. Wie andere Attribute auch, können Labels in Unterordnern oder beim Host dann nach Bedarf wieder überschrieben werden — und zwar pro Label. Wird im Ordner z.B. das Label location:munich gesetzt, so wird dies an alle Hosts in diesem Ordner vererbt, welche nicht selbst das Label location definiert haben. Andere Labels, die ein Hosts eventuell hat, bleiben dadurch unberührt.

Beim Host oder beim Ordner explizit definierte Labels werden in der Liste der Hosts violett dargestellt:

Listeneintrag eines Hosts mit den zugewiesenen expliziten Labels.

2.2. Labels über Regeln erzeugen

Wie in Checkmk üblich, können Attribute auch per Regeln den Hosts und Services zugeordnet werden. Damit werden Sie unabhängig von der Ordnerstruktur. Dies gilt auch für die Labels. Dazu gibt es den Regelsatz Host labels, den Sie schnell über die Suche im Setup-Menü finden können.

Folgende Regel fügt allen Hosts im Ordner Bavaria mit dem Host-Merkmal Real Hardware das Label hw:real hinzu:

Regel für die Festlegung von Labels für Hosts.

Vielleicht fällt Ihnen auf, dass bei den Bedingungen zu dieser Regel Labels nicht verwendet werden können. Das ist kein Fehler, sondern Absicht und vermeidet rekursive Abhängigkeiten und andere Anomalien.

Über Regeln hinzugefügte Labels werden rot dargestellt, tauchen allerdings nicht in der Host-Liste im Setup auf, sondern nur in der Statusansicht des Hosts.

2.3. Automatisch erzeugte Labels

Die dritte Art, wie Labels entstehen können, ist vollautomatisch. Verschiedene Datenquellen, wie z.B. die Spezialagenten für das Überwachen von Cloud- und Containersystemen sowie das Agentenplugin der Hardware-/Softwareinventur erzeugen automatisch Labels.

Das Schöne: Sie müssen gar nichts konfigurieren. Sobald diese Datenquellen aktiv sind, entstehen die entsprechenden Labels.

Im Abschnitt Automatisch generierte Host-Labels finden Sie eine Übersicht der Labels, die Checkmk automatisch generiert.

2.4. Label per Agentenplugin setzen

Ein einfacher Weg, Label direkt zu beeinflussen, ist die Ergänzung eines Agentenplugins, das analog zu lokalen Checks eine Sektion labels erzeugt. Sie können auf diese Weise Labels detaillierter als alleine durch Auswertung der HW-/SW-Inventur vergeben – beispielsweise nach Nuancen der verbauten Hardware (wie CPU-Features) oder tatsächlich laufenden Prozessen (statt nur installierter Software).

Die Label-Ausgabe ist hierbei als Python Dictionary zu formatieren, wie im folgenden Beispiel:

<<<labels:sep(0)>>>
{"cpu/vendor": "zilog"}

Vermeiden Sie Konflikte mit den von Checkmk selbst und anderen Plugins automatisch vergebenen Labels, da keine bestimmte Reihenfolge der Auswertung garantiert werden kann.

2.5. Im Discovery Check gefundene Labels aufnehmen

Falls Sie den Discovery Check aktiviert haben — und das ist bei neuen Installationen per Default der Fall — wird dieser Sie warnen, wenn neue Host-Labels gefunden wurden, welche noch nicht in die Host-Eigenschaften im Setup aufgenommen wurden. Das sieht dann z.B. so aus:

Service-Liste mit dem Service 'Check_MK Discovery'.

Sie haben zwei Möglichkeiten, auf diese Warnung zu reagieren. Die erste ist das Aufnehmen der neuen Labels, indem Sie im Setup die Service-Konfiguration des Hosts aufrufen und mit dem Menüeintrag Hosts > Update host labels die Konfiguration der Labels aktualisieren. Der Discovery Check wird bei der nächsten Ausführung (in bis zu zwei Stunden) dann wieder OK, selbst wenn Sie die Änderungen noch nicht aktiviert haben. Wenn Sie nicht so lange warten wollen, können Sie den Service auch sofort manuell aktualisieren durch Auswahl von Reschedule check im Aktionsmenü des Services.

Wenn das viele Hosts auf einmal betrifft, werden Sie sicher nicht für jeden einzelnen die Service-Konfiguration besuchen wollen. Führen Sie hier am besten die Bulk-Aktion zur Service-Erkennung durch (Discover services) und wählen Sie als Modus Only discover new host labels — oder alternativ Add unmonitored services and new host labels, wenn Sie bei der Gelegenheit auch gleich neue Services aufnehmen wollen.

Die zweite Art, den Discovery Check grün zu bekommen, ist, dass Sie diesen so umkonfigurieren, dass er neue Labels nicht mehr anmahnt. Gehen Sie dazu in den Regelsatz Periodic service discovery und editieren Sie die bestehende Regel. Dort finden Sie die Option Severity of new host labels:

Regel für die regelmäßige Service-Erkennung.

Diese ist per Default auf Warning eingestellt. Wählen Sie hier OK - do not alert, just display und der Check wird Ruhe geben.

Per Discovery Check gefundene Labels werden orange dargestellt.

2.6. Reihenfolge der Labelzuordnung

Theoretisch kann es sein, dass das gleiche Label in mehreren Quellen gleichzeitig und mit unterschiedlichen Werten definiert wird. Deswegen gibt es folgende Reihenfolge des Vorrangs:

  1. Zuerst gelten die expliziten Labels, also solche, die Sie im Setup direkt dem Host oder Ordner zuordnen.

  2. An zweiter Stelle gelten Labels, die per Regeln erzeugt werden.

  3. An letzter Stelle stehen die automatisch erzeugten Labels.

Durch diese Vorrangregeln haben Sie stets die letztgültige Kontrolle über die Labels.

3. Labels als Bedingungen in Regeln

3.1. Bedingungen in Regeln

Eine wichtige Funktion von Labels ist die gleiche wie bei Host-Merkmalen: Nämlich ihre Verwendung als Bedingung in Regeln. Das ist vor allem bei automatisch erzeugten Labels interessant, weil Sie so ihr Monitoring vollautomatisch aufgrund von Informationen aus AWS, Azure, Kubernetes und Co anpassen können.

Folgendes Beispiel zeigt eine Regel, deren Bedingung so definiert ist, dass sie genau dann gilt, wenn der Host das Label state:bavaria, aber nicht das Label environment:test hat:

Dialog zur Festlegung der Bedingungen mit Labels.

Sie können in einer Regel sowohl Labels als auch Host-Merkmale verwenden. Diese werden automatisch UND verknüpft. Die Regel greift also nur dann, wenn beide Bedingungen gleichzeitig erfüllt sind.

Beachten Sie, dass bei Labels die exakte Schreibweise wichtig ist. Da Labels ohne Vorgaben festgelegt werden können, kann Checkmk Vertipper nicht erkennen. Immerhin: Beim Eintippen eines Labels schlägt Checkmk bereits existierende Labels vor, sofern sie zu ihrer bisherigen Eingabe passen. Bei den Vorschlägen wird nicht nach Host- und Service-Labels unterschieden: es werden alle passenden Labels angeboten.

Falls das im Einzelfall Schwierigkeiten bereitet, ist es eventuell günstiger, wenn Sie mit Host-Merkmalen arbeiten - denn diese arbeiten mit definierten Werten anstelle von freier Texteingabe.

3.2. Bedingungen in Benachrichtigungsregeln

Auch in Benachrichtigungsregeln können Sie Labels als Bedingungen nutzen. Das funktioniert analog zu den anderen verfügbaren Bedingungen, so dass Sie sich hier nicht umgewöhnen müssen. Wählen Sie Match host labels und geben Sie einfach ein, welche Labels ein Host oder Service haben muss, damit durch die Regel eine Benachrichtigung ausgelöst wird. Auch hier werden mehrere Labels durch die UND-Verknüpfung verbunden.

4. Labels in Tabellenansichten

Bisher haben wir fast ausschließlich über die Labels im Setup (oder der Konfigurationsumgebung) gesprochen. Auch in der Monitoring-Umgebung sind die Labels sichtbar, z.B. in der Statusansicht eines Hosts:

Dialog mit dem Host-Status und den zugewiesenen Labels.

Hier sehen Sie die Labels in den unterschiedlichen Farben, je nachdem, wie sie erzeugt wurden: Explizite Labels in violett, durch Regeln erzeugte in rot und per Discovery Check angelegte in gelb-ocker.

Die Farbtupfer der Label stechen nicht nur optisch aus der Ansicht hervor, sie sind dazu auch noch praktisch, weil anklickbar und führen Sie dann zu einer Suche nach allen Hosts mit diesem Label weiter:

Filterleiste mit Filter zur Suche nach einem Label.

Sie können die Suche durch Hinzufügen weiterer Labels verfeinern (die dann wieder UND-verknüpft werden) und die Suche nach Labels natürlich auch mit den anderen verfügbaren Suchparametern kombinieren.

5. Service-Labels

Auch Services können Labels haben. Diese sind ähnlich zu den Host-Labels, allerdings mit ein paar kleinen Unterschieden:

  • Sie können Service-Labels nicht explizit vergeben. Diese können nur durch Regeln (Service labels) oder automatisch entstehen.

  • Auch mit Service-Labels können Sie Bedingungen formulieren. In einem Regelsatz werden Ihnen die Service-Labels nur dann zur Eingabe angeboten, wenn die Regel auf einen Service matchen kann.

6. Weitere Informationen

6.1. Automatisch generierte Host-Labels

Schlüssel Werte

cmk/check_mk_server

yes für alle Checkmk-Server

cmk/device_type

SNMP-übertragene Gerätebezeichnung, z.B. appliance, fcswitch, firewall, printer, router, sensor, switch, ups, wlc

cmk/docker_image

Docker-Image, z.B. docker.io/library/nginx:latest

cmk/docker_image_name

Name des Docker-Images, z.B. nginx

cmk/docker_image_version

Version des Docker-Images, z.B. latest

cmk/docker_object

container, wenn der Host ein Docker-Container ist; node, wenn der Host ein Docker-Knoten ist

cmk/kubernetes/annotation/{Schlüssel}:{Wert}

Diese Bezeichnungen werden für jede Kubernetes-Beschriftung ausgegeben, die ein gültiges Kubernetes-Label ist (über die Regel Kubernetes konfigurierbar).

cmk/kubernetes

yes, wenn der Host ein Kubernetes-Objekt ist

cmk/kubernetes/cluster

Kubernetes Cluster-Name

cmk/kubernetes/daemonset

Name des DaemonSet

cmk/kubernetes/deployment

Name des Deployments

cmk/kubernetes/namespace

Name des zugehörigen Kubernetes Namespace

cmk/kubernetes/node

Name des zugehörigen Kubernetes-Knotens. Checkmk-Hosts vom Typ Pod oder Node erhalten dieses Label.

cmk/kubernetes/object

Kubernetes Objekttyp, z.B. endpoint, wenn der Host ein Kubernetes Endpunktobjekt ist

cmk/kubernetes/statefulset

Name des StatefulSet

cmk/os_family

Betriebssystem, vom Agenten als AgentOS gemeldet (z.B. windows oder linux )

cmk/vsphere_object

vm, wenn der Host ein VMware vCenter ist; server, wenn der Host ein ESXi Host-System ist

6.2. Check-Plugins, in denen Labels registriert werden

Die Kubernetes-bezogenen Schlüssel cmk/kubernetes und cmk/kubernetes/object können Sie alternativ auch über die folgenden Plugins füllen, wenn mit dem Checkmk-Spezialagenten für Prometheus die sogenannten „kube-state-metrics“ abgeholt werden:

  • k8s_daemon_pods

  • k8s_ingress_infos

  • k8s_job_info

  • k8s_nodes

  • k8s_pod_container

  • k8s_replicas

  • k8s_service_port

  • k8s_stateful_set_replicas

Auf dieser Seite