router.html: use shorter keys for included stats

Since part of the stats are just added to the html page, make
their keys shorter so the overall data transmitted per page is
reduced.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
Adrian Schmutzler 2020-12-19 02:26:54 +01:00
parent 547cbbed73
commit 08602134d7
5 changed files with 71 additions and 35 deletions

View File

@ -28,11 +28,16 @@ def load_netif_stats(dbid):
influ = FreifunkInflux()
netiffetch = influ.fetchlist('SELECT netif, rx, tx, time FROM router_netif.stat WHERE router = $router AND netif = $netif ORDER BY time ASC',{"router": dbid, "netif": netif})
netifstats = []
for ns in netiffetch:
ns["time"] = {"$date": int(influ.utcawareint(ns["time"]).timestamp()*1000)}
netifstats.append({
"t": {"$date": int(influ.utcawareint(ns["time"]).timestamp()*1000)},
"rx": ns["rx"],
"tx": ns["tx"]
})
r = make_response(json.dumps(netiffetch))
r = make_response(json.dumps(netifstats))
r.mimetype = 'application/json'
return r
#return make_response(json.dumps({}))
@ -47,10 +52,12 @@ def load_neighbor_stats(dbid):
neighdata = {}
for ns in neighfetch:
ns["time"] = {"$date": int(influ.utcawareint(ns["time"]).timestamp()*1000)}
if not ns["mac"] in neighdata:
neighdata[ns["mac"]] = []
neighdata[ns["mac"]].append(ns)
neighdata[ns["mac"]].append({
"t": {"$date": int(influ.utcawareint(ns["time"]).timestamp()*1000)},
"q": ns["quality"]
})
r = make_response(json.dumps(neighdata))
r.mimetype = 'application/json'

View File

@ -270,8 +270,24 @@ def router_info(dbid):
for n in router["neighbours"]:
n["color"] = neighbor_color(n["quality"],n["netif"],router["routing_protocol"])
router["stats"] = influ.fetchlist('SELECT * FROM router_default.stat WHERE router = $router ORDER BY time ASC',{"router": dbid})
for s in router["stats"]:
router_stats = influ.fetchlist('SELECT * FROM router_default.stat WHERE router = $router ORDER BY time ASC',{"router": dbid})
router["stats"] = []
for s in router_stats:
router["stats"].append({
"t": mysql.utcawareint(s["time"]),
"a2": s["airtime_w2"],
"a5": s["airtime_w5"],
"c": s["clients"],
"ce": s["clients_eth"],
"c2": s["clients_w2"],
"c5": s["clients_w5"],
"l": s["loadavg"],
"mb": s["sys_membuff"],
"mc": s["sys_memcache"],
"mf": s["sys_memfree"],
"pr": s["sys_procrun"],
"pt": s["sys_proctot"]
})
s["time"] = mysql.utcawareint(s["time"])
neighfetch = influ.fetchlist('SELECT quality, mac, time FROM router_neighbor.stat WHERE router = $router AND time > now() - 24h ORDER BY time ASC',{"router": dbid})
@ -279,11 +295,13 @@ def router_info(dbid):
neighdata = {}
neighmacint = []
for ns in neighfetch:
ns["time"] = {"$date": int(mysql.utcawareint(ns["time"]).timestamp()*1000)}
if not ns["mac"] in neighdata:
neighdata[ns["mac"]] = []
neighmacint.append(mac2int(ns["mac"]))
neighdata[ns["mac"]].append(ns)
neighdata[ns["mac"]].append({
"t": {"$date": int(mysql.utcawareint(ns["time"]).timestamp()*1000)},
"q": ns["quality"]
})
#neighident = mysql.fetchall("""
# SELECT snb.mac, r.hostname, n.netif
@ -317,8 +335,13 @@ def router_info(dbid):
neighlabel[int2shortmac(ni["mac"])] = label + append
gwfetch = influ.fetchlist('SELECT quality, mac, time FROM router_gw.stat WHERE router = $router ORDER BY time ASC',{"router": dbid})
gwstats = []
for ns in gwfetch:
ns["time"] = mysql.utcawareint(ns["time"])
gwstats.append({
"t": mysql.utcawareint(ns["time"]),
"q": ns["quality"],
"m": ns["mac"]
})
if request.method == 'POST':
if request.form.get("act") == "delete":
@ -394,7 +417,7 @@ def router_info(dbid):
tileurls = tileurls,
neighstats = neighdata,
neighlabel = neighlabel,
gwstats = gwfetch,
gwstats = gwstats,
authuser = is_authorized(router["user"], session),
authadmin = session.get('admin')
)

View File

@ -152,6 +152,12 @@ def statbson_to_json(bsn):
point["time"] = {"$date": int(point["time"].timestamp()*1000)}
return json.dumps(bsn)
@filters.app_template_filter('shortbson2json')
def shortbson_to_json(bsn):
for point in bsn:
point["t"] = {"$date": int(point["t"].timestamp()*1000)}
return json.dumps(bsn)
@filters.app_template_filter('nbsp')
def nbsp(txt):
return txt.replace(" ", "&nbsp;")

