Linux & Co.Netzwerk

Checkmk auf der Kommandozeile – jetzt bei cli.help

Ein wenig Syntax-Hilfe zu cmk, lq und omd? Ab sofort gibt es die direkt im Terminal.

Checkmk kann man fast durchgängig im Browser nutzen, aber ab und an bietet sich die Kommandozeile doch an. So laufen Updates in der Regel über das omd-Tool, für Checks und Konfiguration steht cmk zur Verfügung und die mächtige Livestatus Query Language könnt Ihr über lq nutzen. Aber gerade weil man das eher selten braucht, sitzen die Befehle oft nicht super sicher in den Fingern. Über cli.help bekommt Ihr die nötige Unterstützung direkt im Terminal, wo die Hilfe auch gebraucht wird.

Über cli.help

Falls Ihr es noch nicht kennt: cli.help ist unsere hauseigene Linux-Hilfe für Kommandozeilenprogramme. Eine ausführliche Beschreibung findet Ihr im Hauptartikel, weitere Infos auf der Github-Seite oder natürlich im Terminal – der Aufruf läuft einfach über curl, mittlerweile für über 100 Tools:

curl cli.help
curl cli.help/hilfe
curl cli.help/befehle
curl cli.help/echo
curl cli.help/git

Und so weiter …

Und nun gesellt sich auch Checkmk zu den Tools, abzurufen über – Ihr ahnt es wohl:

curl cli.help/checkmk
curl cli.help/lq
curl cli.help/cmk
curl cli.help/omd

Alle Aufrufe holen ein und dieselbe Seite: cli.help soll möglichst einfach sein, daher gibt es für viele Hilfeseiten Duplikate – damit man sich zum Beispiel nicht merken muss, ob es nun „cli.help/hilfe“ oder „cli.help/help“ heißt. Logo: Beides funktioniert.

Und nochmal als Erinnerung: Ihr könnt gerne eigene Hilfeseiten für Programm oder persönliche Spickzettel in cli.help hinterlegen! Wie genau, seht Ihr im cli.help-Artikel, die Vorlage liegt bei Github.

Checkmk in cli.help

Die Möglichkeiten, Checkmk aus dem Terminal zu bedienen sind vielfältig, freundlich ausgedrückt. Die Hilfedatei ist daher natürlich nur ein Auszug, um bei typischen Problemen oder der Syntax schnell Hilfe zu bekommen, ohne extra den Browser bemühen zu müssen. Hilfe gibt es zu drei komplett unterschiedlichen Bereichen/Tools:

omd

Die Open Monitoring Distribution ist ein Rahmenwerk zur Verwaltung von Monitoring-Lösungen, speziell für Checkmk – schließlich stammt es wie Checkmk von Mathias Kettner und ist integraler Bestandteil von Checkmk. Über das omd-Tool lassen sich Instanzen erzeugen, aktualisieren und konfigurieren, Checkmk-Versionen installieren und verwalten, Status abrufen und so weiter.

In der cli.help-Hilfe findet Ihr zum Beispiel einen Workflow, wie Ihr eine neue Version installiert und eine Instanz aktualisiert, samt temporärem Backup. Der Update-Mechanismus von Checkmk ist nämlich extrem cool: Ihr könnt mehrere Versionen parallel installieren und dann mit omd entscheiden, welche Instanz mit welcher Version läuft!

cmk

Das cmk-Tool hat mehrere Funktionen, etwa das Ausführen von Checks auf Hosts, das Abholen der Agentenausgabe sowie die Konfiguration Eures Monitorings als Alternative zur grafischen WATO-Weboberfläche. Im Alltag ist das zum Beispiel nützlich, um den Agenten zu testen oder mal eben einen Check auszuführen.

lq

Das aufwändigste Tool ist lq, das Frontend der Livestatus Query Language, einer an HTML angelehnten Abfragesprache für Informationen im Monitoring. Wenn Ihr in der WATO-Weboberfläche beispielsweise Tabellen mit Hosts und Services seht oder auch nur die Tactical Overview – alles Daten über die LQL. Wenn Ihr aber nur sehr spezielle Wünsche habt und beispielsweise die durchschnittlichen Ausführungszeiten von 20 bestimmten Services auf 15 verschiedenen Hosts benötigt, und zwar als simple Textausgabe, dann kommt eben lq ins Spiel – im Grunde „einfache“ Abfragen im Stil von Datenbankabfragen mit SQL.

