Meshviewer - ffmap-backend alias.json problem von VPN link anzeige

ich baue gerade am meshviewer, was muss ich alles mit in die alias.json nehmen (für das ffmap-backend) das mir die Knoten nicht als offline angezeigt werden … folgendes macht aus dem knoten ein offline knoten { „node_id“: „f81a6731704e“, „hostname“: „foo“ }
Wie stelle ich es an das zu einem bestimmten Knoten (node_id) nur bestimmte Werte überschrieben werden?

Oder noch etwas weiter formuliert, wie bekomme ich korrekt die leicht grauen linien zu den VPN Servern - die aktuell als rein Rote punkte auftauchen ich dachte das geschehe mit .backend.py blabla --vpn MAC1 MAC2 …

Du musst in der alias.json unter „tunnel“ die entsprechende MAC eintragen. Siehe hier im zweiten Abschnitt:

[
  {
    "node_id": "krtek",
    "hostname": "krtek",
    "location": {
      "longitude": 10.74,
      "latitude": 53.86
    },
    "network": {
      "mesh": {
        "bat0": {
          "interfaces": {
            "tunnel": [
              "00:25:86:e6:f1:bf"
            ]
          }
        }
      }
    }
  },
 {
    "node_id": "f81a6731704e",
    "hostname": "foo",
    "network": {
      "mesh": {
        "bat0": {
          "interfaces": {
            "tunnel": [
              "f8:1a:67:31:70:4e"
             ]
          }
        }
      }
    }
  },
]

Nachtrag: Solltest du durch rumspielen mit der alias.json der gleichen MAC unterschiedliche node_id s gegeben haben, und danach im Meshviewer Knoten an und aus gehen, oder sonst seltsam angezeigt werden: lösch mal die nodes.json. Das hat bei mir geholfen.

du hast damit welchen Teil der Frage beantwortet?
der hinweis mit der nodes.json scheint wichtig zu sein, der teil aus der sample.alias funktioniert hier nicht

Diesen hier:

Nach dem Eintrag in der alias.json waren die roten Punkte bei mir weg. Wirken sich Einträge denn überhaupt bei dir aus?

ok, sowie ich das sehe wird damit der komplette Eintrag einer MAC (id) überschrieben, was aber wenn ich „nur“ die geo , oder den namen der node ändern möchte? Ohne dabei alle anderen Infos zu verlieren, geht das mit der alias.json, oder benutz ich da schnöde weiter sed und ähnliches …

[quote=„steneu, post:2, topic:9993“]
Nachtrag: Solltest du durch rumspielen mit der alias.json der gleichen MAC unterschiedliche node_id s gegeben haben, und danach im Meshviewer Knoten an und aus gehen, oder sonst seltsam angezeigt werden: lösch mal die nodes.json. Das hat bei mir geholfen.
[/quote] hab versucht die komplett auch zu löschen und „neu“ anzufangen …
braucht es das die server selber nochwas ins alfred reinspucken? oder können die still so laufen …
wo kommen da so online:true oder gateway:true werte her - die kann ic doch in der aliases.json garnicht setzen, da sie ausserhalb liegen, die aliases überschreibt die nodeinfo, flags und statistics kann ich damit garnicht ändern!?

ich selbst mache das folgendermassen :

# ffmap-backend
GWS=02:00:00:25:00:10 02:ee:55:55:55:04 02:00:00:23:00:02 22:b6:a9:a7:e4:68 02:00:00:23:00:03 02:00:00:24:00:03 26:a7:c9:3e:bc:f8
src=/home/freifunk/ffmap-backend
$src/backend.py -d $src/ffmap-data -V $GWS --with-rrd -a $src/aliases.json

und dann bspw: aliases.json

[
{ 
"node_id": "foobar arwen",
"hostname": "gw01",
"network": {
  "mesh": {
    "bat0": {
      "interfaces": {
        "tunnel": [
          "02:00:00:24:00:03",
          "02:00:00:23:00:03"
        ]
      }
    }
  }
 }
 }
]

was in der nodes.json zu folgenden Einträgen führt :

 "foobar arwen":{"flags": {"gateway": false, "online": false}, "statistics": {"clients": 0}, "nodeinfo": {"hostname": "gw01", "node_id": "foobar arwen"}},

Die Werte werden wohl live aus dem mesh dazu getan. Wenn in unserem Netz ein Server off geht oder zum GW wird, dann zeigt die Karte das auch an. Aber ich kenn mich damit auch nur mäßig aus. Kann halt nur sagen, wie es bei mir irgendwann funktioniert hat. Wobei, einen Knoten bekomme ich auch nicht von „rot“ weg und hab daher diesen Beitrag geschrieben.

