Aktive Komponente in inventarisierten Checks?

Hallo zusammen,

folgende Situation: Ich habe Nameserver, die mit dem Linux-Agent überwacht werden. Über ein Agent-Plugin ist es kein Problem, eine Liste der Zonen zu bekommen, für die der Nameserver als Master konfiguriert ist.

Nun würde ich gerne für jede dieser Domains einen Check haben, der überprüft, ob die Zone korrekt auf die Slaves repliziert wurde (also ob die Serial im SOA mit der des Masters übereinstimmt).

Jetzt stellt sich mir die Frage, wo ich diese Überprüfung unterbringe. Sie hat eigentlich nichts im Agent-Plugin zu tun, da der Nameserver diese Überprüfung ja nicht unbedingt selbst vornehmen soll. Aber die Check-Funktion im Python-Plugin für CMK sollte ja eigentlich keine sonderlich aufwändigen Checks selbst durchführen, damit sie nicht das Timeout sprengt.

Am sinnvollsten wäre es ja eigentlich, wenn jede Zone ihren eigenen aktiven Check bekäme. Aber von so einem Mechanismus habe ich bisher nichts gelesen.

(genauso könnte man natürlich z.B. die Liste der vHosts im Webserver via Agent auslesen und für jeden vHost einen HTTP-Check haben wollen)

Hi @jplitza,

würde sagen, das könnte mit einem Special Agent klappen: Datenquellenprogramme - Geräte ohne Betriebssystemzugriff überwachen also so wie API Calls gegen VMWare oder NetApp in einem special Agent laufen, könntest du dir einen kleinen special Agent schreiben, der erst die Zonen erkennt und dann die aktiven Checks durchführt und mehrere Ergebnisse z .B. als mrpe/local Check zurück gibt, oder du baust hier komplett eigene Plugins in den Special agent :).

Gerd

Hi,

aktive checks kannst du mittels MRPE auf den Zielsystem ausführen. Sie sollten dafür eine Nagios konformen Ausgabe haben.

VG, Christian

Hallo Christian,

danke für deine Antwort! Da ich ja für jede Zone einen eigenen Service haben möchte, würde das bedeuten, die mrpe.cfg zu generieren (via Cronjob o.Ä.). Da dann aber auch der Nameserver die Checks ausführt (das soll ja eigentlich der Monitoring-Server tun) kann ich das ja auch einfach im Agent-Plugin selbst machen.

Hallo Gerd,

danke für deine Antwort! Ein Special Agent würde immerhin außerhalb des “normalen” Parsing der Agent-Daten laufen, hätte dafür aber auch keinen Zugriff auf die Daten vom normalen Agent. Das heißt ich müsste irgendwie anders an die Zonendaten kommen.

Außerdem müsste ich immer noch die (potentiell vielen) Zonen-Checks im selben Prozess ausführen und würde so Gefahr laufen, den gesamten Check_MK-Service ins Timeout laufen zu lassen. Angenommen ich habe 1000 Zonen auf dem Nameserver, die jeweils noch 2 Slaves haben, dann müsste ich 3000 DNS-Anfragen stellen. Wenn ich das sequentiell tue darf jede Anfrage nur ~10ms dauern, damit ich den Check_MK-Service nicht länger als 30 Sekunden laufen lasse. Das scheint mir ambitioniert.

Vielleicht muss ich einfach den Code der die DNS-Anfragen macht parallelisieren und sich selbst nach 10 Sekunden töten lassen.

Puh…ja 3000 abfragen sind heftig… vllt ist dann doch eine ungewöhnlichere Struktur notwendig.
Also irgendwie die 3000 Zonen vom DNS Server auslesen und auf Server 2 auslesen
Dort dann per Cronjob schön verteilt die 3000 Abfragen laufen lassen und nach /var/lib/check_mk/spool/ schreiben lassen. Linux+Windows agent: allow spooling plugin outputs via files ← sehr altes Werk aber funktioniert hervorragend :slight_smile: