51
Bearbeitungen
Seth0r (Diskussion | Beiträge) (influx doku) |
Otto (Diskussion | Beiträge) (https ging bei mir nicht...) |
||
(6 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 13: | Zeile 13: | ||
ssh root@Router-IP | ssh root@Router-IP | ||
Und führe folgenden Befehl aus (copy & paste). | Und führe folgenden Befehl aus (copy & paste). | ||
<pre>wget -q -O /tmp/ffp-collect | <pre>wget -q -O /tmp/ffp-collect https://monitor.freifunk-potsdam.de/ffp-collect && chmod +x /tmp/ffp-collect && /tmp/ffp-collect install</pre> | ||
'''Troubleshooting:''' bei Routern mit wenig Flash ist möglicherweise keine HTTPS-Unterstützung gegeben. In diesem Falle kannst du das Script von https://monitor.freifunk-potsdam.de/ffp-collect kopieren und mit | |||
<pre>cat > /tmp/ffp-collect && chmod +x /tmp/ffp-collect && /tmp/ffp-collect install</pre> | |||
zum laufen bringen, indem du es dann in die Konsole einfügst und am Ende Strg + D drückst. | |||
Beim ersten Start werden alle Schnittstellen aufgelistet, unter denen gewählt werden kann, welche '''nicht''' mitgeschnitten werden sollen (z.B. private APs, normalerwise keine). | Beim ersten Start werden alle Schnittstellen aufgelistet, unter denen gewählt werden kann, welche '''nicht''' mitgeschnitten werden sollen (z.B. private APs, normalerwise keine). | ||
<br> | <br> | ||
Zeile 20: | Zeile 24: | ||
* upload: läd Daten hoch (alle 10 Minuten) | * upload: läd Daten hoch (alle 10 Minuten) | ||
* upgrade: läd die aktuelle Version dieses Scriptes herunter und installiert sie (zum 1. jeden Monat zu einer zufälligen Uhrzeit) | * upgrade: läd die aktuelle Version dieses Scriptes herunter und installiert sie (zum 1. jeden Monat zu einer zufälligen Uhrzeit) | ||
'''Achtung:''' Ein sysupgrade löscht Grafana und dannach muss es neu installiert werden, [https://github.com/seth0r/ffp-monitor/issues/1 Issue 1]. | |||
====Weitere Befehle:==== | ====Weitere Befehle:==== | ||
Zeile 87: | Zeile 93: | ||
END | END | ||
</pre> | </pre> | ||
Außerdem gibt es ein paar Queries, die regelmäßig via Cron ausgeführt werden, weil sie als CQ zu lange brauchen oder nicht funktionieren: | |||
<br> | |||
Täglich: | |||
<pre> | |||
# TRAFFIC TX, freifunk.network -> ffarchive.traffic_tx (5m von -48h) | |||
SELECT non_negative_derivative(last(tx_bytes)) AS tx_bytes | |||
INTO ffarchive."default".traffic_tx | |||
FROM freifunk."default".network | |||
WHERE time > NOW() - 48h | |||
GROUP BY time(5m), device, hostname fill(none) | |||
# TRAFFIC RX, freifunk.network -> ffarchive.traffic_rx (5m von -48h) | |||
SELECT non_negative_derivative(last(rx_bytes)) AS rx_bytes | |||
INTO ffarchive."default".traffic_rx | |||
FROM freifunk."default".network | |||
WHERE time > NOW() - 48h | |||
GROUP BY time(5m), device, hostname fill(none) | |||
# LQ NLQ, freifunk.links -> ffarchive.links (5m von -48h bis -23h) | |||
SELECT | |||
min(linkQuality) AS lq_min, | |||
max(linkQuality) AS lq_max, | |||
mean(linkQuality) AS lq_mean, | |||
median(linkQuality) AS lq_median, | |||
min(neighborLinkQuality) AS nlq_min, | |||
max(neighborLinkQuality) AS nlq_max, | |||
mean(neighborLinkQuality) AS nlq_mean, | |||
median(neighborLinkQuality) AS nlq_median | |||
INTO ffarchive."default".links | |||
FROM freifunk."default".links | |||
WHERE time < now() - 23h and time > NOW() - 48h | |||
GROUP BY time(5m), localIP, remoteIP, remoteHostname, hostname fill(none) | |||
# LEASES, freifunk.dhcp -> ffarchive.dhcp (5m von -48h bis -23h) | |||
SELECT min(leases) AS min, max(leases) AS max, mean(leases) AS mean, median(leases) AS median | |||
INTO ffarchive."default".dhcp | |||
FROM freifunk."default".dhcp | |||
WHERE time < now() - 23h and time > NOW() - 48h | |||
GROUP BY time(5m), network, hostname fill(none) | |||
# ASSOC, freifunk.wireless -> ffarchive.wireless (5m von -3h) | |||
SELECT min(assoc) AS min, max(assoc) AS max, mean(assoc) AS mean, median(assoc) AS median | |||
INTO ffarchive."default".wireless | |||
FROM freifunk."default".wireless | |||
WHERE time < now() - 23h and time > NOW() - 48h | |||
GROUP BY time(5m), device, essid, hostname fill(none) | |||
# ETX, ffarchive.links -> ffarchive.link_etx (5m von -48h bis -23h) | |||
SELECT | |||
1 / (max(lq_max) * max(nlq_max)) AS etx_max, | |||
1 / (min(lq_min) * min(nlq_min)) AS etx_min, | |||
1 / (mean(lq_mean) * mean(nlq_mean)) AS etx_mean, | |||
1 / (median(lq_median) * median(nlq_median)) AS etx_median | |||
INTO ffarchive."default".link_etx | |||
FROM ffarchive."default".links | |||
WHERE time < now() - 23h and time > NOW() - 48h | |||
GROUP BY time(5m), localIP, remoteIP, remoteHostname, hostname fill(none) | |||
</pre> | |||
Stündlich: | |||
<pre> | |||
# TRAFFIC TX, freifunk.network -> ffarchive.traffic_tx (5m von -3h) | |||
SELECT non_negative_derivative(last(tx_bytes)) AS tx_bytes | |||
INTO ffarchive."default".traffic_tx | |||
FROM freifunk."default".network | |||
WHERE time > NOW() - 3h | |||
GROUP BY time(5m), device, hostname fill(none) | |||
# TRAFFIC RX, freifunk.network -> ffarchive.traffic_rx (5m von -3h) | |||
SELECT non_negative_derivative(last(rx_bytes)) AS rx_bytes | |||
INTO ffarchive."default".traffic_rx | |||
FROM freifunk."default".network | |||
WHERE time > NOW() - 3h | |||
GROUP BY time(5m), device, hostname fill(none)' | |||
# LEASES, freifunk.dhcp -> ffarchive.dhcp (5m von -3h) | |||
SELECT min(leases) AS min, max(leases) AS max, mean(leases) AS mean, median(leases) AS median | |||
INTO ffarchive."default".dhcp | |||
FROM freifunk."default".dhcp | |||
WHERE time > now() - 3h | |||
GROUP BY time(5m), network, hostname fill(none) | |||
# ASSOC, freifunk.wireless -> ffarchive.wireless (5m von -3h) | |||
SELECT min(assoc) AS min, max(assoc) AS max, mean(assoc) AS mean, median(assoc) AS median | |||
INTO ffarchive."default".wireless | |||
FROM freifunk."default".wireless | |||
WHERE time > now() - 3h | |||
GROUP BY time(5m), device, essid, hostname fill(none) | |||
# ETX, freifunk.links -> freifunk.link_etx (1m von -3h bis -1h) | |||
SELECT 1 / (mean(linkQuality) * mean(neighborLinkQuality)) AS etx | |||
INTO freifunk."default".link_etx | |||
FROM freifunk."default".links | |||
WHERE time > now() - 3h AND time < now() - 1h | |||
GROUP BY time(1m), localIP, remoteIP, remoteHostname, hostname fill(none) | |||
</pre> | |||
===Crontab=== | |||
Alles, was in der Crontab mit dem Parsen zu tun hat: | |||
<pre> | |||
# parsing | |||
# 0,5,10,... | |||
*/5 * * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/parseff1.py /var/ffdata/ >> /var/ffdata/ffdata.log | |||
# 4,9,14,... | |||
4-59/5 * * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/parseff2.py | |||
59 * * * * root cat /var/ffdata/ffdata.log && rm /var/ffdata/ffdata.log | |||
1 3 * * * www-data find /var/ffdata/mv/ -type f -ctime +1 -delete | |||
*/15 * * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/lperf.py | |||
8 * * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/routes.py > /dev/null | |||
#* * * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/sendmsg.py | |||
* * * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/sendtweet.py routermsg | |||
0 8 * * * www-data /var/www/monitor.freifunk-potsdam.de/wsgi/ff/sendtweet.py netstate | |||
# Influx stuff | |||
3 * * * * root /root/influxdb_cq.sh hour > /dev/null 2>&1 | |||
13 1 * * * root /root/influxdb_cq.sh day > /dev/null 2>&1 | |||
27 4 7 * * freifunk /home/freifunk/influxdump.sh | |||
</pre> | |||
=== Dashboards === | |||
==== eine Location (Verbund aus mehreren Knoten) anlegen ==== | |||
Beispiel: ich möchte folgende Knoten gruppieren: | |||
* 254-142-ph-werkstatt | |||
* 254-54-ph-up | |||
* 254-119-ph-buero | |||
* 254-86-ph-seminar | |||
* 254-155-ph-heizraum | |||
Vorgehensweise | |||
* bei Grafana einloggen | |||
* im HOME Dashboard am besten ein Dashboard wählen (einer Location) und dieses dann klonen (Einstellungen -> save as) | |||
* die Templating variable $host editieren (Einstellungen -> Templating) | |||
* also z.B. für die oberen Knoten folgenden Regex angeben: /254-142-|254-54-|254-119-|254-86-|254-155-/ | |||
* nach Klick auf ''update'' sieht mensch auch, ob der Regex die richtigen Knoten getroffen hat | |||
* für Zusatzinfos auf das Dashboard gehen, dann Settings, im Reiter ''Links'' können Infos, wie z.B. die Webseite vom Verein der Location verändert/hinzugefügt werden | |||
* die Hosts List aktualisieren: neben hosts auf die Nodes klicken und die aufgelisteten alle anklicken | |||
* nun eventuell noch das Zeitintervall ändern (oben rechts) | |||
* am Ende Dashboard abspeichern & fertig |
Bearbeitungen