View File

@ -74,7 +74,7 @@ function network_graph(netif_stats, field, tx_label, rx_label) {
try {
var tx_value = netif_stats[i].tx;
var rx_value = netif_stats[i].rx;
var date_value = netif_stats[i].time.$date;
var date_value = netif_stats[i].t.$date;
if(tx_value != null && rx_value != null) {
tx.push([date_value, tx_value * 8]);
rx.push([date_value, rx_value * 8]);
@ -114,8 +114,8 @@ function neighbour_graph(neigh_label) {
}
for (len=dataset.length, i=0; i<len; i++) {
try {
var quality = dataset[i].quality;
var date_value = dataset[i].time.$date;
var quality = dataset[i].q;
var date_value = dataset[i].t.$date;
if(quality == null) {
quality = 0;
}
@ -157,10 +157,10 @@ function gw_graph(gws) {
var data = [];
var len, i;
for (len=gw_stats.length, i=0; i<len; i++) {
if (gw_stats[i].mac != mac) { continue; }
if (gw_stats[i].m != mac) { continue; }
try {
var quality = gw_stats[i].quality;
var date_value = gw_stats[i].time.$date;
var quality = gw_stats[i].q;
var date_value = gw_stats[i].t.$date;
if(quality == null) {
quality = 0;
}
@ -188,10 +188,10 @@ function memory_graph() {
var len, i;
for (len=router_stats.length, i=0; i<len; i++) {
try {
var free_value = router_stats[i].sys_memfree*1024;
var caching_value = router_stats[i].sys_memcache*1024;
var buffering_value = router_stats[i].sys_membuff*1024;
var date_value = router_stats[i].time.$date;
var free_value = router_stats[i].mf*1024;
var caching_value = router_stats[i].mc*1024;
var buffering_value = router_stats[i].mb*1024;
var date_value = router_stats[i].t.$date;
if(free_value != null && caching_value != null && buffering_value != null) {
free.push([date_value, free_value]);
caching.push([date_value, caching_value]);
@ -223,9 +223,9 @@ function process_graph() {
var len, i;
for (len=router_stats.length, i=0; i<len; i++) {
try {
var runnable_value = router_stats[i].sys_procrun;
var total_value = router_stats[i].sys_proctot;
var date_value = router_stats[i].time.$date;
var runnable_value = router_stats[i].pr;
var total_value = router_stats[i].pt;
var date_value = router_stats[i].t.$date;
if(runnable_value != null && total_value != null) {
runnable.push([date_value, runnable_value]);
total.push([date_value, total_value]);
@ -255,11 +255,11 @@ function client_graph() {
var len, i;
for (len=router_stats.length, i=0; i<len; i++) {
try {
var client_value = router_stats[i].clients;
var client_eth = router_stats[i].clients_eth;
var client_w2 = router_stats[i].clients_w2;
var client_w5 = router_stats[i].clients_w5;
var date_value = router_stats[i].time.$date;
var client_value = router_stats[i].c;
var client_eth = router_stats[i].ce;
var client_w2 = router_stats[i].c2;
var client_w5 = router_stats[i].c5;
var date_value = router_stats[i].t.$date;
if(client_value != null) {
clients.push([date_value, client_value]);
}
@ -313,8 +313,8 @@ function loadavg_graph() {
var len, i;
for (len=router_stats.length, i=0; i<len; i++) {
try {
var load_value = router_stats[i].loadavg;
var date_value = router_stats[i].time.$date;
var load_value = router_stats[i].l;
var date_value = router_stats[i].t.$date;
if(load_value != null) {
loadavg.push([date_value, load_value]);
}
@ -343,9 +343,9 @@ function airtime_graph() {
var len, i;
for (len=router_stats.length, i=0; i<len; i++) {
try {
var air2_value = router_stats[i].airtime_w2;
var air5_value = router_stats[i].airtime_w5;
var date_value = router_stats[i].time.$date;
var air2_value = router_stats[i].a2;
var air5_value = router_stats[i].a5;
var date_value = router_stats[i].t.$date;
if(air2_value != null) {
airtime2.push([date_value, air2_value * 100]);
}

View File

@ -434,11 +434,11 @@
</div>
</div>
<script type="text/javascript">
var router_stats = {{ router.stats|statbson2json|safe }};
var router_stats = {{ router.stats|shortbson2json|safe }};
var netif_stats = null;
var neigh_stats = {{ neighstats|safe }};
var neigh_label = {{ neighlabel|bson2json|safe }};
var gw_stats = {{ gwstats|statbson2json|safe }};
var gw_stats = {{ gwstats|shortbson2json|safe }};
var neighbours = [
{%- for neighbour in router.neighbours %}
{"name": "{{ neighbour.hostname or neighbour.mac|int2mac }}", "mac": "{{ neighbour.mac }}", "netif": "{{ neighbour.netif }}"},