Die wohl wichtigsten Punkte: Zunächst interessiert vor allem, welche Tabellen es denn überhaupt gibt. Und welche „Auswertungen“ (HEADER) lassen sich auf die Tabellen loslassen? Wie sieht die Syntax für Operatoren (gleich, größer, enthält etc.) aus? In der Hilfe findet Ihr die passenden Befehle zum Abfragen dieser Informationen sowie schlichte Tabellen mit Header- und Tabellennamen und Operatoren. Warum man das braucht? Nun, hier mal die Aufrufe, um erst alle verfügbaren Tabellen und dann alle in Tabelle hosts verfügbaren Spalten aufzulisten:

lq "GET columns\nColumns: table"
lq "GET columns\nColumns: name\nFilter: table = hosts"

Wirklich intuitiv ist das nicht, gell?! ;) Tipp zum Verständnis: Die Tabelle „columns“ enthält Informationen über alle Tabellen – der Header „Columns“ beschränkt dann die Ausgabe auf die Spalte table, hier also die Namen. Achtet auf die Groß- beziehungsweise Kleinschreibung von columns/Columns.

Natürlich gibt es auch alltäglichere, konkrete Beispielabfragen in der Hilfe, etwa zum Abrufen aller Hostnamen.

checkmk als cli
Die Werte aus der Tactical Overview könnt Ihr via lq nachstellen.

Die Inhalte

Wie üblich bei den cli.help-Updates, hier die Inhalte der Hilfedatei lieblos in den Artikel kopiert:

Vorab zum Verständnis: Folgende Prompts kommen hier vor – sofern hilfreich; zudem Hilfe für drei unterschiedliche Tools:

root@server:# --> Root auf dem Checkmk-Server
root@host:# --> Root auf einem Host im Monitoring
OMD[meineinstanz]:~$# --> OMD-Nutzer für Instanz meineinstanz auf Checkmk-Server
omd --> Verwaltung von Checkmk-Versionen und -Instanzen
cmk --> Konfiguration, Ausführen von Checks, Agentenausgaben etc.
lq --> Livestatus Query: Abfragesprache für Hosts und Services

Instanzbenutzer werden:

root@server: su - meineinstanz
OMD[meineinstanz]:~$

OMD-Installation samt Instanzen und Versionen visualisieren:

tree -L 2 /omd

Installation und omd

Typischer Workflow beim Aktualisieren: Checkmk installieren, Instanz einrichten, neue Checkmk-Version installieren, Instanz backuppen, aktualisieren und starten, Backup löschen, nicht benötigte Versionen deinstallieren:

root@server:# gdebi /home/foobar/Downloads/checkmk_XXX.deb
root@server:# omd stop meineinstanz
root@server:# omd cp meineinstanz backup123
root@server:# omd config backup123 --> bei Bedarf Autostart deaktivieren
root@server:# omd update meineinstanz
root@server:# omd start meineinstanz
root@server:# omd rm backup123
root@server:# omd cleanup

Checkmk-Agenten auf einem Host installieren und seine Daten ausgeben lassen:

root@host# cd /usr/local/bin
root@host# wget https://mein-checkmk-server/meineinstanz/check_mk/agents/check_mk_agent.linux
root@host# mv check_mk_agent.linux check_mk_agent
root@host# chmod 755 check_mk_agent
check_mk_agent

cmk

Checks des Hosts foobar1 ausführen, Ergebnisse ausgeben (v), nicht an das Monitoring übermitteln (Testlauf mit n):

OMD[meineinstanz]:~$ cmk -v -n foobar1

Agentenausgabe von Host foobar1 holen/ausgeben:

OMD[meineinstanz]:~$ cmk -d foobar1

Alle Hosts der Instanz auflisten:

OMD[meineinstanz]:~$ cmk -l

Agentenausgabe von Host foobar1 holen/ausgeben:

OMD[meineinstanz]:~$ cmk -d foobar1

