@adorfer @collimas Eigentlich geht es hier gar nicht um die Karte. Es geht um respondd bzw respondd->script->graphite (carbon-cache).
Aufgrund von
- es tritt nur bei manchen (aber nicht beliebigen) Knoten auf (die nachvollziehbar anders sind) und
- Es kommen grundsätzlich Daten an, nur halt nicht so oft
schließe ich Graphite mal als Ursache aus.
Es wird also ein Problem zwischen respondd client auf dem Knoten und respondd server aka node-stats script sein.
Aufgrund des konkreten Fehlerbildes würde ich möglicherweise ein anderes zeitliches Verhalten unter LEDE als Ursache vermuten.
Da du aber sagst, dass es auf der Karte (also auch beim hopglass server) keine Probleme gibt und die Daten dort regelmäßig eintreffen, würde ich eine schlechte Programmierung unseres Scriptes als Ursache vermuten.
Das prinzipielle Problem:
- Das Script wird per cron einmal die Minute aufgerufen.
- Wir senden eine Multicast respondd Anfrage (udp).
- Daher wissen wir nicht, wer antwortet.
- Wir müssen also einen Timeout abwarten und danach den Socket wieder schließen.
- Die Implementation wartet
n
Zeiteinheiten nach der letzten Nachricht, die rein gekommen ist, bevor sich der Port schließt. - Ich hatte das Timeout anfangs auf 750 ms gesetzt, hatte hier aber auch das Problem, dass häufig Daten nicht ankamen, habe es daher auf 1250 ms gesetzt.
- Dieses Problem hätten wir nicht, wenn wir das ganze als Dienst laufen lassen würden und Empfang (respondd) und Senden (graphite) in separate Threads aufteilen würde (oder „nonblocking“ code, wie z. B. bei hopglass-server).
Prüfe also bitte mal welcher Wert dort eingestellt ist.
Anmerkung: Das Script stammt aus den Anfangstagen von Freifunk Münster, ich habe es recht stümperhaft von alfred auf respondd als Datenquelle umgestellt. Da ich sowie vor hatte/habe das Teil neu zu schreiben.
Da die Daten, die wir brauchen eh schon vom Hopglass-Server erfasst werden, nutze ich in der Neuimplementation direkt diese Daten, damit sparen wir dann redundante respondd Abfragen ein.
Du findest die neue Version hier:
Diese läuft bei FFMS auch schon produktiv, ist aber noch nicht im Ansible eingebaut, da ich hier und da ggf. noch die resultierende Datenstruktur geändert werden könnte. Außerdem wird das Script momentan auch noch per Cron minütlich aufgerufen. Geplant ist es das Programm als Dienst laufen zu lassen.
Bei Bedarf ließe sich sicherlich auch ein „respondd-server“ als alternative Datenquelle zum hopglass server realisieren…