Order of plugins

2.2.0p23
Rocky Linux 9

Ich habe folgende Situation:

  • Ein internet-facing Host A mit einer public ic
  • Ein privater Host B mit einer private ip (10.23.xx)

Damit ich Host B auch überwachen kann, habe ich auf Host A ein einfaches plugin geschrieben:

for host in "${!hosts[@]}"; do
    echo -e "<<<<$host>>>>\n$(nc --recv-only -w $timeout ${hosts[$host]} 6556)"
done

Das funktioniert gut, jedoch habe ich ein Problem mit der Reihenfolge der Plugins. Auf dem Host A gibt es ein weiteres plugin (yum), das alle 3 Minuten aufgerufen wird.

Nun passiert folgendes beim Aufruf von cmk-agent-ctl dump

  1. Der Agent von Host A gibt seine Infos preis
  2. Der Agent von Host A ruft mein Plugin auf und gibt somit die Infos von Host B
  3. Der Agent von Host A hängt die Infos des yum-plugins an

Nun sieht es jedoch so aus, dass die Infos von 3) zum Host B gehören, anstatt zum Host A.

Kann irgendwie die Reihenfolge der Plugins angepasst werden, so dass das yum-plugin aufgerufen wird bevor mein Plugin zum Zug kommt?

Oder bin ich generell auf dem Holzweg und gibt es einfachere Arten den Host B zu überwachen?

Am Ende der Host Piggyback Sektion fehlt noch das abschliessende ’ <<<<>>>>'. Damit wird Checkmk mitgeteilt das der nachfolgende Output nicht zu Host B gehört:

for host in "${!hosts[@]}"; do
    echo "<<<<$host>>>>"
    echo "$(nc --recv-only -w $timeout ${hosts[$host]} 6556)"
    echo "<<<<>>>>"
done

Die Reihenfolge, in welcher die Plugins ausgeführt werden, ergibt sich durch die alphabetische Reihenfolge der Filenamen. Wenn Du Dein Plugin z.B. “zzzz_remote_host” nennst wird es höchstwahrscheinlich als letztes ausgeführt.

6 Likes