Ffmap-backend und Traffic RRD Graphen


#1

Mit dem Parameter “–with-rrd” erzeugt rrdtool im ffmap-backend Clientstatistik-Grafiken. Das habe ich hin bekommen.

Gleiches soll bei rrdtool wohl auch mit Traffic-Graphen gehen. Was muss ich da konkret noch machen? Ich meine @mattes hat da schon mal was in die Richtung gebastelt.


#2

Hallo, ich bin zwar nicht mattes, aber antworte trotzdem mal:
die Graphen werden nicht mit RRD Tool erstellt, sondern mit Grafana und Prometheus.
Für Prometheus benutzt Du den textfile_collector von: GitHub - prometheus/node_exporter: Exporter for machine metrics

Die promdateien werden bei uns erstellt durch:

#!/bin/bash
for FFNODE in `cat /home/monitoring/node_exporter/textfile_collector/ffnode-clients-bo.json| jq .|grep node_id|awk '{print $2}'|tr -d \",|sed '/node/d'|sed '/map/d'`
do
echo "ffnode_"$FFNODE"_clients 0`cat /home/monitoring/node_exporter/textfile_collector/ffnode-clients-bo.json|jq '.nodes["'$FFNODE'"].statistics.clients' 2> /dev/null`"
done

und

#!/bin/bash
TRAFFIC=0
for FFNODE in `cat /home/monitoring/node_exporter/textfile_collector/ffnode-traffic-bo.json| jq .|grep node_id|awk '{print $2}'|tr -d \",|sed '/node/d'|sed '/map/d'`
do
TRAFFIC=$(cat /home/monitoring/node_exporter/textfile_collector/ffnode-traffic-bo.json|jq '.nodes["'$FFNODE'"].statistics.traffic.rx.bytes + .nodes["'$FFNODE'"].statistics.traffic.tx$
if [ "$TRAFFIC" -gt 0 ]; then
echo ffnode_"$FFNODE"_traffic "$TRAFFIC"
fi
done

im crontab dann

* * * * * root sleep 10 && cp /var/www/ffdata/nodes.json /home/monitoring/node_exporter/textfile_collector/ffnode-clients-bo.json && cd /home/monitoring/node_exporter/textfile_collector/ && bash collect_ffnode_clients.sh >ffnode_clients_bo.temp 2>/dev/null && cp ffnode_clients_bo.temp ffnode_clients_bo.prom
* * * * * root sleep 15 && cp /var/www/ffdata/nodes.json /home/monitoring/node_exporter/textfile_collector/ffnode-traffic-bo.json && cd /home/monitoring/node_exporter/textfile_collector/ && bash collect_ffnode_traffic.sh >ffnode_traffic_bo.temp 2>/dev/null && cp ffnode_traffic_bo.temp ffnode_traffic_bo.prom

Im Grafana legt man Templates an:

ffnode_*_clients

bzw

ffnode_*_traffic

als query

Die bunten Bilder werden dann z.B. mit der Query:

round(avg_over_time($nodes[5m]))

bzw.

rate($traffic[360s])*8

Die Bilder bekommt man über die share Funktion einfach share und direkt link to rendered image klicken. dann hat man eine “Muster URL”.

in der config.js vom meshviewer sieht das bei uns dann so aus:

 "nodeInfos": [
  { "name": "Clientstatistik",
    "href": "http://map.freifunk-bochum.de:3000/render/dashboard-solo/db/ff-bo-nodes?panelId=1&fullscreen&var-nodes=ffnode_{NODE_ID}_clients&theme=light&width=1000&height=332",
    "thumbnail": "http://map.freifunk-bochum.de:3000/render/dashboard-solo/db/ff-bo-nodes?panelId=1&fullscreen&var-nodes=ffnode_{NODE_ID}_clients&theme=light&width=600&height=332",
    "caption": "Knoten {NODE_ID}"
  },
  { "name": "Trafficstatistik",
    "href": "http://map.freifunk-bochum.de:3000/render/dashboard-solo/db/ff-bo-nodes?panelId=2&fullscreen&var-traffic=ffnode_{NODE_ID}_traffic&theme=light&width=1000&height=332",
    "thumbnail": "http://map.freifunk-bochum.de:3000/render/dashboard-solo/db/ff-bo-nodes?panelId=2&fullscreen&var-traffic=ffnode_{NODE_ID}_traffic&theme=light&width=600&height=332",
    "caption": "Knoten {NODE_ID}"
  }
],

Ich glaube das waren die wesentlichen Infos, die man braucht um das irgendwie hin zu bekommen. Ich hätte das ohne @mattes, der mir geholfen (besser gesagt, der es für mich umgesetzt und dabei sogar erklärt hat) nicht hinbekommen. Mit den oben stehenden hints könnte Dir das aber gelingen.

Alle credits gehen hier an @mattes seine Arbeit wurde in Bochum raubmordkopiert.


#3

Danke @zumpel dass ganze hat @dgoersch netter weise komplett in perl gegossen was auch viel viel performanter läuft :smile:
Bauen wir auch am Wochenende ein, das ganze läuft aber schon im Niersufer.

GitHub - dgoersch/ff-prometheus-backend

LG


#4

Moin,

etwas ähnliches hat @dereulenspiegel in go gestampft.


Das schöne hier: Es ist ein kompletter Ersatz für das ffmap-backend. Spuckt an http Endpoints die JSON Daten für den Meshviewer aus und direkt auch die Prometheus metrics.
Teste ich gerade.

Gruß

Chrisno


#5

Die Perl-Variante ist nicht nur performanter, sondern ist um Load und Speicher erweitert und kann mehrere Netze/Instanzen/Communities (siehe INI-File).

Edit: und die verwendete Hardware wird inzwischen gezählt, das ist aber noch nicht im GIT.