Announced statt alfred im Mesh nutzen und der nächste Schritt


#18

Die Agent variante gefält mir natürlich auch besser!

Baut da denn schon wer etwas?

EDIT:

Hast du eine erklärung für den Fehler hier: https://map.freifunk-troisdorf.de/#!v:m ?

Die jsons kannst du unter http://data.freifunk-troisdorf.de/troisdorf/jsons/ sehen

Log:

ERRO[0310] Error parsing json                            client=[fe80::62e3:27ff:fe76:302e%bat0]:1001 error=json: cannot unmarshal number 2230774334.0000001 into Go value of type uint64 json={"statistics":{"node_id":"60e32776302e","clients":{"wifi":0,"total":0,"wifi24":0,"wifi5":0},"rootfs_usage":0.53571428571428567,"memory":{"cached":3092,"total":28540,"buffers":1492,"free":6128},"uptime":396457.45,"idletime":379270.32,"gateway":"a2:8c:ae:6f:f6:01","processes":{"total":44,"running":1},"traffic":{"tx":{"packets":84254,"dropped":156,"bytes":14200785},"rx":{"bytes":624691967,"packets":5692690},"forward":{"bytes":870,"packets":6},"mgmt_tx":{"bytes":2230774334.0000001,"packets":10944893},"mgmt_rx":{"bytes":766253396,"packets":4530778}},"loadavg":0.13}}

Map Sagt:

TypeError: Cannot read property ‘nodes’ of undefined


#19

Hi,

also der Error im Log kommt daher, dass 2230774334.0000001 kein gültiger Integer-Wert ist. In dem Json ist das die Anzahl der Bytes des Traffic. Das sieht also eher nach einem Bug in einem Lua-Skript von announced aus, denn Bruchteile von einem Byte sollte es beim Traffic nicht geben.

TypeError: Cannot read property ‘nodes’ of undefined

Das kann schonmal auftreten kurz nachdem der gluon-collector gestartet ist. Der braucht etwas um alle Infos zu sammeln und aktuell generiert er vorher keine gütige nodes.json. Das wird in Zukunft aber sicher noch geändert.


#20

Sind schon Debian bzw RPM Pakete geplant? Ich installiere eher ungern Compiler auf den notwendingen Servern wo die Software laufen soll. Außerdem erleichtert es das Setup ungemein :slight_smile:


#21

Vorgebaute binaries gibt es unter Releases auf der Github-Seite. Die muss man nur runterladen. Brauchst also keinen golang-Compiler o.ä.
An einer Ansible-Rolle arbeite ich gerade, die das ganze automatisiert. Die verwendet aber auch die vorgebauten Binaries.


#23

Moin,

gibt es irgendwo eine Anleitung dazu? Im besonderen zu announced

Gruß
Fabian


#24

Ich glaube es gibt keine komplette Anleitung.
Bis auf die Graphen ist es eigentlich extrem einfach:
GitHub - ffdo/node-informant: Small utility to collect node information in a Freifunk network via announced auf dem Kartenserver installieren wie in der README beschrieben under starten. Dann in der meshviewer config.json als Datenquelle http://dein.mapserver:8080/ eintragen.

Die Graphen sind ein bisschen mehr Arbeit, aber es hält sich in Grenzen. Du brauchst jedenfalls Prometheus und Grafana. Dann musst du in der Prometheus Standardkonfiguration am Ende das http://localhost:9090/ durch ein http://localhost:8080/ austauschen. Zu guter Letzt in Grafana Prometheus als Datenquelle eintragen und nötigen Dashboards anlegen.
Wenn du bei den Graphen Hilfe brauchst schreib mich einfach an.


#26

Derzeit ist das selbstverständlich einfacher.
So wie ich die Gluon-Roadmap verstanden habe ist jedoch alfred zukünftig nur noch optional zu Gunsten von announced.
Daher finde ich den Ansatz gut, dass @PetaByteBoy sich heute schon darum kümmert.


#29

@CyrusFox es geht hier eben hauptsächlich um announced an Stelle von Alfred


#30

Freut mich, dass langsam von Alfred weg migriert wird. Das öffnet auch die Türen für alternative Meshing-Protokolle.
Der gluon-collector ist übrigens tatsächlich dafür ausgelegt aus ganz unterschiedlichen Quellen Infos sammeln zu können. Weitere Listener lassen sich recht einfach implementieren (was auch schon in vorbereitung ist).
Bald gibt es übrigens auch eine recht einfache ansible-Rolle, die die Installation für ansible-nutzende Communities noch einfacher machen sollte.


#31

Wie sieht es aus mit OLSR als Quelle?


#32

Afaik OLSR ist ein Routingprotokoll. Es spricht also nichts dagegen announced (oder einen Nachfolger) darüber laufen zu lassen. Aber Infos selber wird das eher nicht übermitteln. Man könnte aber mit einem passenden Agent Infos wie Linkqualität, Nachbarn etc. aus OLSR rausholen und in den gluon-collector schmeißen.


#33

Doch, bei OLSR hat jeder Knoten eine Gesamtübersicht des Netzes und es werden weitere Informationen z.B. über interne Services vermittelt (wie genau weiß ich auch nicht, könnte auch ein zusätzliches Programm sein). Aus der kann man Daten für den Meshviewer generieren.


#34

@PetaByteBoy:

Hast du die Prometheus anbindung an Grafana geschafft? Ich bekomme den Fehler hier:

Unknown error
Cannot read property ‘message’ of null

Das ist die Ausgabe:
http://5.9.174.75:8080/metrics


#35

Das was du geschickt hast war der output von node-informant und der input für prometheus. Du musst zuerst Prometheus installieren und in der Konfiguration die http://5.9.174.75:8080/ als Quelle eintragen (standardmäßig hat Prometheus sich selbst als Quelle also http://localhost:9090/)

Ich schreibe bald™ einen Wiki-Artikel oder so


Aussetzer bei der Alfred-Datenübermittlung
#36

Kannst du mir deine Prometheus Config Datei zukommen lassen?


#37
root@gl1 ~# cat /opt/prometheus-0.16.1.linux-amd64/prometheus.yml 
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.
  # scrape_timeout is set to the global default (10s).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'freifunk'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 20s
    scrape_timeout: 10s

    target_groups:
      - targets: ['localhost:8080']

#38


#39

Funktioniert hier jetzt auch… Danke
http://statistik.freifunk-troisdorf.de/


#40

Eine Kleinigkeit ist mir noch aufgefallen, die Metriken werden nur mit dem Label “nodeid” bereitgestellt.
Sinnvoller wäre zusätzlich noch der Hostname sowie der Site-Code. Wir nutzen in Düsseldorf Grafana mit templating im Dashboard. Dort kann man seinen Router momentan einfach anhand des Hostnames in einem Drop-Down Menu auswählen.
Die Node-ID merkt sich leider keiner :frowning:


#41

Moin,

über ähnliches hatte ich mit @dereulenspiegel schon mal gesprochen. Derzeit können ja mehrere Instanzen angegeben werden, die dann zusammen verarbeitet werden. Schön wäre jetzt noch das automatische “splitten” der Daten, um die Daten auch pro Community bereit zu stellen. Da wäre deine Idee mit dem site-code im Prinzip schon die Lösung für die Graphen.

Gruß

Chrisno