[SOLVED] Ceph Module Zabbix "failed to send data..."

Ingo S

Renowned Member
Oct 16, 2016
347
41
68
41
Hallo zusammen

Wir haben Zabbix als Monitoring im Einsatz und seit einiger Zeit gibt es bei Ceph ein Modul das Daten an den Zabbix Server senden kann.
Ich habe die Konfig von dem Zabbix Kram mehrfach überprüft und bin ziemlich sicher das da alles okay ist. Dennoch sagt mir das Modul, das es keine Daten an Zabbix senden kann.

Folgende Vermutung:
Ceph hat ein eigenes Netz "192.168.15.0/24" Das sonst keine Verbindung zu unseren anderen Netzen hat. Ist es möglich, das das Ceph Modul versucht, den Zabbix Server über das Ceph Interface zu erreichen, obwohl der Standard Gateway ja in einem anderen Netz liegt?

Normalerweise würde ich ein Gateway eintragen, 192.168.15.254, damit unsere Firewall den Kram dann in das richtige Netz routet. Allerdings gibt es ja bereits ein default Gateway für diese Netze.
Irgendwie krieg ich gerade meinen Kopf nicht drum rum, wie ich das routen muss damit das beim Zabbix Server ankommt.

PS: viel default GW ist der Zabbix Server auf den üblichen Ports ganz normal zu erreichen. Ich vermute das Ceph wirklich so stur ist und die Kommunikation mit Zabbix unbedingt auf dem Ceph Interface raus jagen will obwohl es das über das default GW vial vmbr0 machen müsste.

Ideen?
 
PS: viel default GW ist der Zabbix Server auf den üblichen Ports ganz normal zu erreichen. Ich vermute das Ceph wirklich so stur ist und die Kommunikation mit Zabbix unbedingt auf dem Ceph Interface raus jagen will obwohl es das über das default GW vial vmbr0 machen müsste.
Der Ceph MGR hört/sendet nur auf der IP die im 'public network' von Ceph eingetragen ist. Das Netzwerk braucht einen eigenen Gateway.
 
Ich habe jetzt am Netzwerk gebastelt:

Bash:
root@vm-2:~# traceroute 192.168.15.253
traceroute to 192.168.15.253 (192.168.15.253), 30 hops max, 60 byte packets
 1  192.168.15.253 (192.168.15.253)  0.411 ms  0.402 ms  0.393 ms
