Orga, Bürokraten, Administratoren
775
Bearbeitungen
Seth0r (Diskussion | Beiträge) (doku für serverseite angelegt) |
Seth0r (Diskussion | Beiträge) (influx doku) |
||
Zeile 45: | Zeile 45: | ||
==auf dem Server== | ==auf dem Server== | ||
===Quellcode=== | |||
Quellcode für den Server gibts auf [https://github.com/seth0r/ffp-monitor GitHub] | |||
===Doku?=== | |||
Die Serversoftware fürs Parsen ist in Python geschrieben. InfluxDb wird für alles benutzt, das in Grafana angezeigt wird, für die Daten, die sicht nicht so oft ändern, und eher Statusinfos darstellen, wird eine MongoDb benutzt. Anlaufstelle für die Clients ist fffeed.wsgi, das über das Apache WSGI plugin auf die Webadresse /fff gemappt ist. fffeed.wsgi speichert die hochgeladenen Daten erst mal nur ab, das parsen übernehmen dann ein paar CronJobs: | |||
* parseff1.py: parst alle hochgeladenen Dateien, füllt Daten in die InfluxDb und speichert den aktuelle Status in einer temporären Collection in der MongoDB | |||
* parseff2.py: sammelt die Änderungen zusammen, aktualisiert die Statusinfos in der MongoDb und vermerkt die tatsächlichen Änderungen in einer extra Collection. | |||
Damit wären alle Daten zusammen, die für Grafana und die APDB-Tabelle nötig sind. | |||
<br> | |||
Die Infos zu den Links für die Karte sind in der InfluxDB, die Abfrage daraus würde aber zu lange dauern, dafür gibt es: | |||
* lperf.py: aggregiert aus der InfluxDb die Daten der Link Performance und speichert diese in der MongoDb zwischen. | |||
Für die kompletten Pfade innerhalb den Netzwerks, die auf den ApInfo-Seiten angezeigt werden: | |||
* routes.py: ermittelt die kürzesten Routen durch das Netzwerk für alle Router | |||
Dann gibt es noch | |||
* sendtweets.py: liest die Collection mit den Veränderungen und schickt Tweets, außerdem kann es Tagesstatistiken tweeten | |||
===InfluxDb=== | |||
In der InfluxDb sind die folgenden Continuous Queries definiert: | |||
<pre> | |||
router_count_archive CREATE CONTINUOUS QUERY router_count_archive ON freifunk | |||
RESAMPLE EVERY 1h FOR 1d | |||
BEGIN | |||
SELECT max(count) | |||
INTO ffarchive."default".router_count | |||
FROM freifunk.twodays.router_count | |||
GROUP BY time(1h) fill(none) | |||
END | |||
router_count CREATE CONTINUOUS QUERY router_count ON freifunk | |||
RESAMPLE EVERY 15m FOR 6h | |||
BEGIN | |||
SELECT count(conn_tcp) | |||
INTO freifunk.twodays.router_count | |||
FROM freifunk."default".conn | |||
GROUP BY time(1m) fill(none) | |||
END | |||
last_dhcp CREATE CONTINUOUS QUERY last_dhcp ON freifunk | |||
RESAMPLE EVERY 5m FOR 6h | |||
BEGIN | |||
SELECT last(leases), max(leases), min(leases), mean(leases), median(leases) | |||
INTO freifunk.twodays.dhcp | |||
FROM freifunk."default".dhcp | |||
GROUP BY time(1h), network fill(none) | |||
END | |||
</pre> |