Konnte man bisher den Zabbix Client eines Servers von einem anderen Rechner, der in der Konfiguration freigegeben war, mit einem einfachen
devil@hell$ echo universalclustercheck | nc 192.168.1.1 10050
abfragen, um sie die aktuelle Gewichtung anzeigen zu lassen, bekam man als Antwort z.B.
devil@hell$ ZBXD100
zurück, ab Zabbix4 bekommt man mit diesem einfachen Test nix mehr zurück, ein wenig Recherche und die Ursache war schnell gefunden.
Die Lösung, mit Zabbix4 wurde die Unterstützung für das Plaintext Protokoll komplett entfernt, daher muß bei jeder Anfrage ein korrekter Header mitgeschickt werden, wenn eine Ausgabe erwünscht ist 🙂
Ein kleiner Shell Schnipsel, kann einem dieses abnehmen:
----------schnipp----------
devil@hell$ vim /usr/local/bin/check_new_zabbix4
#!/bin/bash
#
# da der Zabbix Client ab Version 4 kein Plaintext Protokoll mehr unterstüzt
# muss nun zwingend beim ausführen von
# echo universalclustercheck | nc 192.168.1.1 10050
# ein Header mitgesendet werden.
DATA=universalclustercheck
if [ „$1“ == „“ ]
then
echo „mit check_new_zabbix4 IP aufrufen“
else
printf -v LENGTH ‚%016x‘ „${#DATA}“
PACK=““
for (( i=14; i>=0; i-=2 )); do PACK=“$PACK\\x${LENGTH:$i:2}“; done
printf „ZBXD\1$PACK%s“ „$DATA“ | nc $1 10050
fi
----------schnapp----------
legt diesen im Pfad an und ein
devil@hell$ chmod +x /usr/local/bin/check_new_zabbix4
sorgt dafür das er ausführbar ist, danach kann er wie folgt aufgerufen werden
devil@hell$ check_new_zabbix4 192.168.1.1
und wir bekommen ein
devil@hell$ ZBXD100
zurück, man kann diesen Check auch für die älteren Zabbix Clients benutzen, da auch die alten Clients eine Header Anfrage nicht verschmähen.