Überblick Alfred Daten

Hallo ich versuche gerade einen Überblick über die von Alfred und batman-vis erhobenen Daten zu erlangen.

Bisher habe ich folgendes gefunden:

Vielleicht könnte einer der Admins ganz kurz zusammenfassen:

  • wo diese Daten herkommen (Batman-adv, Alfred Data Type?)
  • wie oft sie aktualisiert werden (alled 5 Minuten?)
  • und ob noch mehr Daten zur Verfügung stehen?

Außerdem habe ich versucht meinen eigenen Alfred Daemon im Mastermodus zu starten:

alfred -m master -i br-client -b bat0

Leider kann ich so aber nur die Infos meiner eigenen Node (nicht vermesht) abfragen:

alfred -r 158

So wie ich das Alfred Protokoll verstanden habe, sollte sich meine Alfred-Instanz doch durch den fastd-Tunnel mit den Alfred-Daemons der Supernodes synchronisieren?

1 „Gefällt mir“

Bitte die Nodes nicht in den Alfred Master Mode starten, dies kann für Merging Probleme im Mesh sorgen.
Auf den Nodes reicht der Client Modus. Auslesen lassen sich die Daten zwar mittels des normalen Alfred-Clients aber diese sind im Json Format und Gzip kompremiert… Normalerweise gibt es dafür den alfred-json Client. Dieser ist für Supernodes gedacht im die Datenauszulesen und in die FFMap zu exportieren.
Auf den Nodes befindet sich dieser Client nicht.

Alle wichtigen Node-Bezogenen Daten (Datentyp 159) findest du in der alfred.json. Link-Daten sowie statische Daten findest du in der nodes.json. Das Aktualisierungs-Interval beträgt 5 Minuten.

alfred_merged.json ist unnötig und wird nicht mehr aktualisiert.

Ahh vielen Dank :slight_smile: Das sieht schon viel besser aus. Ich nutze ein einfaches Python-Skript um die Daten zu entpacken.

Dort fehlen die dynamischen Daten. Sprich LoadAvg, PackageCounter, ProcessCount, die über Alfred im Datentyp 159 verteilt werden. Ich sehe nur 5 Nodes mit veralteter Firmware, die hier Statistik-Daten besitzen. „alfred_merged.json“ enthällt auch Statistikdaten neuerer Firmware Versionen.

Die werden also über batadv-vis generiert? Ich bin mir über den Zusammenhang von batadv-vis und Alfred auch noch nicht so ganz im Klaren. Die Doku bringt dort auch kein Licht ins Dunkle.

Der HTTP Response-Header sagt hier aber was anderes?

Date:Tue, 11 Nov 2014 13:25:09 GMT
Last-Modified:Tue, 11 Nov 2014 13:25:01 GMT

Ich würde hier gerne auch ein paar Fragen anhängen. Ich habe mir mal die nodes.json von Rheinufer angeschaut und mir sind da noch ein paat Dinge offen.

Soweit klar, aufgeteilt in nodes, meta und links. Links brauche ich garnicht, mich interessieren nur die Nodes. Aber dann in den Nodes:

Wie kommen 910 Einträge zusammen? Laut Graph sind gerade ~330 Nodes online. Gehe ich recht in der Annahme, dass 910 alle jemals „gesehenen“ Nodes sind?

Mich interessiert u.a. ob ein Node online ist. Wäre es da legitim anzunehmen, dass jeder Node der im Feld „macs“ etwas stehen hat gerade verbunden ist? Wie häufig wird die nodes.json und das Feld „macs“ aktualisiert?

Die Alfred Daten können nicht als Monitoring verwendet werden da das Merging der Daten innerhalb des Meshs via UDP funktioniert und dabei manchmal die Daten einiger Nodes verloren gehen.
Besser ist es die Node mittels UDP Unicast abzufragen.
Z.b. mittels des folgenden Befehls:

echo "nodeinfo" | socat - UDP6-DATAGRAM:[2a02:f98:0:28:fad1:11ff:fe81:164c]:1001

Damit bekommst du dann JSON Daten raus, allerdings muss der Befehl manchmal 2-3x abgefeuert werden dann das Mesh gerne mal UDP Pakete frisst.

Dies gibt zwar nicht alle Alfred Daten aus, aber es ist aktueller.
Warum die Statistik-Daten selber darüber nicht abzurufen sind bin ich gerade am prüfen, manuell kann man es dem Dienst recht einfach beibringen aber das sollte ja auch Upstream geändert werden.

Gruß
Cyrus

Danke erstmal für deine fixe Antwort.

