Support multiple IPs for agent to ping, use 0s instead of nulls for speedtest
Change-Id: I68290906d808f652b324bccc44f6935ea662b7e2
diff --git a/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py b/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py
index 9d808b5..472cca2 100755
--- a/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py
+++ b/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py
@@ -79,10 +79,10 @@
'speedtest': {
'ping': {
'dns': {
- 'min': None,
- 'avg': None,
- 'max': None,
- 'stddev': None
+ 'min': 0.0,
+ 'avg': 0.0,
+ 'max': 0.0,
+ 'stddev': 0.0
}
}
}
@@ -156,10 +156,10 @@
Input: IP to ping, # times to ping
Returns: dict of the min/avg/max/stddev numbers from the ping command result
'''
- result = {'min': None,
- 'avg': None,
- 'max': None,
- 'stddev': None}
+ result = {'min': 0.0,
+ 'avg': 0.0,
+ 'max': 0.0,
+ 'stddev': 0.0}
try:
commandResult, commandOutput = _run_adb_shell(adb, ADB_GET_COMMANDS['ping_dns_result'])
pingResult = commandOutput.split("/")
diff --git a/edge-monitoring/agent_modem/config.json b/edge-monitoring/agent_modem/config.json
index 00bb652..efd0139 100644
--- a/edge-monitoring/agent_modem/config.json
+++ b/edge-monitoring/agent_modem/config.json
@@ -5,7 +5,10 @@
"baud": 115200,
"ip_addr": "192.168.0.1"
},
- "ping_to": "1.1.1.1",
+ "ips": {
+ "user_plane_ping_test": "8.8.8.8",
+ "speedtest_ping_dns": "8.8.8.8"
+ },
"report_url": "https://monitoring.aetherproject.org/edges",
"report_interval": 180,
"log_file": "/var/log/edge_monitoring_agent.log"
diff --git a/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py b/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py
index 0744304..757d622 100755
--- a/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py
+++ b/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py
@@ -26,7 +26,7 @@
from collections import namedtuple
'''
-Simple script that checks Aether network operational status periodically
+"Simple" script that checks Aether network operational status periodically
by controlling the attached 4G/LTE modem with AT commands and
report the result to the central monitoring server.
'''
@@ -182,7 +182,7 @@
def get_user_plane_state(modem):
- resp = os.system("ping -c 3 " + CONF.ping_to + ">/dev/null 2>&1")
+ resp = os.system("ping -c 3 " + CONF.ips.user_plane_ping_test + ">/dev/null 2>&1")
return State.connected if resp is 0 else State.disconnected, None
@@ -192,10 +192,10 @@
Input: IP to ping, # times to ping
Returns: dict of the min/avg/max/stddev numbers from the ping command result
'''
- result = {'min': None,
- 'avg': None,
- 'max': None,
- 'stddev': None}
+ result = {'min': 0.0,
+ 'avg': 0.0,
+ 'max': 0.0,
+ 'stddev': 0.0}
try:
pingResult = subprocess.check_output(
"ping -c " + str(count) + " " + ip + \
@@ -217,7 +217,7 @@
2) # TODO: Performs ping to device on network.
'''
speedtest_ping = {}
- speedtest_ping['dns'] = run_ping_test("8.8.8.8", 10)
+ speedtest_ping['dns'] = run_ping_test(CONF.ips.speedtest_ping_dns, 10)
return speedtest_ping
@@ -247,11 +247,12 @@
logging.error("Failed to connect the modem for %s", e)
sys.exit(1)
- success = os.system("sudo ip route replace {}/32 via {}".format(
- CONF.ping_to, CONF.modem.ip_addr))
- if success is not 0:
- logging.error("Failed to add test routing.")
- sys.exit(1)
+ for ip in CONF.ips:
+ success = os.system("sudo ip route replace {}/32 via {}".format(
+ ip, CONF.modem.ip_addr))
+ if success is not 0:
+ logging.error("Failed to add test routing to " + ip)
+ sys.exit(1)
while True:
cp_state, cp_msg = get_control_plane_state(modem)
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index f7ec3db..20ddc94 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -44,10 +44,10 @@
'speedtest': {
'ping': {
'dns': {
- 'min': None,
- 'avg': None,
- 'max': None,
- 'stddev': None
+ 'min': 0.0,
+ 'avg': 0.0,
+ 'max': 0.0,
+ 'stddev': 0.0
}
}
},
@@ -141,10 +141,10 @@
if time_elapsed > NO_RESULT_THRESHOLD:
edge['status']['control_plane'] = "no result"
edge['status']['user_plane'] = "no result"
- edge['speedtest']['ping']['dns'] = {'min': None,
- 'avg': None,
- 'max': None,
- 'stddev': None}
+ edge['speedtest']['ping']['dns'] = {'min': 0.0,
+ 'avg': 0.0,
+ 'max': 0.0,
+ 'stddev': 0.0}
def remove_edge_from_metrics(name):
try:
@@ -178,14 +178,14 @@
connect_status = edge['status']['control_plane']
ping_status = edge['status']['user_plane']
- valid_speedtest_results = True
+ speedtest_results_exist = True
if edge['speedtest']['ping']['dns']['avg']:
ping_dns_min_result = edge['speedtest']['ping']['dns']['min']
ping_dns_avg_result = edge['speedtest']['ping']['dns']['avg']
ping_dns_max_result = edge['speedtest']['ping']['dns']['max']
ping_dns_stddev_result = edge['speedtest']['ping']['dns']['stddev']
else:
- valid_speedtest_results = False
+ speedtest_results_exist = False
cp_status.labels(edge['name']).set(status_codes[connect_status])
up_status.labels(edge['name']).set(status_codes[ping_status])
@@ -209,7 +209,7 @@
if connect_status == "connected" and ping_status == "connected":
e2e_tests_ok.labels(edge['name']).set(1)
- if valid_speedtest_results:
+ if speedtest_results_exist:
ping_dns_min.labels(edge['name']).set(ping_dns_min_result)
ping_dns_avg.labels(edge['name']).set(ping_dns_avg_result)
ping_dns_max.labels(edge['name']).set(ping_dns_max_result)
@@ -271,10 +271,10 @@
'speedtest': {
'ping': {
'dns': {
- 'min': None,
- 'avg': None,
- 'max': None,
- 'stddev': None
+ 'min': 0.0,
+ 'avg': 0.0,
+ 'max': 0.0,
+ 'stddev': 0.0
}
}
},