Active Check / Datasource wird nicht ausgeführt

Hallo liebe CheckMK Community Mitglieder!

Ich habe einen Check in Python3 geschrieben, der uns helfen soll SPF Einträge von Webseiten zu überprüfen.
Dieser Check soll direkt vom CheckMK-Server ausgeführt werden (wie die HTTPS-Checks zum Beispiel).

Der Check sollte folgendermaßen funktionieren

  • Ausführung direkt vom CheckMK Server: check_spf.py $HOSTNAME$
  • Check führt Code aus und wertet Ergebnisse aus (vereinfacht: Abfrage mit dig txt)
  • Check retourniert einen neuen Service

Leider wird der neue Service im Service-Discovery Fenster nicht gefunden.
Ich habe testweise auch schon einen ganz einfachen Check (Bash) geschrieben, welcher nichts tut als folgendes auszugeben:

<<<local>>>
0 Testcheck - Just a Test

nur um zu überprüfen ob diese Ausgabe aufscheint, tut sie jedoch auch nicht.

Beide (der echte und der Test-Check) liegen im Ordner ~/local/bin (dort liegt auch ein bereits funktionierender Check).

Wenn ich nun in CheckMK cmk -D HOSTNAME eingebe, habe ich folgende Ausgabe:

Type of agent:          
  Program: pixel-datasrc.php HOSTNAME

pixel-datasrc.php ist hier der bereits seit längerer Zeit eingerichtete, funktionierende Check.
Dieser fragt mittels CURL eine bestimmte Datei von den betroffenen Webseiten ab, wertet die darin enthaltenen Daten aus und erstellt mehrere Services.
Ich sehe jedoch keinerlei Hinweise auf den neuen Check ( check_spf.py ).

Auch mit cmk -vv -d HOSTNAME erhalte ich nur 1x den Text

Calling: pixel-datasrc.php HOSTNAME

Hier ebenso keinerlei Hinweise auf den neuen SPF-Check.

Wie beim bereits funktionierenden Check habe ich eine Individual program call instead of agent Access Regel angelegt.

Die betreffenden Hosts haben allesamt den Parameter API integrations if configured, else Checkmk agent (CheckMK hat bei uns einen eigenen Ordner für reine Websites auf deren Server wir keinen direkten Zugriff haben).
Ich habe jedoch auch schon versucht, den Parameter auf Configured API integration and CheckMK agent umzustellen, leider ohne Erfolg.

Versuche ich den Check am CheckMK Server manuell auszuführen und ihm manuell einen Hostname zu übergeben, mit dem er arbeiten soll, funktioniert dies einwandfrei.

./check_spf.py HOSTNAME

Damit erhalten ich den gewünschten Output.

Vielleicht hat hier jemand eine Idee dazu.

Weitere Informationen:

  • CheckMK 2.0.0p5 CEE auf Ubuntu 20.04.2 LTS
  • CheckMK Server liegt bei uns intern (VM)

Das Problem hier lässt sich erklären ist aber etwas “esoterischer Natur”.
Es ist möglich pro Host mehrere Special Agents auszuführen aber nur eine Regel welche mittels “Individual program call instead of agent Access” konfiguriert wurde.
Dies ist ein Überbleibsel von früher wo es nur hieß - entweder Agent oder ein Special Agent. Damals gab es noch gar nicht regulär die Option mehrere Special Agents pro Host zu haben.
Das Problem lässt sich umgehen indem du auch noch für den Special Agent eine Konfiguration erstellts in etwa so wie bei meinem Dell Powervault Agent hier.

Dann kannst du deinen Host auch auf die Option setzen “Configured API integrations, no CheckMK agent” wenn du dann alles als Special Agent.
Ein Tipp noch die Special Agents sollten/müssten sich alle im Verzeichnis “~/local/share/check_mk/agents/special/” befinden und die Namen müssen dem Schema “agent_…” entsprechen. Sonst klappt das mit der Webconfig nicht.

2 Likes

Das hatte ich mal als Vorführeffekt im checkmk-Training…

1 Like

Danke vielmals für die schnelle Lösung!
Habe die entsprechende Antwort markiert :slight_smile:

Liebe Grüße,
Pixelpoint