ja - die meisten der roten punkte sind bei uns auch Supnodes/GW …

[quote=„steneu, post:7, topic:9993“]
Wenn in unserem Netz ein Server off geht oder zum GW wird, dann zeigt die Karte das auch an.
[/quote] kannst du rausfinden ob die server aktiv etwas in alfred reinbrüllen und wenn wenn ja - wie/was genau

jetzt gibts nen crosslink … keine ahnung wie das fancy forum das löst: https://forum.freifunk.net/t/jens-und-hattest-an-unsere-mailingliste-geschrieben-fulda/10322
die übrigbleibende Fragen sind:

  1. was ist nötig (im Sinne von json-content in graph nodes nodelist) um in den Meshviewer im Graphen angezeigt zu werden?
  2. wo kommen die aliase für die gateway in der nodes.json her , wenn dort nicht nur die/eine MAC steht als gateway

Ich zeige dir mal wie das bei uns läuft vielleicht hilft dir das:

#!/bin/bash
FFMAPPATH='/root/ffmap-backend'
WWWPATH='/opt/srv-cgi'
AJPATH='/usr/local/bin'


cd $FFMAPPATH/
rm aliases.json
#sleep 10
wget -q -O aliases.json "http://mesh.ffnord.net/data/aliases.json"

python3 $FFMAPPATH/backend.py -d /$FFMAPPATH/outjson/ --aliases $FFMAPPATH/aliases.json $FFMAPPATH/gateway.json -m bat-ffnord:/var/run/alfred.bat-ffnord.sock --vpn fe:ed:be:ff:be:ef:ff:00 --vpn fe:ed:be:ef:ff:02 --vpn fe:ed:be:ef:ff:03
$AJPATH/alfred-json -s /var/run/alfred.bat-ffnord.sock -r 158 -z >/$FFMAPPATH/outjson/alfred.158.json
rm /opt/srv-cgi/*.json
\cp $FFMAPPATH/outjson/nodes.json $WWWPATH
\cp $FFMAPPATH/outjson/nodelist.json $WWWPATH
\cp $FFMAPPATH/outjson/graph.json $WWWPATH
\cp $FFMAPPATH/outjson/alfred.158.json $WWWPATH

{ "node_id": "feedbeefff00", "hostname": "nord-gw0", "network": { "mesh": { "bat0": { "interfaces": { "tunnel": "fe:ed:be:ef:ff:00" } } } } }, { "node_id": "feedbeefff02", "hostname": "nord-gw2", "network": { "mesh": { "bat0": { "interfaces": { "tunnel": "fe:ed:be:ef:ff:02" } } } } }, { "node_id": "feedbeefff03", "hostname": "nord-gw3", "network": { "mesh": { "bat0": { "interfaces": { "tunnel": "fe:ed:be:ef:ff:03" } } } } } ]

http://vpn0.ffnord.net/nodes.json

Was meinst du mit Meshviewer im Graphen angezeigt zu werden? @fuzzle

Das Backend muss auf dem Gateway laufen der als Alfred-Master aktiv ist. Es darf nur einen Master im Netz geben.

@Tarnatos - ja danke, soweit in etwa bin ich gerade auch. Anmerkungen …

  1. ihr habt alle eure Knoten in der Aliases …? wie wird die generiert ? verhindert das nicht das selbst setzen von Namen und Geo?
  2. in eurer nodes.json steht dann z.b. „gateway“: „feedbeefff02“ bei uns steht da nativ die mac mit doppelpunkt, das macht trouble. kommen die daten schon so an, bzw. an welcher stelle macht das backend da magic?
  3. gemeint war mit GW im Meshviewer Graphen Anzeigen, das das GW dort als eigener Punkt auftaucht.

und dann vermutlich eigener Thread: in der Alfred Doku wird gesagt man solle/könne mehrere Alfred betreiben : wieso crashed damit der meshviewer? und warum braucht der den mastermode? Warum darf es im Netz nur einen Master geben
ich generiere hier recht brauchbar daten mit einem alfred normal der eine viel längere Timeout hat.
Kannst du das näher erklären … der Alfred im Mastermode (mit anderen Mastern neben ihm, hat alles eher kaputt gemacht - so war meine erfahrung)

Hey,

Wir verwenden das Knotenformular in ihm tragen die Aufsteller Koordinaten und Kontaktdaten selbst ein. Per Script werden dann die Geo Daten und der Knotenname aus den Daten extrahiert und als Alias via ffmap-backend zurück in die nodes.json gemerged.

Dadurch haben wir zu jedem Knoten einen ASP, aber der ist nicht im MV einsehbar.

Das wird durch 2 Einstellungen erledigt:

Eine der alias.jsons, bei uns die gateway.json, enthält nur die Gateways, mehr nicht. Zusätzlich müssen beim Aufruf der backend.py alle Gatewys als solche geflaggt werden (–vpn fe:ed:be:ff:be:ef:ff:00 usw.).

Wenn alles richtig eingerichtet ist, dann erscheinen diese automatisch. Manchmal muss man sich auch von den alten Daten trennen und eine neue nodes.json erstellen (richtig löschen nicht nur neu erstellen).

Auch ist es wichtig, dass die Zeit des Servers mit dem backend und dem auf dem der MV läuft syncron ist! Das das ein Problem werden könnte habe ich auch auf die harte Tour lernen müssen.

Ich würde das hier drin lassen, das ich wichtig um das gesamte zu verstehen!

Das ist sogar nötig. Auf jedem Gateway muss Alfred laufen! Auf einem davon läuft der Alfred Master (bei uns vpn0) und nur auf dem darf/kann das backend laufen.

Was heißt crashed? Es können auch Fehler in der MV config sein. Um das auszuschließen nimm mal JSON Daten von uns. (vpn0.ffnord.net) läuft damit der MV, liegt der Fehler in deinen JSON Daten.

Ich gebe zu die Doku nie gelesen zu haben. Ein funktionstüchtiger MV hat mich, als nicht ITler und Volllinux-Nerd, viele Stunden gekostet.

Das Bild beschreibt ja ganz gut, wie wir die Alfredstruktur im FF Netz aufgebaut haben. Alfred Slave Server sammeln die Daten ihrer Clients, aber eben nur ihrere. Damit alle Daten über alle Clients im Netz erhoben werden können müssen die Gateways ihre Clientdaten alle an den Master übermitteln. Dort können sie dann vom backend erhoben werden. Gibt es mehrere Master im Netz werden alle Daten über alle Clients auf allen Servern bereitgehalten. Also eine absolute Verschwendung. - Ich vermute auch, dass mehrere Master im Netz eine nicht valide nodes.json erzeugen (mehrere Timestaps?!), diese kann dann nicht vom MV verarbeitet werden, oder aber das backend kann schlicht nicht mit mehreren Master Servern arbeiten. Das kann sicher @tcatm beantworten. Er hat es programmiert.

Alfred ist Alfred. Die Daten können auf jedem Server (Master oder Slave) erhoben werden, aber sie werden mit sehr hoher Wahrscheinlichkeit nicht vollständig sein. Wahrscheinlich fehlen einfach die Nodes die nicht mit dem Alfred Server verbunden sind.

Das steht auch so in der Doku.

Die Kombination aus backend und MV hat mich auch sehr viel Zeit gekostet. Ich schlage vor, dass du zunächst unser backend und unseren MV (config) verwendest (dev Branch).

Wenn alles läuft dann kannst du weiter basteln. Es kommt auch auf die Kombination von backend und MV an. Nicht alle Kombis laufen. Auch will der MV die JSON Daten manchmal nicht einem Fremdserver laden. Daher arbeite für den Anfang bitte mit Daten die im Data Ordner des MV lokal liegen.

Achte auch darauf, dass die JSON Daten durch das backend zunächst in einem Arbeitsverzeichnis erstellt werden und erst wenn diese intakt generiert wurden un das Dataverzeichnis kopiert werden. Das verhindert Fehlermeldungen des MV in den Sekunden in denen die Daten geniert werden und damit „Downtimes“ des MV.

Wenn noch was unklar ist immer raus damit. Ich hoffe ich konnte etwas helfen.

Gruß
Tarnatos

PS: Achte drauf, dass du eine saubere Alfred Server Struktur hast und das die Server bei Änderungen am Alfred Server neu gestartet werden. Manchmal kann das schlichte Wegbrechen des Master, z.B. beim update und einem Neustart schon zu Problemen führen. Achte darauf, dass du slave Server nur neustartest wenn der Master Server läuft. (ggf. reicht auch das Neustarten des Alfred Prozesses (ungetestet).) Sonst suchst du dich nach Fehlern tod, findest keine und wirst verrückt :slight_smile: - Klassisches Sympthom einer nicht eingehaltenen Neustartreihenfolge ist ein als Offline angezeigter Gateway im MV, obwohl er online ist und alle seine Clients via Alfred announced.

In so einem Fall Master neustarten, Slave neustarten. Wenn alles nichts hilft JSON Daten löschen!