root@vm-2:~# nmap -p 10051 192.168.15.253
Starting Nmap 7.70 ( https://nmap.org ) at 2019-09-18 08:40 CEST
Nmap scan report for 192.168.15.253
Host is up (0.00026s latency).

PORT      STATE SERVICE
10051/tcp open  zabbix-trapper
MAC Address: BA:F5:30:EF:40:EF (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.61 seconds
root@vm-2:~# ceph zabbix config-show
{"zabbix_port": 10051, "zabbix_host": "192.168.15.253", "identifier": "VM-2", "zabbix_sender": "/usr/bin/zabbix_sender", "interval": 60}
root@vm-2:~#
Aber leider:
Bash:
root@vm-2:~# ceph zabbix send
Failed to send data to Zabbix
root@vm-2:~#
Das Journal sagt dazu folgendes:
Bash:
Sep 18 08:41:13 vm-2 ceph-mgr[54445]: 2019-09-18 08:41:13.272 7fe360fe4700 -1 mgr.server reply reply (1) Operation not permitted
Das Log von ceph-mgr sagt folgendes:
Bash:
2019-09-18 08:42:18.188 7fe359fd6700  0 mgr[zabbix] Exception when sending: /usr/bin/zabbix_sender exited non-zero: zabbix_sender [3253392]: DEBUG: answer [{"response":"success","info":"processed: 0; failed: 44; total: 44; seconds spent: 0.000179"}]
2019-09-18 08:43:18.217 7fe359fd6700  0 mgr[zabbix] Exception when sending: /usr/bin/zabbix_sender exited non-zero: zabbix_sender [3253629]: DEBUG: answer [{"response":"success","info":"processed: 0; failed: 44; total: 44; seconds spent: 0.000321"}]
Ich weiß jetzt nicht, wo ich weiter suchen muss. Eine Vermutung meinerseits ist, das der zabbix sender als user "zabbix" ausgeführt wird und deshalb keine Berechtigung hat, die Daten aus Ceph auszulesen.
Ich weiß aber nicht wie ich das beheben könnte.
 
Kein Problem, dann lass ich den Post im deutchsprachigen Teil.

Also in Zabbix habe ich einem Host (VM-2) das von dir erwähnte Template zugewiesen. Allerdings hatte ich das von der Zabbix Seite genommen. Sieht für mich aber aus als wäre das ziemlich gleich. Sicherheitshalber habe ich das Template aber nochmal raus geworfen und direkt aus der von dir verlinkten Quelle neu eingefügt.

Es erscheinen keine Werte in Zabbix
Z.B.
ceph.num_osd-> [no data]

Die Meldung auf der Konsole lautet weiterhin einfach "failed to send data to Zabbix"
 
Nach dem Source Code des Plugins, wird die Fehlermeldung failed to send data to Zabbix vom Plugin ausgespuckt. Da der Ceph MGR als user 'ceph' läuft, braucht dieser auch das Recht den zabbix_sender ausführen zu können. Stimmen die Berechtigungen für /usr/bin/zabbix_sender?
 
Meine Vermutung ist auch, das es irgendwas mit den Berechtigungen zu tun hat.

Die Berechtigung für den zabbix_sender sehen so aus:
Bash:
root@vm-2:~# ls -ahl /usr/bin/zabbix_sender
-rwxr-xr-x 1 root root 205K Feb  6  2019 /usr/bin/zabbix_sender
Ausgeführt werden darf er also von jedem User auf dem System.
 
Den Debug hab ich schonmal erhöht. Da steht dann das was weiter oben zu sehen ist.

Irgendwie bekomme ich es aber jetzt nicht mehr hin, den debug Level zu ändern:
Bash:
root@vm-2:~# ceph tell mgr.vm-2 config set debug_mgr 20/20
no valid command found; 2 closest matches:
config show <who> {<key>}
config show-with-defaults <who>
Error EINVAL: invalid command
root@vm-2:~# ceph tell mgr.vm-2 injectargs --debug-mgr 20
no valid command found; 10 closest matches:
osd pool scrub <poolname> [<poolname>...]
osd pool deep-scrub <poolname> [<poolname>...]
osd blocked-by
osd pool stats {<poolname>}
osd perf
osd df {plain|tree} {class|name} {<filter>}
pg cancel-force-recovery <pgid> [<pgid>...]
pg cancel-force-backfill <pgid> [<pgid>...]
pg force-recovery <pgid> [<pgid>...]
pg force-backfill <pgid> [<pgid>...]
Error EINVAL: invalid command
root@vm-2:~#
 
Update:
Die Ursache des Problems war ein mismatch zwischen dem von zabbix_sender übertragenen Hostnamen (VM-2) und dem im Zabbix UI eingetragenen Hostnamen (vm-2). Da der Kram case-sensitive ist, hat der Server die Daten abgelehnt.
Das Zabbix Modul gibt dazu leider keine Auskunft und der Zabbix Sender schweigt sich darüber auch aus.

Ein guter Tip von Wigo den Hollander, dem Entwickler des Zabbix plugins für Ceph:
Es ist eine gute Idee, den identifier leer zu lassen, oder mit der fsid des Ceph Clusters zu füllen. Das Plugin sendet dann als indentifier die FSID des Ceph Clusters. Wenn der Manager den Host wechselt wird das Plugin auf einem anderen Host ausgeführt, aber da der identifier gleich bleibt, kommen die Daten trotzdem noch in Zabbix ordentlich an.

Ich habe zu diesem Zweck einfach einen Host "Ceph" in Zabbix erstellt, der nur die Ceph Daten sammelt, egal von welchem Cluster Node sie kommen. Funktioniert jetzt super.
[Closed]
 
  • Like
Reactions: Alwin
Ich hänge mich mal hier dran, weil ich nach dem Upgrade von 5.4 auf 6.1 den gleichen Fehler hatte.

Die Konfiguration hat vor dem Upgrade bereits funktioniert, nach dem Upgrade kam "Failed to send data to Zabbix" und der Ceph Status war dann auf Warning.

Problem bei uns war die noch fehlenden Änderungen des Zabbix Templates. Nach dem Importieren in Zabbix mit Löschen der entfernten Items im Template unter /usr/share/ceph/mgr/zabbix hat es dann wieder funktioniert.

Das Template auf github war leider schon wieder weiter und hat zu der in 6.1 eingesetzten Ceph Version nicht mehr gepasst.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!