Agentenausgabe von Host foobar1 holen/ausgeben – Alternativen zum Testen:

OMD[meineinstanz]:~$ telnet foobar1 6556
OMD[meineinstanz]:~$ nc foobar1 6556

Nützliche Optionen für mehr Infos:

OMD[meineinstanz]:~$ cmk
OMD[meineinstanz]:~$ cmk --browse-man
OMD[meineinstanz]:~$ cmk --list-checks
OMD[meineinstanz]:~$ cmk --list-hosts

Livestatus Query Language

Ab hier: Livestatus Query Language (lq) – aber wirklich nur die Basics. Zunächst mal ein stilisierter Aufruf, damit Ihr die Begriffe einmal seht – als Einzeiler und als Mehrzeiler:

lq "GET TABELLE\nHEADER: ARGUMENT OPERATOR\nHEADER: ARGUMENT OPERATOR"
lq 
GET TABELLE
HEADER: ARGUMENT OPERATOR
HEADER: ARGUMENT OPERATOR

Listen mit Tabellen, Headern und Operatoren findet Ihr unten.

Auflisten aller verfügbaren Tabellen (in Tabelle columns):

OMD[meineinstanz]:~$ lq "GET columns\nColumns: table" | sort -u

Auflisten aller Spalten der Tabelle hosts:

OMD[meineinstanz]:~$ lq "GET columns\nColumns: name\nFilter: table = hosts"

Auflisten aller Zeilen der Tabelle hosts, beschränkt auf die Spalte name (sprich: Hostnamen):

OMD[meineinstanz]:~$ lq "GET hosts\nColumns: name"

Auflisten aller Zeilen der Tabelle hosts, beschränkt auf die Spalte name und Einträge, die „test“ enthalten (~)(sprich: Hostnamen wie test_server, 123_test etc.):

OMD[meineinstanz]:~$ lq "GET hosts\nColumns: name\nFilter: name ~ test"

Zeilen für die Hosts foobar1 und foobar2 der Spalte address aus der Tabelle hosts auflisten (sprich: IPs der Hosts – 2 Filter werden hier über „Or: 2“ mit ODER verknüpft):

OMD[meineinstanz]:~$ lq "GET hosts\nColumns: name address\nFilter: name = foobar1\nFilter: name = foobar2\nOr: 2"

Alle Hosts mit Status DOWN auflisten:

OMD[meineinstanz]:~$ lq GET hosts\nColumns name\nFilter: state = 1"

Anzahl der Hosts mit Status DOWN ausgeben:

OMD[meineinstanz]:~$ lq "GET hosts\nStats: state = 1"

Durchschnittliche und maximale Ausführungszeit der Hosts ausgeben:

OMD[meineinstanz]:~$ lq "GET hosts\nStats: avg execution_time\nStats: max execution_time"

Dem Host foobar1 einen persistenten (1) Kommentar „Hallo Welt“ von Autor „mirco“ hinzufügen (samt Zeitstempel):

OMD[meineinstanz]:~$ lq "COMMAND [$(date +%s)] ADD_HOST_COMMENT;foobar1;1;mirco;Hallo Welt"

Liste aller mit GET abrufbaren Tabellen:

hosts
services
hostgroups
servicegroups
contactgroups
servicesbygroup
servicesbyhostgroup
hostsbygroup
contacts
commands
timeperiods
downtimes
comments
log
status
columns
statehist
eventconsoleevents
eventconsolehistory
eventconsolestatus
eventconsolerule

Liste aller Header:

Columns
Filter
Or
And
Negate
Separators
OutputFormat
Stats
StatsOr
StatsAnd
StatsNegate
Limit
Timelimit
ColumnHeaders
AuthUser
WaitObject
WaitCondition
WaitConditionOr
WaitConditionAnd
WaitConditionNegate
WaitTrigger
WaitTimeout
Localtime
ResponseHeader
KeepAlive

Die wichtigsten Operatoren:

Allgemein: = < > >= <= ~ ~~ =~
Listenfelder: = > >= < <= ~ ~~
Statistik: sum min max avg std suminv avginv

Wir haben noch viel mehr zu Checkmk und zu CLI-Tools.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.