Liste aller "roten" Systeme automatisch auslesen

Hallo

für die Ankopplung eines vorhandenen Business Process Monitorings muss ich eine Schnittstelle basteln. Das System benötigt pro fehlerhaften System eine Datei die den Hostnamen und eine Textbeschreibung des Fehlers, sowie die Kritikalität (Warnung, Fehler, Wartung) enthält. Ich hatte schon vor langer Zeit ein C-Programm gebaut, das eine CSV Datei von unserem alten Monitoring System liest und diesen Haufen Dateien erzeugt und auch wieder löscht wenn der Fehler behoben ist.

Ich müsste also periodisch, ca. alle 5 Minuten, eine Liste aller Server aus dem CheckMK ziehen, die irgendwelche roten oder gelben oder auf Wartung stehende Checks enthalten. Am besten noch mit der Liste der Checknamen oder Fehlerbeschreibung. Ich brauche nur eine Zeile pro Server, unabhängig wie viele Checks rot sind. Wie mache ich sowas?

Erster Ansatz wäre wohl, sich über die Services Search eine passende Tabelle zusammenzustellen und diese als CSV zu speichern. Der Speichern-Link ist dann recht länglich. Kann man sich den einfach rauskopieren und dann periodisch mit wget runterladen?

Einfach so geht es anscheinend nicht. Wget bekommt damit nicht die CSV geliefert, sondern eine Script-Datei (s.u.). Liegt vermutlich, daran, dass es sich ja nicht am CheckMK anmelden kann.

Alternativ könnte natürlich auch auf dem CheckMK Server das Script laufen und die Liste ggfs. nicht via URL sondern mit irgendwelchen CheckMK Commands erzeugen.

Oder vielleicht hat ja noch jemand eine bessere Idee. Ich hatte es schon mal über einen Alarmhandler gemacht, war aber unzuverlässig, da es vorkam dass eine “Wieder OK” Meldung verloren ging und damit der Alarm nie wieder zurückgenommen wurde.

<!--
var focus_obj = document.login._username;
if (focus_obj) {
    focus_obj.focus();
    if (focus_obj.select)
        focus_obj.select();
}
// -->

</script>
<script type="text/javascript">
cmk.visibility_detection.initialize();
</script>
</body></html>

Schau dir dazu mal den äußerst performanten Livestatus an. Dieser bietet auch die Möglichkeit die Daten in verscheidensten Formaten auszugeben.

EDIT:
Diesen kannst du auch remote aufrufen oder auch einen Service (xinetd) bereitstellen, der exakt die Daten liefert, die du brauchst. Bei mehreren Sites arbeitet checkmk auch inter zwischen den Sites mit dieser Technik.

Hallo,
warum rufst du nicht die Views für Host und Service Probleme via WebAPI auf und hängst einfach ein “&output_format=json” oder “&output_format=csv” an.
Sollte wie folgt aussehen (Beispiel Host Problems):
http://myhost/mysite/check_mk/view.py?view_name=hostproblems&output_format=json

Viele Grüße, Christian

Hm, ja. WebAPI. Hab ich von gehört. :slight_smile:
Noch nie benutzt. Muss ich mir mal die Doku anschauen. Auf die Idee bin ich nicht gekommen. Cool wäre es, wenn man sie die Tabelle irgendwie in der GUI zusammenklicken könnte und dann irgendwie den WebAPI Befehl herausbekommt um genau die Spalten zu bekommen die man selektiert hat.

Habe es grad probiert mit

wget --no-check-certificate -O blah.txt http://checkmk/hamburgsys/check_mk/view.py?view_name=hostproblems

Und er liefert als Ergebnis wieder dieses Login Script von oben. Irgendwie muss ich mich also an der WebAPI wohl anmelden.

Die Lifestatus API hört sich aber auch interessant an. Das schau ich mir am Wochenende mal genauer an.

1 Like

Du kannst die einen Automation User mit secret anlegen, die Credentials kannst du in der Form ?user=<username>&secret=<secret> beim Aufruf mitgeben.

Hallo @terdmann,

die Multisite-API ist momentan nur in der “veralteten” Dokumentation beschrieben: https://checkmk.de/cms_legacy_multisite_automation.html