Das ist schade.
Ich wollte aber auch kein monitoring im Sinne von „Achtung Server down“ sondern eher ein logging der clienzahlen auf meinem Node und wenn es klappt später auch gerne für andere Nodes. Arbeitsbedingt habe ich keine Möglichkeit jede Minute F5 zu hämmern und nachzuschauen :wink:
Als loggenden Server wollte ich einen 08/15 Webserver nehmen da ich den hier noch über habe und der problemlos 24/7 online ist. Leider kann der kein ipv6 und ist (natürlich) nicht im Freifunk Netz. Da dachte ich mir, die nodes.json wäre eine angenehme Möglichkeit client-Zahlen und Zustand der Router automatisiert abzurufen.
Das es Lücken in meinem monitoring gäbe kann ich dabei verschmerzen.

Nun als ungefähre Anzahl kannst du natürlich die Nodes.json nehmen, die Client-zahlen sind nahezu korrekt. Wir haben momentan etwa im Durchschnitt 700-800 Clients am Tag.
Diese Daten werden auch nicht via Alfred ermittelt sondern mit Batman selber, daher sind diese Daten etwas akkurater.
Nur halt um Live-Daten zu bekommen macht es nicht viel Sinn dies via Alfred zu machen. :smile:

Ich bin gerade dabei meinen Server ins Mesh zu hängen, damit ich genau diese Infos dann loggen kann.
Die Kombi aus Alfred und Batman-Adv liefert schon ne Menge an Informationen.
Ziel ist es das ganze dann als Historie zu speichern. Also wie entwickelt sich das FF Netz und wann/wo gibts es Probleme bzw. Engpässe.

Zu Zeit frage ich die Daten noch per SSH von meinem TP Link ab.
Wenn das ganze dann auf meinem Server läuft möchte ich das ganze direkt in ne große SQL Datenbank einpflügen.

Hat vielleicht noch jemand Interesse in diese Richtung etwas zu experimentieren?

Nur bitte aufpassen das weder Batman noch Alfred im Master-Mode laufen. Sonst haben wir evtl noch mehr merging Probleme bei den Alfred Daten. :wink:

1 „Gefällt mir“

Versuchs mit alfred-json :smile:
Siehe: GitHub - ffnord/alfred-json: Simple alfred client with JSON output

alfred-json -z -r 158

Jup, jup das ist klar. Das war mir schon bewusst :slight_smile:
Seit ein paar Tagen/Wochen schafft es mein TP Link in der Rheinufer Domäne auch nicht mehr Alfred Daten abzufragen („alfred -r 158“ → „request failed with 1“).

Wurde da etwas an der Infrastruktur geändert?
Wer befasst sich eigentlich mit der Weiterentwicklung der FFMap und Backend?
Upstream scheint da ja ziemlich tote Hose zu sein.

Hab keinen cross-compiler für OpenWRT zuband. Daher mach ich das lieber aufm Server.

Kannst du natürlich auch über den Server machen, war jetzt auch dafür gedacht. Auf den Nodes muss man die Infos eigentlich nicht auslesen.

in alfred.json stehen aber die statischen Daten (Datentyp 158), nicht Datentyp 159!?
Gibt es auch eine Datei, in der nur die Statistikdaten (Datentyp 159) enthalten sind?

Dann fällt auf, dass in der nodes.json immer wieder einige Nodes als offline stehen, die definitiv online sind. Jedes mal übrigens andere Nodes. Wie genau wird die Datei erstellt? Ist das Netz ggfs. zu groß geworden, um innerhalb der erwarteten Zeit eine Info vom Node zu bekommen?

Für die Alfred-Daten Seite der FF-Map ist die alfred_merged.json wieder verfügbar, diese kann also auch dafür genutzt werden.
Siehe: http://ffmap.freifunk-rheinland.net/alfred_merged.json

Das manche Nodes nicht Online angezeigt werden liegt daran das die Alfred Daten per UDP übertragen werden, wenn viel Package-Lost herrscht dann kann es vorkommen das gewisse Nodes für 5-10 Minuten nicht angezeigt werden. Woher das Package-Lost kommt haben wir noch nicht herausfinden können, zumal ich nur die Anwendungen aufsetze und pflege. Naja abgesehen von den Firmware Releases.

Kann ich denn gefahrlos den batadv-vis im Server-Modus laufen lassen, oder kommt es hier auch zu Problemen?

Edit:
Habe gerade gemerkt, dass ich den batadv-vis im Server-Modus gar nicht benötige, um die nodes.json zu generieren.
Für Alfred habe ich das ffmap-backend dahingehend erweitert, dass man auch eine existierende alfred.json angeben kann (die ich mir vom Map-Server herunterlade).

1 „Gefällt mir“
iwinfo client0 assoclist

zeigt auf dem Knoten (Open-WRT) die aktuell verbundenen Clients an