Die Vorteile der Kollektoren liegen auf der Hand: Weniger Belastung am überwachten Gerät und mehr Flexibilität bei der Konfiguration der Servicechecks. Doch es stellt sich auch eine neue Herausforderung.

Drawing of a 3-peer distributed monitoring configuration from op5
Distributed Monitoring (op5) with 3 peer-nodes

Wenn das Monitoring verteilt mit mehrere Peernodes aufgebaut wurde (“Distributed Monitoring”) wird es passieren, dass zuerst der eine Peernode die Daten holt und dann ein anderer den Check durchführt. Der Store bei dem den Check durchführenden Peernode ist dann schon etwas älter und der Check weigert sich folgerichtig diese veralteten Daten noch auszuwerten.


Peer2 ]# /opt/plugins/custom/check_netapp_pro.pl Head -H 10.135.1.40 ‑‑storedir /tmp/netapp_data ‑o power ‑‑max_age 60
Store file (10.135.1.40.head) is out of date! (770.0 min., --max_age is set to 60)

Löungsansätze

Folgende Ansätze bieten sich in diesen Fällen an:

  • Die Store-Datei auf ein für alle Peernode zugängliches Netzlaufwerk legen. Dies lässt sich relativ einfach über den Schalter ‑‑storedir erreichen.
  • Über einen Sync-Mechanismus die Store-Dateien auf allen Peernodes aktuell halten.

Interessant in diesem Fall sind sicherlich die Hintergründe, wie die Store Dateien geschrieben werden. Die Kollektoren (get_netapp_*.pl) lesen zunächst alle Daten vom überwachten NetApp aus, bereiten diese im Arbeitsspeicher auf und schreiben erst dann in einem Vorgang die Daten in die Store-Datei. Vor dem Schreiben wird noch versucht, einen exclusive lock via flock auf die Datei zu bekommen (wenn das vom Dateisystem unterstützt wird, was bei NFS eher nicht der Fall sein dürfte).