AETHER-1259 Add signal quality metrics to monitoring server
In addition to the signal quality update,
- Fix the license
- Add .gitignore
Change-Id: I73484aaf2a1047e66026743262ea713c2121c8d2
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 20ddc94..16bfe9e 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -2,17 +2,7 @@
# Copyright 2020-present Open Networking Foundation
#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
import os
import time
@@ -51,7 +41,11 @@
}
}
},
- 'last_update': time.time(),
+ 'signal_quality': {
+ 'rsrq': 0,
+ 'rsrp': 0
+ },
+ 'last_update': time.time()
}
]
@@ -84,6 +78,12 @@
ping_dns_max = prom.Gauge("aetheredge_ping_dns_test_max","Last ping test maximum value",["name"])
ping_dns_stddev = prom.Gauge("aetheredge_ping_dns_test_stddev","Last ping test standard deviation",["name"])
+# Signal quality metrics in CESQ format not dB
+# RSRQ: >=53 excellent, 43 ~ 53 good, 33 ~ 43 mid, <=33 bad, 0 no signal
+# RSRP: >=20 excellent, 10 ~ 20 good, 0 ~ 10 mid, 0 no signal
+signal_quality_rsrq = prom.Gauge("aetheredge_signal_quality_rsrq", "Quality of the received signal", ["name"])
+signal_quality_rsrp = prom.Gauge("aetheredge_signal_quality_rsrp", "Power of the received signal", ["name"])
+
# Other metrics
last_update = prom.Gauge("aetheredge_last_update", "Last reported test result", ["name"])
maint_window = prom.Gauge("aetheredge_in_maintenance_window", "Currently in a maintenance window", ["name"])
@@ -145,15 +145,12 @@
'avg': 0.0,
'max': 0.0,
'stddev': 0.0}
+ edge.pop('signal_quality', None)
def remove_edge_from_metrics(name):
try:
cp_status.remove(name)
up_status.remove(name)
- ping_dns_min.remove(name)
- ping_dns_avg.remove(name)
- ping_dns_max.remove(name)
- ping_dns_stddev.remove(name)
last_update.remove(name)
e2e_tests_ok.remove(name)
connect_test_ok.remove(name)
@@ -163,6 +160,20 @@
pass
try:
+ ping_dns_min.remove(name)
+ ping_dns_avg.remove(name)
+ ping_dns_max.remove(name)
+ ping_dns_stddev.remove(name)
+ except:
+ pass
+
+ try:
+ signal_quality_rsrq.remove(name)
+ signal_quality_rsrp.remove(name)
+ except:
+ pass
+
+ try:
maint_window.remove(name)
except:
pass
@@ -215,6 +226,9 @@
ping_dns_max.labels(edge['name']).set(ping_dns_max_result)
ping_dns_stddev.labels(edge['name']).set(ping_dns_stddev_result)
+ if 'signal_quality' in edge.keys():
+ signal_quality_rsrq.labels(edge['name']).set(edge['signal_quality']['rsrq'])
+ signal_quality_rsrp.labels(edge['name']).set(edge['signal_quality']['rsrp'])
res.append(prom.generate_latest(cp_status))
res.append(prom.generate_latest(up_status))
@@ -228,6 +242,8 @@
res.append(prom.generate_latest(ping_test_ok))
res.append(prom.generate_latest(e2e_tests_ok))
res.append(prom.generate_latest(e2e_tests_down))
+ res.append(prom.generate_latest(signal_quality_rsrq))
+ res.append(prom.generate_latest(signal_quality_rsrp))
return Response(res, mimetype="text/plain")
@@ -286,6 +302,8 @@
'ping': request.json['speedtest']['ping']
}
+ if 'signal_quality' in request.json:
+ req_edge['signal_quality'] = request.json['signal_quality']
edge = [edge for edge in edges if edge['name'] == req_edge['name']]
if len(edge) == 0:
@@ -295,6 +313,8 @@
edge[0]['status']['control_plane'] = req_edge['status']['control_plane']
edge[0]['status']['user_plane'] = req_edge['status']['user_plane']
edge[0]['speedtest']['ping'] = req_edge['speedtest']['ping']
+ if 'signal_quality' in req_edge.keys():
+ edge[0]['signal_quality'] = req_edge['signal_quality']
edge[0]['last_update'] = req_edge['last_update']
return jsonify({'edge': req_edge}), 201